TL;DR I was wrong about org-mode. I know, this is a bit click-bait, but really, I made wrong assumptions and I think I need to explain my thoughts now.

Note taking, task management, journaling… how?

As an experienced Software Engineer, I know that I need to multi-task and work on many different projects in parallel, with different chronicity. Some new tasks can be done only a couple of minutes after discovering / creating them, and some others will span on days, weeks if not months. That leads to having many parallel things on-going, and since I want to do my job as correctly as possible… I take notes. I take notes about pretty much everything, and I’ve been using note-taking apps more and more.

Years ago, as I discovered Doom Emacs, I also discovered org-mode. I was blown away by the features brought by Doom Emacs, and a bit puzzled with other things. For instance, the agenda (I rarely care about ETA for my personal notes; that’s something that is tracked at the company-wide level, for instance in the infamous Jira or whatever you’re using for project management in your team — and I just don’t care on my spare-time). Also, I was a bit doubtful about having notes laid as plain text (yes, org-mode formatted, but still text). What it means is that, there is no database nor state. Everytime you want to get a list of your TODO, org-mode has to go through all your .org files and generates the list for you. Back then, I found that a bit weird, but today, I have changed my mind.

Zettelkasten and other tools

The way I take notes, whatever I do, is to minimize the note files I create. For instance, at work, I have many notes about commands to run with a specific product. Instead of having a note That product, I tend to create smaller notes, more scoped, like That product - deploy, That product - how to configure, etc. That allows two important things:

Yes, fuzzy searching. Whatever the tool I use, I often need to search for notes, and either I search by note names, or by content.

A couple of months ago, I wrote mind, a rewrite of mind.nvim. I designed that system to be a tree editor, in which nodes are either “document node” containing some metadata and a path to a file, or a “link node”, with metadata and URL. Those tools were very useful to me, and I’ve been using them for a long time.

However, as I moved more and more into the UNIX world with kakoune and kak-tree-sitter, I realized that I should maybe revisit the way I think about notes. For instance, what I often need is to list the on-going tasks I’m doing, and updating them. Oftentimes (if not all the time), tasks emerged from a context, like a discussion with a colleague, some notes / brainstorming with myself I’m doing / a meeting / etc. And mind, Notion — or whatever that is using an external state — are not very suited. The problem relies in interruption. You’re in the editor of your choice, and then you have to switch to another window, look for the task / notes, use some keybindings to change the task to switch it from TODO to WIP or WIP to DONE or WONTDO or whatever.

As I was working more and more with mind, I realized this kind of workflow was starting to annoy me.

Composing

You start to see the pattern with my blog posts: I enjoy the UNIX world a lot. And even though mind is perfectly fine regarding that (I was even able to capture notes by using tmux’’s display-popup with mind), I wanted to switch to something… easier, yet still UNIX.

Then I started to think again about org-mode. See, org-mode is eventually just a format specification. The Emacs mode is the reference implementation, with major modes, keybindings etc. but if Emacs can edit and do stuff to .org files, then the concept is transposable to other tools. The question is: what is the core of org-mode? The idea behind org-mode is that there is no state: the notes themselves are the state. There is no need for an external tool. Any tool can open an .org file and edit it. Yes, convenience is better to navigate .org notes, but that’s just a matter of tooling. If you want to open and edit an .org file using your favorite editor, you should be able to.

Then, for the rest, org-mode has a couple of interesting and useful concepts:

All of that is really exciting, because it makes note taking easy and seamless; it doesn’t require any state, and you can pick the tools you want to implement the workflow.

It’s not a tool; it’s a workflow

Yes, that’s what I think is the most important thing here. I do not want to use org-mode for now. I like Markdown. Even though I agree .org files are more powerful, Markdown, at least for now, is more than enough to me. However, I wanted to augment it to do things slightly similar to org-mode.

And so I did it. I created in my kakoune a couple of commands to:

I plan on releasing the .kak file containing all of that if people are interested.

The great thing is that most of the features, like fuzzy searching, are implemented via external tools. I use fd and rg fuzzy search todo items. There is nothing to do in kakoune besides gluing everything together.

This setup has been my daily driver for months now and I really enjoy it. Being able to take notes and just slide in a - TODO I need to check that right in the middle of the file and having it appear in a listing later is a really powerful aspect of this workflow… and org-mode was doing that all along ever since. Eh, it almost makes me nostalgic of my time using the Emacs plugin!

I hope that gave me some (not so fresh) hindsight about note taking and task management (and journaling!). Have fun hacking around!


↑ Reflections about note-taking
note-taking, org-mode, zettelkasten
Thu Oct 12 20:35:00 2023 UTC