I have friends (no really! I do!) who poke fun at me for being so old-school with my text editor setup (I’m looking at you, Pyke). I make no attempt to conceal my affection for emacs. I have it nicely customized, just the way I like it – in fact I probably put more time and effort into customizing my editor than I do into customizing my living quarters. But I just realized today that I’m genuinely old-school in my coding. I code in *pen*.
I’m sure that my upbringing has something to do with this. My father was in senior management at Northern Telecom, back in the ’80s (back when they existed!), and before that he was a coder himself (in PL/1, APL and Fortran… *shudder*). I remember him bringing many of his employees to our house for dinner, and some of the earliest dinner discussions I can remember are about core leaks and stack overflows and such. And I remember one programmer in particular; I’m sure there’s one like him in every company, the oldest and smartest guy in the room, who more or less does his own thing until people find a completely intractable problem and bring it to him, whereupon he looks at the problem for a minute, tilts his head to one side, and writes out the solution on a napkin. The difference with Des, though, is that he would write out fully implementable (and commented!) code on that napkin. So that’s what I grew up thinking a “proper” programmer looked like.
Well, I’m certainly not a “proper” programmer. I *like* programming, and I sure do a lot of it, but I’ve got zero training in it (I took one computer class – “Fortran To Wash Out Wannabes”, I suspect it was called, and it worked!), and I’m the first to admit that I know diddly-squat about coding. But I really enjoy it. I like languages (both human and computer), I like math, and I like puzzles, and coding is the intersection of those three sets. But I don’t know enough about *any* programming language to just sit down at the keyboard and bang out a program. So what I do is, I think about a problem for hours or days at a time, and then I get out my pen and I write my code. The code is generally wrong, and will get crossed out and scribbled on repeatedly, but I still do this almost every time. Only when it looks reasonable on paper do I enter it into emacs and then try to run it. (That’s when the weeping and wailing and gnashing of compilers happens, of course.)
What I *don’t* do, is code by “Googling StackExchange”. Sure, I spend a fair amount of time on StackExchange looking things up, but since I’m not coding for a “real job”, but rather for the fun and challenge of it, I want to know why each bit I find works, and how to make it bend to my will and do what I want it to. And since I have no computer programming training, that means having to take apart every line, every clause, every idiom, to see what makes it work. I’ve written a set of routines for emacs to make this easier (essentially tools to uncompress commonly compressed web code), but when I really want to see how something works, I write it out in pen. Then I can go at it just like I would parse a difficult bit of Latin, by circling parts, drawing arrows to other parts, crossing things out, writing superscript notes… and eventually constructing my own sentence to make sure I understood it. All in pen.
Needless to say, this doesn’t get me invited to a lot of hackathons. What young, lean, agile code-bro has the patience to put up with the old guy who uses *actual books*, and is busy scratching away in pen trying to figure out what the program is supposed to do before he even starts up his IDE? I mean, he probably doesn’t even have any Reputation on StackExchange!
The funny thing is, when I’m writing a blog post, I actually *don’t* write in pen. I suspect that’s because when I write code, I have to write slowly, which forces it to be almost legible, whereas if you have any doubts that I’m a highly-educated person, well, you should try to read my handwriting. When I’m actually writing prose, my handwriting is beautiful and elegant and completely illegible. There are a few people out there who can read my writing, but most days I’m not one of them. So right now I’m writing this (of course) in emacs. I can tell you’re surprised 😉
So if you started reading this post wondering what I code, I’m afraid I’m going to disappoint you on that score… until another time, that is. Well, for the intensely masochistic among you at least.