[HN Gopher] Howm: Personal Wiki for Emacs
       ___________________________________________________________________
        
       Howm: Personal Wiki for Emacs
        
       Author : setopt
       Score  : 155 points
       Date   : 2024-09-03 19:11 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | setopt wrote:
       | I recently discovered "Howm" [1] (the "Handy Own Wiki Mode"),
       | which is a personal wiki system for Emacs. Surprisingly, it is
       | slightly _older_ than Org-mode - although it now works great with
       | Org files - and is still actively maintained by the author.
       | 
       | After giving it a try, I now feel that I prefer it's simplicity
       | over newer systems like Org Roam and Denote, while having some
       | similarities to e.g. Deft (like fulltext as-you-type search).
       | 
       | It also offers some unique features of its own, like "comefrom
       | links" as opposed to conventional "goto links", and that most
       | Howm links are actually just syntactic sugar for searches.
       | 
       | The submitted link [2] is to a third-party documentation of the
       | project, which I found more useful than the official
       | documentation to get started :)
       | 
       | [1]: https://kaorahi.github.io/howm/
       | 
       | [2]: https://github.com/Emacs101/howm-manual
        
         | smartmic wrote:
         | I switched to Howm about a year ago (after trying and actively
         | using dozens of other PKM systems), and it's by far the best
         | I've come across.
         | 
         | The whole design is well thought out, consistent and not
         | created with the aim of marketing, but because it has served
         | the creator well with his way of working (and surprisingly the
         | philosophy applies to many of us). Japanese "engineering" at
         | its best, so to speak.
         | 
         | As Howm has become such an important part of my everyday
         | digital life, I will certainly write my own blog article about
         | it one day. Until then, I can recommend the blog entry by Leah
         | Neukirchen in addition to the manual linked here:
         | https://leahneukirchen.org/blog/archive/2022/03/note-taking-...
        
           | gwern wrote:
           | The Neukirchen link would be a much better HN submission than
           | OP.
        
           | setopt wrote:
           | > because it has served the creator well with his way of
           | working (and surprisingly the philosophy applies to many of
           | us). Japanese "engineering" at its best, so to speak.
           | 
           | Indeed. I read that the Howm author, Prof. Kazuyuki Hiraoka,
           | disliked the tediousness of manually organizing notes
           | (folders, tags, etc.), and wanted to make a somewhat "self-
           | organizing" system where we can work lazily yet remain
           | organized. He called it lazy, I call it efficient :)
           | 
           | > As Howm has become such an important part of my everyday
           | digital life, I will certainly write my own blog article
           | about it one day.
           | 
           | I would love to read more about other people's Howm
           | workflows. Currently, there's still very few sources about
           | this in English.
        
         | o11c wrote:
         | > links are actually just syntactic sugar for searches.
         | 
         | I don't emacs, but the usual problem with that is that searches
         | are very fragile and hard to analyze. How does this deal with
         | searches that, over time, can change to return 0 or 2+ results?
        
           | setopt wrote:
           | Howm has a simple solution for this: Links like ">>> this
           | thing" searches for "this thing" and opens a search buffer.
           | The top hit is already marked, shown in a preview window
           | below, and can be opened by clicking enter. But if you want a
           | different result, you just navigate that search buffer to
           | find the hit you want.
           | 
           | The search triggered by a link is sorted such that it shows
           | first "comefrom links" (if any file has said explicitly said
           | that "these keywords should lead here"), then headline
           | results (files where your phrase is in the note title), then
           | siblings (other notes that link to the same keywords), then
           | fulltext search matches (any file that just contains those
           | words). So if you have 0 results with those keywords in the
           | title after renaming a note, you might still find the note
           | again via full-text search hits below. If you have 2+
           | results, just navigate between them with the arrow keys while
           | previewing their contents, and open the one you want.
           | 
           | This design is intentional: The author advocates to "write
           | fragmentarily, read collectively"; so instead of refinding an
           | old note and adding to it, you can make a new note with a
           | similar title where you capture new info, and then links will
           | point to both notes from now on. (In most cases, if their
           | titles are similar, the contents are likely relevant in the
           | same situations as well.)
           | 
           | With that said, Howm supports exact links as well: You can
           | link to a file path instead of a title. Since Howm defaults
           | to putting just the creation datetime in the note filename,
           | the filename is by default like an immutable-ish UUID, and
           | such links should remain exact as long as you don't manually
           | move or remove a file. By default, Howm creates such links in
           | one context: If you create a note (C-c , c) while inside
           | another note, it saves an exact back link to where you came
           | from so you can remember your "inspiration". But you are of
           | course free to use such links everywhere instead of the
           | "fuzzy links" above if you prefer.
        
         | lycopodiopsida wrote:
         | I've skimmed through the manual - it seems to be quite more
         | complex than Denote. Denote is very simple, I've had basically
         | to configure my own fuzzy search with consult-notes-search to
         | make it work. Howm has all that out of the box. The appeal is
         | lack of configuration, I guess, but I can already see that
         | there are things I would never touch - a skinny org-agenda
         | replacement is not very appealing these days. I guess it really
         | predates the existence of org.
        
           | setopt wrote:
           | I feel that it's a different type of simplicity: Denote is
           | simple and well-designed, but I personally found it a hassle
           | to actually organize things in it. For instance, to actually
           | find again my content when I need it, I find that it's
           | important to design a good set of tags and actively apply
           | them. Howm is more designed around making it as hassle-free
           | as possible to input notes, and then let the notes surface in
           | a "self-organizing" way. For instance, it's easy to discover
           | "sibling notes" that link to the same thing as this one (just
           | click any link in the current note and all siblings pop up in
           | a search buffer, below the note that you're actually linking
           | to).
           | 
           | Or you can use "comefrom links", where you in some other file
           | type "<<< foo bar", and every time you mention "foo bar" in
           | another note it becomes a magic link back to this spot. That
           | serves kinda the same need as tags, but you don't have to
           | explicitly tag future notes or think about a system of tags,
           | you just wrote normally and automatically get relevant links
           | when you use consistent language. As a user, I feel this is
           | much simpler to use, even though you're right that Denote
           | itself is implemented in a simple way.
           | 
           | Regarding the GTD system, I've also just ignored it ;). If I
           | want a digital GTD I have had a great experience using Org,
           | but these days I prefer a physical bullet journal as it seems
           | to help me ignore unimportant tasks (I've always struggled
           | with deleting unimportant tasks - not for technical reasons
           | but for irrational reasons). And since it's always in front
           | of me on the desk, it's harder to ignore than the agenda
           | buffer.
        
             | lycopodiopsida wrote:
             | You are absolutely right - I thought about adding that
             | Denote is a true successor to Notational Velocity[1], not
             | to Zettelkasten systems like org-roam, Logseq and Obsidian.
             | For me personally notes are "cold" storage - I sometimes
             | link to them in Org tasks but mostly I interact with them
             | by using consult-ripgrep.
             | 
             | 1: https://notational.net/
        
         | setopt wrote:
         | In case this is useful to others, this is the config I myself
         | use to couple Howm to Org-mode:                   (use-package
         | howm           :after org           :init           ;; Org-
         | compatible filenames and syntax.           (setq howm-file-
         | name-format "%Y-%m-%d-%H%M%S.org")           (setq howm-view-
         | title-header "*")           (setq howm-dtime-format (format
         | "<%s>" (cdr org-timestamp-formats)))           ;; Use ripgrep
         | for fast searching.           (setq howm-view-use-grep t)
         | (setq howm-view-grep-command "rg")           (setq howm-view-
         | grep-option "-nH --no-heading --color never")           (setq
         | howm-view-grep-extended-option nil)           (setq howm-view-
         | grep-fixed-option "-F")           (setq howm-view-grep-expr-
         | option nil)           (setq howm-view-grep-file-stdin-option
         | nil)           ;; Make the "comefrom links" case-insensitive.
         | (setq howm-keyword-case-fold-search t)           ;; Get rid of
         | the old-fashioned separators.           (setq howm-view-
         | summary-sep "\t")           :bind           ;; Keybindings to
         | list or create notes.           ("<f12>" . howm-list-all)
         | ("<C-f12>" . howm-create)           :config           ;; Where
         | to store data.           (setq howm-directory
         | "~/Documents/wiki")           (setq howm-home-directory howm-
         | directory)))
         | 
         | The way I use it is that Ctrl+F12 captures a new note. Once you
         | have a few notes, press F12 to browse them - in that mode, you
         | can press n/p/RET to preview and open notes, s to search
         | through headings, g to (rip)grep through the full text of
         | notes, S to sort the hits, or c to create another new note from
         | that mode. (I largely ignore Howm's default "menu buffer" in
         | favor of the "list all" buffer.)
         | 
         | Note that you can make the titles and dates even more Org-
         | compatible:                     (setq howm-view-title-header
         | "#+title: ")           (setq howm-dtime-format (format "#+date:
         | <%s>" (cdr org-timestamp-formats)))
         | 
         | After trying both, I prefer the system above, since Howm
         | supports multiple titles in a single file which maps better to
         | Org headings. Plus, this makes the F12 menu quite a bit
         | cleaner... (You can still manually add titles and dates in the
         | Org format before exporting the note, Howm doesn't mind that.)
        
       | k_bx wrote:
       | The best similar thing for Emacs I've ever used was Deft inside
       | my Dropbox (or whatever is your server of choice). Simple,
       | Markdown, has link navigation.
        
         | natrys wrote:
         | Similar feeling here. I found that simple full-text search goes
         | a long way to scale without needing to impose structures (and
         | things like backlinks). It will probably not be enough for
         | prolific note takers but I think it's enough for people with
         | say <1000 files.
         | 
         | (although I use Xeft[1] which is spiritually the same but I
         | find the UI cleaner and snappier because it uses Xapian rather
         | than elisp for full-text search).
         | 
         | [1] https://github.com/casouri/xeft
        
           | setopt wrote:
           | I actually switched from Deft -> Xeft -> Howm as my main UI
           | for searching and creating notes :).
           | 
           | Xeft is indeed great, and I still keep it around for more
           | involved searches (like "+key1 -key2" and "key1 NEAR key2").
           | But most of my searches now go through Howm, which supports
           | fulltext as-you-type searching (can be invoked by pressing
           | "g" for "grep" from its note list), and it can shell out to
           | Ripgrep to speed it up.
        
       | shrubble wrote:
       | I use this and it is fantastic for my use case as well; I use
       | Syncthing to sync it (just a directory with other directories and
       | files) across multiple systems so I always have the latest
       | notes/todos wherever I am.
        
       | dustfinger wrote:
       | How does Howm compare to org brain? especially in terms of
       | scalability.
        
         | setopt wrote:
         | I haven't really stress-tested it, but I would imagine that it
         | scales well since (I) it can be configured to use Ripgrep to
         | resolve searches and "goto links", and (II) the "comefrom
         | links" are cached on save. I haven't used org-brain though, so
         | it's hard to compare :)
        
       | ta988 wrote:
       | One thing I learned about PKMs is that it is not how many feature
       | it has that dictates its usefulness, it is about how many
       | features you are not encumbered by. Simplify so it doesn't get in
       | your way. If your organization is too rigid (decimal system,
       | complex organization) it will add a tax everytime you want to do
       | something, and you will end up just maintaining the system not
       | its content. Most of those pseudo experts that sell books,
       | trainings, videos and what not are just luring you with a complex
       | system and selling you extras because you just "don't get it yet"
       | or just feed your FOMO with useless perks.
       | 
       | Simplify!
        
         | teddyh wrote:
         | _Avoid the temptation to add new fields to the bug database.
         | Every month or so, somebody will come up with a great idea for
         | a new field to put in the database. You get all kinds of clever
         | ideas, for example, keeping track of the file where the bug was
         | found; keeping track of what % of the time the bug is
         | reproducible; keeping track of how many times the bug occurred;
         | keeping track of which exact versions of which DLLs were
         | installed on the machine where the bug happened. It's very
         | important_ not _to give in to these ideas. If you do, your new
         | bug entry screen will end up with a thousand fields that you
         | need to supply, and nobody will want to input bug reports any
         | more. For the bug database to work, everybody needs to use it,
         | and if entering bugs "formally" is too much work, people will
         | go_ around _the bug database._
         | 
         | -- Joel Spolsky, _Painless Bug Tracking_ , 2000:
         | <https://www.joelonsoftware.com/2000/11/08/painless-bug-
         | track...>
        
         | setopt wrote:
         | That is indeed the principle around which Howm is designed. To
         | quote its author:
         | 
         | > If you don't organize notes, it's wearisome to read them.
         | 
         | > If you try to organize notes, it's wearisome to write them.
         | 
         | > The need of trade-off is worrisome. "Wearisome" is an
         | important keyword. There is a big difference between "I can do
         | it" and "I can do it easily."
         | 
         | > The point of compromise may vary from person to person, but I
         | prioritize the ease of writing. I have designed a memo tool to
         | create an environment where one can freely jot down notes
         | without feeling pressure to "organize" them and still maintain
         | coherence.
        
       | fhd2 wrote:
       | Dang, I thought this could cover my use case. At my (small but
       | slowly growing) company, we use a git repository with a bunch of
       | org files as our wiki. It works OK, but I can't see that grow
       | very much. Also not particularly excited about moving to another
       | tool though, org-mode is neat.
       | 
       | If anyone figured out a better way to collaborate on a bunch of
       | org files in a team, I'd love to hear about it!
        
         | SoftTalker wrote:
         | Git (or a verson control system) actually sounds pretty ideal.
         | That is their main use case: collaborating on a bunch of files
         | in a team.
         | 
         | What about it isn't working? Git scales to huge numbers of
         | contributors easily.
        
           | fhd2 wrote:
           | Well, for one, it's a bit of a hassle. Constantly thinking of
           | commit messages and stuff, but maybe I'm overly dramatic
           | there. On top of that, it would be nice to at least navigate
           | the contents read-only without Emacs. We use GitLab, it does
           | render org files, but not even links to other files work.
        
             | setopt wrote:
             | For read-only access, I've heard that Hugo can be used with
             | Org. It's perhaps more used for blogs than wikis, but it
             | should give you a clean and lightweight website of linked
             | HTML files generated from the Org files, which might be
             | sufficient.
             | 
             | Presumably, this can be integrated with Gitlab CI to
             | regenerate the website on push.
             | 
             | I guess one question though is how this will scale as the
             | company grows, assuming that more non-Emacs users might
             | join the team after a while?
        
               | fhd2 wrote:
               | Yeah exactly, it's a bit like chasing a local maximum.
               | The sibling suggestion, gollum, looks very promising for
               | this, a git backed web based wiki with org support.
        
         | paulv wrote:
         | I think the web interface for the gollum wiki (which used to
         | power GitHub wikis, but I think they have diverged) supports
         | org mode files.
         | 
         | https://github.com/gollum/gollum
        
           | fhd2 wrote:
           | That looks pretty spot on, thank you!
        
       | typester wrote:
       | Wow, it's been a while since I've seen the word "howm" -- brings
       | back memories! I used to use howm all the time before switching
       | over to org-mode, which was over 10 years ago. For a while after
       | moving to org, I was still managing my org files with howm.
       | 
       | Back then, howm wasn't really being maintained, and it was a bit
       | of a hassle because it sometime broke when I updated Emacs. So,
       | I'm surprised and happy to see it's being maintained again these
       | days!
        
       | _huayra_ wrote:
       | Does anyone have a "lab notebook" style of PKM in Emacs?
       | 
       | I used to use Org-Roam in Emacs, but fell in love with Logseq
       | [0], primarily because
       | 
       | 1. it has a "daily journal" default workflow (though individual
       | pages are supported)
       | 
       | 2. the support of datalog queries
       | 
       | 3. templates
       | 
       | This basically allows me to make templates for things I need
       | (e.g. meeting notes, etc) and to write a few key queries (that
       | are also templated for reuse) to do things like get the most
       | overdue tasks, upcoming, things I promised to others, things I'm
       | waiting on, etc. I can even drill down and get that stuff for an
       | individual "page", e.g. "Emacs" or "C++".
       | 
       | The lack of a "lab journal" format + flexible queries makes going
       | back to other solutions not as enticing, as the "perfect
       | artifact" of wiki-esque editing (and not being able to easily see
       | backlinks) is not as easy. I can open my Logseq folder, make a
       | "meeting" template, then #tag the people and topics discussed,
       | and be able to go back later and make a query to see when I
       | discussed #topic with #person.
       | 
       | I would love to move this back into Emacs, as I hate having a
       | separate tool for PKM, so if anyone has a similar workflow (or at
       | least flexible queries on "tags" and task status, backlinks, etc,
       | even without the daily journal thing), I'd be grateful for any
       | tips.
       | 
       | [0] https://logseq.com/
        
         | evertedsphere wrote:
         | org-roam has a daily journal feature, which i use extensively:
         | https://www.orgroam.com/manual.html#org_002droam_002ddailies
         | 
         | for querying: https://github.com/alphapapa/org-ql
         | 
         | for templates, see org-roam-capture and its templating system
         | (https://www.orgroam.com/manual.html#The-Templating-System),
         | which extends the capture templating system of vanilla org. for
         | nicer capture templates, see https://github.com/progfolio/doct
        
         | setopt wrote:
         | I also used Logseq for a couple of years during my PostDoc and
         | it is an excellent product. I also got into the habit of
         | writing everything in the daily journal (with things like
         | [[emacs]] in each top-level bullet so that I could read it
         | under the Emacs page). I tried replicating this workflow in
         | other system, including Obsidian and Org Roam and Denote which
         | all support back links and journals - it works but it wasn't as
         | smooth as Logseq's transclusion.
         | 
         | Currently, I'm using Howm, and am quite happy with that. Its
         | motto is "write fragmentarily and read collectively", which
         | summarizes well what I liked about Logseq.
         | 
         | It's however a slightly different workflow: I launch "howm-
         | list-all" (I bind it to F12) to see a list of all notes, which
         | I use similarly to Logseq's journal. To read recent entries,
         | use arrow keys or n/p to move between recent notes (which I use
         | like top-level bullets in the Logseq journal), which are
         | instantly previewed in a pane below. Or press "c" (create) to
         | create a new note, which is automatically date stamped.
         | Whenever I in Logseq would create a new top-level journal
         | bullet, I in Howm create a new datestamped Org file. For sub-
         | bullets I use Org outlining. But it largely has the same feel
         | to me as Logseq's journal system although it maps to different
         | files on disk.
         | 
         | Instead of Logseq hashtags, I use Howm's comefrom links. So say
         | I am working on a project called "Foo Bar". In Logseq, I'd type
         | [[Foo Bar]] in my journal every time I think about that
         | project. In Howm, I'd make a new note that contains a Howm link
         | of the form "<<< Foo Bar". Now, whenever I write the exact
         | phrase "Foo Bar" (without any link syntax!) in another note, it
         | _automatically_ becomes a clickable link pointing to my Foo Bar
         | page! I find this more efficient actually than Logseq's
         | approach since "typing the backlink instead of the link" feels
         | like less cognitive overhead and less work. (Logseq has
         | "unlinked mentions" but it somehow felt less reliable.)
         | 
         | Note that Howm supports any text format (it's a minor mode),
         | and thus doesn't mind if you import your existing Logseq
         | Markdown files but write new content in Org-mode, for example.
         | It also supports searching multiple folders, so that you can
         | link from new Howm notes to old Logseq notes without
         | "importing" them.
         | 
         | I hope this helps, and would encourage you to give Howm a try.
         | It doesn't help with templates and queries, but as the sibling
         | post touched upon you could try using org-capture for templates
         | and either org-ql or org-super-agenda for queries. Howm and Org
         | work well together, so there's no reason you can't use
         | different packages to replace different parts of Logseq in
         | Emacs. (Logseq itself is a great product, but I prefer Org-mode
         | for the keybindings and export.)
        
       | wiz21c wrote:
       | Dear Lazyweb, what I miss the most is the ability to drag/drop
       | pictures into my notes. Is that possible ?
        
         | setopt wrote:
         | Yes. If you use Org-mode or Markdown-mode in GUI Emacs, I
         | believe this works by default in the development version (since
         | "yank-media" was introduced). If you use other versions of
         | Emacs, or just want more control over where the files go and
         | how they are linked, you can use this package:
         | https://github.com/abo-abo/org-download
         | 
         | I don't think the TUI supports drag-and-drop, but you can still
         | copy-and-paste using org-download (bound to a separate
         | keybinding). Unfortunately, last I checked the built-in yank-
         | media function doesn't work in the TUI, although I don't see a
         | technical reason why it couldn't be implemented.
        
       | CurrentB wrote:
       | I know this probably isn't the best place for a bug report/help
       | request, but this seems cool, and the alternative to asking here,
       | now, realistically is that I just forget about this
       | 
       | I'm trying howm on emacs 29.4
       | 
       | I try (with my config and also with emacs -Q)
       | (use-package howm)
       | 
       | I enter `C-c , ,` I see the howm-memu pop up, but it's all
       | plaintext with no font highlighting/decoration/"links" or
       | anything, and I get in the _Messages_ log:                 font-
       | lock-fontify-keywords-region: Symbol's function definition is
       | void: nil       Error during redisplay: (jit-lock-function 5328)
       | signaled (void-function nil)
       | 
       | Is this familiar to anyone?
        
         | skulk wrote:
         | This happened for me too. I don't know why but after I tried it
         | a few times it started working.
        
         | setopt wrote:
         | Strange. I'm using it on Emacs 30.0.90 (nightly builds), and
         | haven't had that issue.
         | 
         | Personally I don't use its main menu though (which C-c , ,
         | runs), but rather "M-x howm-create" to capture new notes and
         | then afterwards "M-x howm-list-all" as a keyboard-driven
         | interface to read/browse/search existing notes.
         | 
         | Perhaps those commands work even if that menu doesn't?
        
       | evanjrowley wrote:
       | Recently I've become interesting in Texinfo, _the official
       | documentation format of the GNU project_ [0].
       | 
       | Is Howm meant to be used alongside or as an alternative to
       | Texinfo?
       | 
       | [0] https://www.gnu.org/software/texinfo/
        
         | setopt wrote:
         | Howm is a minor mode, and can be used with any text format that
         | Emacs supports.
         | 
         | Whether it's _useful_ to combine them is another question, I
         | guess it depends on whether you use TeXinfo for notes or
         | documents?
         | 
         | I thought TeXinfo is mostly used for documentation, in which
         | case I'd find it more natural to bundle it with the software
         | project it documents.
        
       | nyc111 wrote:
       | Thanks for posting this. I downloaded and was playing with it.
       | But I'm puzzled about new note creation. When I type in the title
       | next to the equal sign, I need to move the cursor below the date
       | line to compose the note. Shouldn't the date line be on top?
        
         | setopt wrote:
         | What I personally do is to first type the title, then press
         | either M-> or END to jump to the end of the buffer, and then
         | just keep typing from there.
         | 
         | You can however place the date above the title if you want:
         | (setq howm-view-title-header "*")         (setq howm-template
         | "%date %file\n* %title%cursor")
         | 
         | By adjusting the new file template, you can type the title and
         | then just press enter and keep typing the content from there.
         | Howm still understands where the title of the note is, since it
         | looks for the first title header.
         | 
         | (If you like the default equal signs, you can skip the first
         | setq above and replace "*" with "=" in the template.)
        
           | nyc111 wrote:
           | Thanks, this was helpful.
        
       | flakiness wrote:
       | I used this like 20 years ago. Kind of shocked, but glad that it
       | is still a thing. I was looking for something similar in VS code
       | but none has been satisfying.
        
       ___________________________________________________________________
       (page generated 2024-09-04 23:01 UTC)