Software and People

I haven't posted here for a few days, because I've been completely engrossed in trying to get some software working. Long days, short nights, too much caffeine - I'm sure you know the drill. It's become a geek cliché.

There are two things that are somewhat remarkable about this, though. The first is that I thought I'd put this style of development behind me. Since thinking though my Golden Rules of Stress-Free programming and learning Java, then later discovering Extreme Programming and Test-Driven Development, I've hardly ever had to pull one of these "lost weekend" sessions.

The second remarkable point is the technology I have been using. As I mentioned before, I was coding in C to run on MSDOS. Well, at least at the start I was. Pretty soon, though, I got so fed up with the clumsy and largely untestable nature of writing DOS interrupt handling code in C, I changed down to an even lower gear and started coding in 8086 assembler.

All of this gave me a very strange feeling, a kind of technical flashback. Things I'd thought I'd forgotten came seeping back. There is defineitely a purity to writing in assembler. There's no second-guessing what the compiler will do with what you have written. There's no confusion over oveloaded or overriden names. There's no murmurs about "memory leaks" or garbage collection overheads. What you write, the computer does. Simple and clean.

One thing was different this time, though. The last time I messed with this stuff, there wasn't an internet! I've become so dependent on the web for resources that I found myself getting quite grumpy when I couldn't find what I wanted. In the Java world, everything is on the internet. Every spec, miles of source code, documents and tutorials until you get sick of them. In the twilight world of DOS programming, information is either proprietary (for sale to embedded and legacy developers), fragmentary and incomplete, or never made it on to the net in the first place. I even had to resort to faded books and dusty floppy discs.

It's not all bad news, though. The technology is old enough that some of the good software from the first time around is now available for download. I have done all the C development using the retro but very effective Open Watcom C/C++ compiler. After a 10 year gap, I went looking for my favourite assembler - Eric Iverson's shareware A86 - and found to my delight that not only is it still available, but it has even been upgraded several times. It's a good job, because the copy I bought and registered all those years ago is on a 5-1/4" disk, which I have no way of reading. I wonder if he'll honor my registration and let me have a new copy? :)

The other thing that astonished me is the speed. On my normal workstation both C compilation and A86 Assembly are effectively instant. No tedious startups, no fluttering of the disk drive searching classpaths. And the programs I have produced take near enough no time or space at all.

Now, time to breathe a huge sigh of relief, and get down to all the other jobs I'd pushed out of the way to get this done...