David's Deliriums

A Go developer who also likes Rust. I write here.

Adventures in Org Mode

Discovering org-mode

Back in my college days, I has one class in my penultimate semester that was basically a capstone project. The other students and I were divided into teams and we got to work on a project we chose from ideas submitted by all our classmates. It was a great class, and taught me a lot about developing software on a team.

But that’s not what this story is about. This story is about one of my teammates.

He was a Unix fan. I never asked, but he probably ran Debian as his main OS. But really, the distro doesn’t matter.

Because the dude used Emacs.

We had our choice of languages for the project, and I’m sure if given the chance he would have chosen Elisp (Emacs Lisp) He was also big on Crystal. I liked him - he had spunk. for ours. At the time, I was a hardcore Vim Really, it was NeoVim, but forks count, right? user and, being college nerds with something to prove, we would often poke fun at each other’s favorite editors. I’d make a joke about breaking the Control key, he’d say something about Vim only being an editor. It was good times.

However, his ardent love for this editor made me want to take a closer look. I’d heard it talked about pretty much since I started learning to program. I finally decided to see what the fuss was about. So I started it up and was immediately confused.

Without delay I backgrounded the process and killed its PID.

Vim was serving me fine, I didn’t need to learn another editor. I had my Vim config just the way I liked it, and didn’t want to futz about in another editor’s configuration and package ecosystem.

In parallel

As the above anecdote and following years went on, I also was trying to find a task management system that I could stick to. I tried several different programs/systems, from the Hipster PDA Shoutout to Merlin Mann to OmniFocus to Field Notes books I kept in my pocket at all times. None of them satisfied me, and it took me forever to figure out why.

I wanted something from these things that wasn’t quite possible: accessibility. That isn’t to say that these aren’t accessible systems - I usually had them close at hand. But I couldn’t easily access them from where I was working - I’d have to switch apps, pull out my notes, whatever action to see what I’d written down or what I needed to do for a project.

Bringing it all together

This brings us to August 2020. The middle of the SARS-CoV-2 pandemic. I’m bored as hell, and decide it would be fun to try and at least learn Emacs. And while I’m at it, I’ll check out this feature it has called org-mode.

And I fell in love.

However, I could not be bothered with learning the default keybindings. I found evil-mode vis-a-vis the wonderful doom-emacs and life was complete.

I’ve only just begun to learn the things I can do with org-mode, but there are a couple of things I’ve already learned.

The Agenda View is life

I live in here. The default agenda view is already pretty good, but when you combine it with the search and filter functions you can define a view with exactly what you want.

Tag everything

The more tags I shove onto entries - whether notes or todos - makes it easier to find what I need at a given moment. And the great thing is that tags are inherited - subtrees automatically get the tags of their parent. This lets your notes not get bogged down with tags visually cluttering every entry.

Tasks can - and in my opinion should - have subtrees

Any entry in org-mode can have a subtree. This comes in handy for todo entries - this gives me a project structure similar to other programs, and it also lets me follow a GTD system easily. If something needs to go from a task/todo to a project, it’s as easy as defining the first subtask. Plain text can be pretty powerful.

Progress meters are cool

Adding a progress meter/tracker (either [/] or [%] for either x/y or a percentage display) makes it easy to see at-a-glance how my projects are going. It’s a simple thing, and it gets updated whenever you modify the tree - no manual intervention to change it.

Multiple todo stages give granularity

Thanks to org files being just text, I know it’s also the software, but I really think the storage format being plain text adds most of the power. you can define things however you want. You can define as many todo stages as you want to capture all of the different states your tasks can be in.

Capture mode

The biggest thing that’s helped me really get into org-mode is org-capture. Doom Emacs comes with some defaults that I found very helpful to get started. There are templates for personal notes/tasks, and for project notes/tasks. The project templates have the added benefit of being either local to the directory of the project or in your org-directory. This makes it easy to quickly capture anything I need to wherever I am. It also will add in the file you had open when you started the capture - so if you can have context for your notes and be able to quickly jump back to the file you’re editing. This is thanks to default configuration in Doom Emacs - it would take some setting up to do this in vanilla Emacs. But it is still possible if you read the manual.


There are a few drawbacks to this system. Drawbacks are inevitable.

One: it doesn’t really translate to mobile well. I’ve tried OrgMobile. I have a WebDAV server set up to push to. It worked okay. Maybe it was something in my configuration. Maybe it was the fact that the iOS OrgMobile client was slightly unintuitive to use.

Whatever it was, it didn’t quite work out, and I’ve been trying to think of ways to capture notes as I’m out and about. Right now I’m leaning towards using Drafts https://getdrafts.com as my mobile thought capturer. It works really well, and combined with the macOS app lets me have access to everything I’ve written once I’m back at my computer. I’ll probably work on an action to automatically put relevant drafts into org-mode as I need to.