Will's avatar

⬅️ See more posts

My Knowledge Base With "nb"

22 September 2024 (5 minute read)

🔮 This post is also available via Gemini.

technology selfhost

Whilst browsing my GitHub home feed a little while back (not something I’m in a habit of doing, generally), I stumbled upon the command line journaling tool jrnl. I thought it looked interesting, and so subsequently posted about it and had a good discussion on this and alternatives over on Mastodon. jrnl also gave Kev Quirk the idea to create his own journaling tool.

During the conversation, Tucker McKnight mentioned that he uses a tool called nb for journaling and note taking. It wasn’t something I’d heard of before, and so I was intrigued.

Cut to the present day, and I can safely say that this program has become a game-changer for me. nb has very quickly formed a key part of my daily workflow, and not just for journaling. I now use it for all knowledge-gathering, meeting notes and preparation work. Its simplicity and quality-of-life utilities, such as searching and tagging, make it quick and weirdly fun to use.

Until this point I had been using a wide range of software and – more recently – Logseq and Obsidian for these purposes. Many of these apps have much the same functionality as nb, but nb’s approach entirely resonates with me and my workflows, in which I spend a lot of time in the terminal and don’t want to wait around for UIs or websites to load if I need to log something quickly.

In nb, everything is – in my use-case – simply a markdown file (though it also supports Org, LaTeX, and other formats if preferred). This includes longform notes, “bookmarks”, and todos. I won’t go into the details on the commands themselves, as the docs do that much better than I could, but I quickly found myself navigating around notebooks, creating, listing, and searching notes, and managing todos and tasks for both my personal and work life.

(I’ve added a few simple usage examples to my nb note).

Editing documents can be done with whichever text editor you prefer. It respects your EDITOR environment variable or can be configured to use a specific editor with nb set editor.

One workflow I particularly like is note-taking during meetings – I can very easily build a notes document with links to other documents (using the [[ ]] linking syntax) and log action points as reminders (using the standard “checkbox” syntax - [ ] Action item). It’s then super quick to enumerate all these open tasks later on with a simple nb t o (short for nb tasks open) for when I get around to working on my actions. Even once complete, the tasks remain in their documents, so they keep their context for when I need to refer back to them. These quick commands, especially when combined with filtering against tags, allow for great control in structuring task reports and knowledge retrieval later on.

Of course, LogSeq, Obsidian, and others can also provide similar flows (especially with the use of plugins), but nb just feels cleaner and faster. With in-built git support, encryption, and handling of different file types (including images), its flexibility allows for a wide range of use-cases.

Migrating to nb

Since the data store for both Obsidian and nb is essentially just a collection of markdown files, moving my existing notes over was as easy as copying the Obsidian vault into my nb directory. The top-level directory represents the different notebooks, and each of these can contain their own sub-directories. As such I was easily able to maintain structure across all my notes.

I went through and manually updated some of my notes to add the tags and other metadata I intended to begin using more with nb.

Sync and backup

My nb directory is placed within another directory that I sync via Syncthing. The nb document location can be controlled via the ~/.nbrc file. As such, everytime a note is saved, it is automatically synced to servers running in my home network (via Tailscale of course). nb auto git-commits each change too, and so there’s built-in version control there.

I then use Restic to periodically backup the notes to an offsite store.

Editing on-the-go

I use the Termius app on my iPhone to SSH into my home servers. I’ve installed nb on these too, meaning I can access and edit notes from anywhere, and also add new todos.

I’m looking forward to when Termius’ Snippets feature on iOS gets “variables” support (like it does on Android) as it seems like this, combined with an iOS shortcut and nb on the remote host, could be a great way to quickly log notes or todos on-the-go.

Conclusion

There are a couple of areas I’d love to see developed with nb (particularly, for me, improved control over task “urgency” or “recurrence” – though of course I do understand its primary aim is not to be a task manager), but overall I’m very happy with the tool and it’s become a key part of my daily life and workflow. I’d like to thank Tucker for introducing me to this excellent tool and I look forward to continue to get more out of it as my knowledge base grows.

✉️ You can reply to this post via email.

📲 Subscribe to updates

If you would like to read more posts like this, then you can subscribe via RSS.