Org-Mode: the reason to use Emacs

Org-Mode: the reason to use Emacs

Org-mode is a subsystem inside the emacs text editor that's used for making todo lists and organizing tasks.

Why it's awesome

I've tried to find some task-tracking system that works for me personally for years now. Despite all the high tech solutions available, I've always used pen and paper and then transcribed my information into different tools when needed.

With Org-mode, I've finally found something computer-based that I can adapt to my needs.

Fluid structure

Most PIM systems require you to make a decision upfront about what you're creating. Is it a todo item? A checklist? Is it a random side-note? An appointment?

Even with the best UI, being asked to categorize the task is enough to take you away from the mental context you're in. For a brainstorming session, which usually takes place in a creative setting, you can permanently lose some ideas in the context-switch.

Conventional wisdom solves this by having you take free-form creative notes first, and then structure them afterwards. At best, this would be during the planning session's downtime. Even then, though, you need to have mastered your tools enough to take advantage of built-in calendars, reminders, and trackers without losing your train of thought.

Org-mode keeps you in the flow.

Fundamentally, in Org-mode, you're just adding supplemental annotations to your unstructured, free-form notes.

Single points of reference

This simple non-structure lets you keep all information associated with a task or event in one spot.

Linking between and within files is also done in a dynamic and natural way, so you can keep a single point of reference without having to copy/paste arbitrary reference strings.

For instance, typing in [[foo]] will create a link to the first occurrence of 'foo' in the document, done internally as a search, so the anchor point won't ever be out of sync with the anchor content.

Human-readable data

All annotations are human-readable and editable as plain text.

Simply writing TODO in front of a bullet point is enough to mark it as a task, or DEADLINE followed by a date in angle brackets to mark a deadline.

All such annotations have faster ways of entering them, but the end result is always something that can be edited and that makes sense as plain text.

IDE conveniences

Because emacs cas the capacities of an IDE, you get everything you're used to in an IDE.

Syntax Highlighting

This comes in handy for easily viewing different task states

Folding Code Blocks

In this case, the 'code blocks' are bullet points for an outline, but it lets you hide away long chunks of text that might not be relevant.

Actually, quite a few features center around giving you a folded/unfolded configuration that surfaces the most relevant information.

Code Outlines

Though this requires an additional component, you can get outlines of multiple files on a side pane, so you can see where specific tasks and events are defined.

Heavy customization

There are quite a few per-file directives that can be included depending on what IDE behavior you want while handling that given file. Though this wouldn't make sense with normal source files, it's very convenient here when the content of every file can vary so greatly.

Support from the Emacs universe

Emacs lends itself to heavy tweaking and customization, and this particular extension has been used for over a decade, so there are plenty of user plugins available to create whatever behavior you might need.

Why it's not so awesome

Of course, there are pain points as well. These are some of the biggest ones I've encountered.

Confined to the Emacs universe

A bit of a double-edged sword 😀

While there's great integration with Emacs's own contact manager, and email managers it feels very unstable when integrating with other technology.

For instance, I've set up a sync with Google Calendar, but the code is very brittle, uses some hacks to make these two formats compatible and will most likely take hours of tweaking to fix if/when anything changes with Google API.

Requires an IDE

Though it's great while using a computer or laptop, it comes from an era without cloud storage and mobile dominance, and it shows.

There is MobileOrg, which allows you to read and write org files (syncing via WebDAV), but the use cases with mobile just don't as easily lend themselves to unstructured annotated text, meaning without an IDE and a keyboard, there's no clear advantage anymore.

You need to be a programmer

This isn't strictly true, of course, but it definitely helps.

I like having desktop notifications about calendar activities, and it only took me a few hours to find out how to get Emacs to produce them in OSX. For a non-technical person, making this small tweak might be impossible.

There's lots of documentation available, but you need to come in with a heavy amount of programming experience to really make it work for you.

No reasonable defaults

This is also subjective, but the default settings and appearance make it feel unusable. As mentioned above, you can change this, but not without significant time and effort.

I'll write a future blog post about the changes I made, along with why.


All that being said, I really like it; I've been using it to organize tasks for the last few months and I keep finding new, useful, 'hidden' features in it every day.

So, use it if:

  • You are an efficiency nerd
  • You want a heavily customized task/note-taking/scheduling system
  • You are comfortable with programming
  • You're ok with picking up a new programming language (elisp)
  • You want to design your perfect workflow system

Do not use if:

  • You don't know your own workflow well enough describe your ideal system
  • Building a system like the above doesn't sound fun for you
  • You do task/note-taking/scheduling more on mobile devices than desktop

Happy organizing!