Look Ma, I'm org'nized!

Thanks to the Emacs ecosystem, I have finally found the answer to the ultimate question of how to manage my personal notes, todos, and everything.

1. Getting Org’nized

GTD. I kept seeing these three letters everywhere while learning about Org mode. GTD is a book titled “Getting Things Done: The Art of Stress-Free Productivity”.

I don’t normally pay attention to books promising productivity/self-help, but this one seemed to be quite popular among Org mode users. So I’ve decided to find out more about it.

Luckily, there are some good summaries of it online and people also share their Emacs implementations of GTD workflows so I didn’t have to commit to reading the whole book (at least not yet).

I think these are great overviews:

Some of the GTD rules and workflows seem only common sense. But the effectivity comes from their combination. For example it’s normal to have a pen and paper on your desk and jot down ideas as they come. That could be the “Inbox” in GTD lingo. But acknowledge the fact that this Inbox is just a temporary place for all the notes on it. Add a daily routine to go through that list and process all the items in one go and suddenly you have a much more powerful tool. No note will ever be lost, and you get to clean slate every day. The time gap between capturing a thought/link/whatever and deciding if and when you want to act upon it is also nice because the rested mind is much better at answering those questions.

I’ll need to read the whole book before being able to say I’m doing GTD, but the Inbox workflow and the daily/weekly reviews are already working well for me. I’m more consistent with habits too. I wonder if there’s a club for people who dismiss self-help books their whole life and who then end up recommending GTD to their friends. If it does exist then I’ve just joined. This joke’s on me.

Back to the topic! What GTD doesn’t do is showing you how to manage your notes. Quote from Building a Second Brain in Emacs and Org-Mode:

David Allen, creator of GTD, strongly recommends that you store non-actionable, but useful information as ‘reference’ materials. But he only says that how exactly you do so is a matter of ‘personal or organizational judgement’.

2. Getting Your Notes Org’nized in Plain-text

There are some good tools for managing notes out there - personal wikis, apps like Notion, OneNote, Evernote, and Workflowy. I tried some of them, I even enjoyed Workflowy for a while but I always came back to plain-text. No app can beat the joy of working with notes in my favorite text/code editor and the freedom to access the data in different ways (command line grep, regexp search, etc.).

But my least-effort plain-text systems had some pain-points too. The common one was the fact that they didn’t scale well. Not in-your-face-after-one-week didn’t scale, more an after-half-year-slowly-creeps-in didn’t scale.

I’ll briefly describe the errors I made with the hope that someone will recognize them in their system, which could save them some time.

2.1 Bugs in My Plain-text Notes

The not-scaling manifested in two ways:

  1. Increased ambiguity - “Where to put this note?” and “Where did I put this note?” (My brain is good at answering those questions differently on Monday morning and differently on Friday afternoon)
  2. Increased maintenance - Dividing ‘categories’ into sub-categories, merging categories, moving stuff around, etc.

The root cause of both of those problems was the underlying data structure - a tree. I was using just primitive tools to organize notes in a hierarchy: files > headings > lists.

Karl Voit discusses the inefficiencies of categories in his Logical Disjunct Categories Don’t Work.

Notes trapped inside a tree of sadness, they aren't happy.

2.2 Light at the End of the Tunnel

I was quite happy with Emacs as my new editor and I started toying with Org mode so I wanted to try building my next notes system using those tools. But Org mode is not that different from Markdown if you compare their syntax. Yes, it has dates and tags. But anyone can create a new Markdown flavor which will have dates and tags too. The real strength of Org mode is in the ecosystem - people and their tools.

That said, I still couldn’t find a suitable ready-made solution, and I didn’t know the ecosystem at all. So I was experimenting with how far I’ll get with the newly acquired tags and file links. I tried several approaches but I couldn’t find the solution.

Not until I bumped into Org-roam. There’s no parent-child hierarchy in Org-roam. Every note is a file and all files live inside one folder. Now all the notes can happily float together - not constrained by some artificial structure. This creates a much more pleasant experience when working with notes and plays well with other Emacs packages too. Oh, and there are backlinks too! I’m so happy it exists.

Nodes happily floating together

Wrapping up

If you’d like to give Org-roam a spin then it’s quite easy to get it up and running in Doom. All you need to do is to enable its feature flag under Doom’s Org module (inside your ~/.doom.d/init.el change org to (org +roam)). Just don’t forget to check the latest Org-roam installation guide (there are currently some extra steps for Windows users).

Another thing worth mentioning is that Emacs has a small resource footprint, so you can keep it running alongside your other programs and use it only as a wiki/task manager.

You can find my Doom Emacs config on GitHub and here’s a quick recipe for setting up a git backup with Syncthing.