I've been silent for a while, but not inactive. Programming—again. Several years ago, I wrote a macroset for groff, and periodically, I have the urge to make it better.
Groff (”gee-roff”) is a typesetting and document formatting system used primarily in Unix-type environments such as GNU/Linux. It’s wildly powerful in a primitive sort of way, and comes with its own programming language. The language allows you to create deceptively simple commands that perform extraordinarily complex and precise typesetting operations. The commands are called macros, and any reasonably complete set of them is like a programme unto itself.
Groff is also free, open-source software. That means you never have to pay for it, the source code is always available, and you’re free to copy, modify and re-distribute it to your heart’s content. Free, open-source software is written and maintained by volunteers, or, more commonly, communities of volunteers.
There aren’t a lot of groff experts out there, just a handful scattered round the globe. We use a mailing list to stay in touch. The members on the list are amongst the most intelligent, thoughtful, helpful, diplomatic and ego-free people I have ever had the pleasure of not meeting face-to-face.
(It’s really quite remarkable, our little list, a paradigm for everything that’s good about the Internet, or was, until the Web got bogged down with the drivel known as social networking.)
The thing about open-source programming is that it’s work—hard work—and carries with it a degree of responsibility far in excess of what a pay cheque can instill. You write a programme, put it out there, people start to use it, and suddenly, it’s no longer optional whether—or when—you work on it. People are relying on you. You can’t have somebody report a bug and leave them stranded. You you have deal with it right away.
The same holds true of features. If all that’s standing in the way of someone finishing their thesis and submitting it in timely fashion is a feature missing from your programme, as was recently the case with “mom”, my macroset, you can’t just say: “I'll implement it later.” Tough or not, you add it right away. That’s the contract that exists between developers of open-source and users, and why open-source beats closed-source (think Windows) hands down every time.
* * *
I cannot really call myself a programmer, even though I like to programme. I'm an amateur without the slightest bit of formal training. But the challenge of it calls to me. Programmes are like free-form model airplane kits. You’re handed all the pieces with a tube of if-else-then-and-while glue; from there, it’s up to you to figure out the plane you want and how to make it fly.
The process uses both sides of the brain, and, for that reason, is addictive. Days and sometimes weeks go by while everything recedes into the distance. Your world is circumscribed by clicking keys and pale glow from a monitor. You go to sleep distressed by some intractability, and wake up with Eurekas! You know only two emotions: satisfaction and despair. Even when you should get up and stretch your legs or spend some time with friends, you carry on, obsessed with nagging details, obsessed with getting done.
In the end, of course, you finish. Stamina has long ago replaced the high you started with, but still there’s strength to pump the air and utter a soft Ye-ess of quiet pride.
* * *
That’s where I have been the past few weeks. It’s over now. Slowly I'm returning to reality. Once again the blog-voice will be speaking.