Monday, December 25, 2006

Emacs for Blubs

I was reading Dive into Python, and the author strongly recommended emacs. I have heard this recommendation several times before: the first from Science Fiction author Neal Stephenson, and again a bit later from Stevey Yegge. So, for the umpteenth time, I am trying out this editor.

In my earliest attempts, I started with the tutorial, and I had never gotten completely through it. My brain holds very few facts at a time, and learning control keys to move around in the text maxed me out right away. This time, I am trying a book: Ralph Roberts's Unix® Desktop Guide to Emacs (1992 — and yes, the trademark symbol is in the title). For some reason, while using the book I was able to get through the entire tutorial. Go figure.

As I get deeper and deeper into the mysteries of emacs, I am reminded of a crack about BBedit by Rands:
BBEdit's biggest flaw is one of its greatest assets: its history. BBEdit's design is an amalgam of every design decision the Bare Bones Software team has made since its release for System Software 6 in the early 90s and it shows.

Emacs may be the best text editor in the world (all the cool kids say so), but its learning curve is pretty steep and its features (look! you can embed lisp macros right in there!) assume you are already one of the cool kids instead of one of the Blubs.

So as a Blub, I am never going to pick up emacs. The kind of power it gives me is way too high up the abstraction ladder. As a Blub, I want something that can immediately make me feel like I am adding value to the business process and/or satisfying my customer's needs, and this editor is asking me to focus on the tool rather than the problem. It doesn't matter that learning the tool will make me more productive as a programmer and thus be in a better position to solve my clients' problems. I wouldn't be a Blub programmer if that argument carried any weight.

So I will probably by staying with the python plug-in for eclipse for learning python. Sure, Eclipse imposes its own learning curve, but I have already been through the first stages of it, so I don't really have to deal with much newness.

>>Edit
Stevey has just verified my Blub attitude towards emacs:
Emacs offers a completely hostile end-user [end-user programmer] experience and a nearly unparalleled programmer experience [programmer-user].
So for those of you who want to program and add hooks to your editor, emacs rocks. For those of us who want the tool to be ready to use to solve non-editor programming problems, perhaps it is not the best.



Sunday, December 24, 2006

My Inspiration to Blog

I had been reading various software development blogs for some time (instead of paying stricter attention to my proper duties) when I came across Stevey's encouragement to start blogging. As I have opinions I would like to share with the world, I decided to curse his blog publisher with what pops out of my mind. Here is what is rattling around in there trying hard to get out, and I need to either release it here or curse my wife/coworkers/strangers on the bus with it.

Blub programmers have been given a bad name by the people I enjoy reading. Especially Raganwald. We blubs are the people who keep the bilges of massively bureaucratic ships pumped. Sure, we have flaws. We mostly maximize short-term benefit, and we are motivated primarily by the warm fuzzies we get from our clients and the potential to win the coveted "best cookie" award at the staff Christmas party. When faced with the challenge of optimizing depth-first tree traversal algorithms, our first impulse is to form a committee to discuss what the various institutional divisions would want out of a depth-first tree traversal algorithm. But if we actually had imaginations and vision, the massive institutional inertia would grind our bones into dust.

The anti-blubs argue that we should therefore quit and find jobs that encourage us to explore the full potential of informational technology. But the whole point is that we like what we do. We like it when a user gushes at us because we have added a "logoff" link to our web pages. We like our individual three-ring binders filled with impenetrable coding standards (last updated, 1988). We are business analysts who bring value through our deep understanding of existing processes, not technophiles excited about meta-programming constructs. And every second we spend thinking about how to do something technically sweet, we spend a second less considering our user's needs (as the user understands them).

So given the environment and our motivations, how can we be the best blub programmers? This is the topic I will begin to explore when the rattling in my skull gets too loud again.