12 April 2008

Computing Truisms, or, My 39th Birthday

We build our computer (systems) the way we build our cities: over time, without a plan, on top of ruins. — Ellen Ullman

I hope I can be a computing industry pundit when I grow up. They get to mouth off about whatever they think the next big thing is, make gross generalizations about what the "average programmer" is like and even grosser generalizations about the "average user." I have no idea what the perfect X in computing, but there are exactly two gross generalizations I'm prepared to make with confidence:

First, Most programming is devoted to converting data from one ridiculous format into another ridiculous format. Actual programmers I've told this to tend to agree with me. I've recently started to churn out lisp libraries and of the four I'm working on now only one isn't obviously a data transformation problem.

Second, Most systems administration is a form archaeology. At an IT shop of any size it will really take months — up to half a year — for a new hire to really understand what's going on and where everything is, and that only in broad outline. Worse, even long-time staff may not know everything the computers are up to. In the last month I've run across things I once knew about and then basically forgot when they stopped being relevant. For example, we once used Netscape's (RIP) calendar manager program. Two weeks ago I discovered that we migrated that entire application infrastructure at least twice since shutting it down. Whenever a particular web service moved to a new machine, the calendar manager came along, a sort of junk DNA. I got rid of it this week.

Nine years ago Bryan, while he was a student working for me, wrote a perl script to do a small piece of file system sanity-enforcement. It has run once a night every night during those nine years. I feel I should publicly apologize to Bryan for not afflicting him — or the other students — with code reviews. More idiomatic but still readable perl could have saved him about 30% of the typing that went into the script. It works, so it'll probably run another nine years, and since it's so well-behaved I'll probably forget about again in short order.

A few months ago user C had a problem he suspected was related to his quota. It wasn't but he wanted a way to see what his quota was. Because of the oddball file system we use the normal tools for that don't work. I just work with C directly when he has disk issues, but thought up a scheme to let people check their quotas more easily, dashed off a quick note in the req (other people might call that a "trouble ticket") about it, and left it there for when I had time to code up a solution. Last week, while looking for something else, I discovered that I already solved the problem in 2004. Not only solved, but because my programs log compulsively, I know that users have been using it, including the newest faculty hires. Who told them the program existed?! The design that went into the req wasn't an invention but a memory.

Today I turn 39 (next prime birthday: 41, next power of two, 64). In a computing age it's too easy to compare a brain to a computer, but recently I've started to wonder if my own brain isn't rather too much like another computational archaeology site. Things burble up out of my unconscious onto the whiteboard in my brain with every sign of novelty and shoot out my mouth. An hour later I wonder if it's new, or if the scent of yinhao jasmine tea, the act of scratching my nose, or trying to remember if I turned off the stove has reactivated some random tangle of a hilbert-space memory trace in my neurons and shot a context-free memory upstairs to be misidentified as a new thought. As aging worries go, this one's pretty minor. My martial arts abused joints should probably get more of my attention.