Matthew DiLoreto

A place to keep track of some of my things.

Emacs and Org-Mode

Before this year I was always a vim guy. I used vim for almost everything except JVM programming (Java, Scala. For those tasks I really prefer IntelliJ), but this year I installed emacs. I figured if I really wanted to participate in the holy flame war I better spend some time learning the other tool as well. I used a few different tool for all my electronic tasks, and here’s what that landscape looked like for me before emacs:

Before Emacs

Task Software
Taking Notes vim, Github-flavored Markdown
Keeping an agenda A simple note widget on my phone, Google Tasks
Text file manipulation vim
python, C++ vim with YouCompleteMe
Java, Scala, javascript IntelliJ

I was generally happy using this configuration, with the exception of my agenda. I was too disorganized, with short-term tasks on a note widget on my phone’s home screen, and longer term tasks in Google Tasks. Putting time constraints on the short-term tasks was basically impossible since the note app had no integrations with the calendar, and putting those things in Google Tasks was too onerous. Also, I do most of my work on my laptop, so having to keep my phone by my side while working was a big pain.

I’d recently watched a talk from Harry Schwartz on org-mode, and the simple plain-text markup with powerful keyboard shortcuts convinced me to give it a shot. Actually, the keyboard shortcut for inserting timestamps, C-u C-c ., is the single thing I saw in that talk that I had to try. So I opened emacs and… couldn’t figure out how to make a new file. So back to what I knew, vim agenda.org, insert some markup, save, then emacs agenda.org. I haven’t gone back to another way of organizing my tasks.

I ought to write about my workflow with org-mode, but that’s for another day. In fact, I liked it so much that I started taking all my class notes with emacs too. So it begins, I’ve chosen a side on the holy war, and emacs is slowly conquering territory that used to belong firmly to vim.

Now, 3 months of emacs

Task Software
Taking Notes emacs, org-mode
Keeping an agenda emacs, org-mode
Text file manipulation vim
python, C++ vim with YouCompleteMe
Java, Scala, javascript IntelliJ

Actually, these changes coincided with me teaching myself Clojure, so the landscape really looks like:

Task Software
Taking Notes emacs, org-mode
Keeping an agenda emacs, org-mode
Clojure emacs, CIDR
Text file manipulation vim
python, C++ vim with YouCompleteMe
Java, Scala, javascript IntelliJ

And it’s definitely not looking good for vim down the road. Right now my vim/emacs ratio is around 1:1, but I imagine this will shift more in emacs’s favor soon. I really like emacs. It’s almost apples and oranges to vim, or maybe a more apt analogy would be crab-apples to oranges, where you’ve only been eating crab-apples for years and didn’t know how good oranges tasted yet.