I hate Emacs
Programming has, personally, always been a passion before anything else. Sure, it enables me to provide a nice, comfortable life for my family; with the money I earn being a code monkey, I can pay the bills (mostly), put food on the table, buy something one or more of us wants as opposed to needs. But, for more than a decade now, it has always been something I’d be doing regardless of what I did for a living.
Note the fact that I’m still coding these days, though I’ve been without a job for about a month now.
And for several years now, the one constant factor in my experience has been beloved GNU Emacs.
In every programming gig, full-time or part-time, high-brow or mind-numbingly boring, I had Emacs on my side. It doesn’t matter what programming languages I’d have to work with at a site—heck, nothing mattered: if it involved working with text (or even a number of non-text stuff), I could count on trusty Emacs to handle it.
Recent experiences, however, have left me… lacking in positive affection: i.e., I hate Emacs.
I’ve written posts that can be taken as signs of wanting to get rid of Emacs altogether. Except that’s not the bent of my “hatred” at all.
Let me elaborate.
Part of the reason I’ve come as far as I have professionally (or, at least, I’d like to think so) is the fact that I’m pretty much always looking for something new to play with and learn from. That’s why an older version of my résumé listed over a dozen programming languages (if you have a copy of this, please send a copy my way!). Or how I happen to be able to work with at least 5 desktop/server operating system families (which amounts to about 8 individual operating systems, if I count several GNU/Linux distributions as a single OS).
When I’ve been idle (i.e., without a new toy to play with) for a while, a sort-of watchdog inside me nags me to find something, chiding me for being a bum. Hence my recent forays into NoSQL, as well as my disappointment in a lack of fancy new programming languages that seem worth learning.
However, what I’ve been unable to quench for several years now is the desire to try my hand at a different programming environment.
All such attempts have ended up being aborted, always for the same reason: they lacked one thing or another that Emacs has (or could give me).
Emacs has positively spoiled me for other programming environments.
Larger environments, like Eclipse, NetBeans or Komodo, I dismissed (among other things) due to how slow it felt working with them. If one of them had something I really liked, it always turned out to be either:
- something I could have in Emacs, too—some with a bit of work (i.e., symbol/function lists, refactoring browser, autocompletion); or,
- nothing I couldn’t live without, or merely a passing fancy: probably because I found it shiny at some point (i.e., tabs for open buffers)
I passed on lighter alternatives, too, mostly due to their inability to emulate Emacs’ keybindings. As I mentioned earlier, I’ve been using Emacs for about a decade now: at this point, my fingers know how to play with Emacs while I’m asleep.
It occurs to me that there’s barely anything new to explore in this particular field. Not because I’m a stuck-up Emacs user, whose words are dripping with condescension, unassailable within his smug certainty that Emacs has won—there’s nothing left to fight for, and all others should just admit it and switch.
No, this is more an objective, albeit admittedly narrow, view from a neophiliac who’s been trying to find something relatively novel to get excited about.
Go ahead, pick any number of relatively popular programming environments and compare their feature lists. You ought to notice that, for the most part, they’re pretty similar. Syntax highlighting. Code completion. Symbol and function browsers. Code folding.
Usually, what gets other geeks excited are integration with one-or-another tool. Bug/issue trackers, project management apps, revision control. Even this doesn’t really suffice to set apart most programming environments. Most of everything else that’s left are usually rather superficial. That, or extensive possibilities for modification (something that even haters will—grudgingly—concede is something Emacs excels at).
Even the one editor that got me drooling again—for a while, at least (Sublime Text)—is “merely” a rehash of tried-and-true text editing principles.
Is this is it? Have we reached the pinnacle of text editing (as it applies to programmers, at least)?
There is this one project that leads me to think (and how I thank it for that) that no, we’ve still some ways to go.
Code Bubbles bills itself as a “Rethinking [of] the User Interface Paradigm of Integrated Development Environments”. It really is rather impressive (watch the video embedded below, or go to its YouTube page).
However impressive the Code Bubbles project is, one still has to note its similarity to Squeak (or, rather, the 40+ year old Smalltalk technologies that Squeak has inherited). It’s depressing (specially so to the Smalltalk and Lisp old-timers) how mainstream computer science is just catching up to several decades old techniques and technologies, and how what’s arguably one of the most promising programming projects we code monkeys as a group have managed to birth is something they’d still sneer at as “not (yet) good enough”.
Still, Code Bubbles is impressive. And I'd love to get my hands on it, except it’s (at this point) only for Java, and based on Eclipse, to boot.
Somebody ought to implement something like this for Emacs.