Words in Boxes

Nouns, verbs, and occasionally adjectives.

Wednesday, August 20, 2008

Emacs

It's been almost a year since I first talked about my periodic upgrading-the-tools-I-work-with-instead-of-actually-working kicks.  It's happened again.  This time, the method of my pseudo-procrastination is Emacs.

Emacs, for those of you fortunate to have better things to do with your time, is the grandfather of all text editors.  It was originally written in 1976 by Richard Stallman, who apparently hasn't shaved since:

 image

Scary guy.  That picture pretty much sums up everything you need to know about Emacs.  That, and the manifestos

So why Emacs?  It's not because it's easy to pick up - it's learning curve is more of a learning cliff.  But, if I sit in front of a computer for 8 hours a day, the time I spend learning a difficult can be amortized over hundreds or even thousands of hours.  In this case, usability - the ability for a trained user to be efficient - is much more important than learnability.  And Emacs, once learned, is lightning fast.

image

Both its strangeness and speed can be traced back to 1976.  Computing then was very different than it is now.  When Stallman wrote Emacs, the capability to edit lines in a text file in a different order than they existed in the file was a big deal.  There were no personal computers, no mouse, and no arrow keys on keyboards.  Users, mostly university researchers, logged into mainframes using text-only terminals over slow connections.  This result is an interface that is strange and filled with baroque key combinations - you can use CTRL-F to move the cursor to the left - but is above all designed to be fast. 

Keyboards haven't changed, and neither have people - so a program older than personal computing itself can actually be relevant today. 

That's not to say there aren't problems.  There are plenty.  It's a free program, developed and extended by volunteers.  It's missing many modern conveniences - such as drop-down Intellisense code-completion - and many of the independent extension efforts seem to have stalled - such as ECB - seem to have stalled several years ago.  It took me about 5 Google searches to find downloadable code to make line numbers show up. 

For me, the killer feature is progressive search.  Those of you with Firefox already know how it works.  As soon as you start typing your search term, it starts searching.  It's an incredibly fast way to navigate a document, and Emacs does it better than any other program.  Once you use it, navigating a document without it feels like swimming through Jello.

But really, for many specific applications (such as XSLT debugging), you're much better off using a paid commercial product to work in.  One that was actually written in this decade.  Money actually buys you things, amazingly enough.

Am I proud of learning it?  Not really.  In the end I might be marginally more productive, but maybe not enough to justify the loss brain real estate now devoted to remembering dozens of strange keyboard combinations.  At this point it's mostly a hobby, something to distract me when I should be doing real work.

I'm James Sulak, a software developer in Houston, Texas.

You can also find me on Twitter, or if you're curious, on my old-fashioned home page. If you want to contact me directly, you can e-mail comments@wordsinboxes.com.