Euan The Debugger -- Chapter 1

The Coffee Jumpstart

I stumble into work on the Monday morning, level of consciousness hovering somewhere between "anaesthetised" and "garden vegetable." The advanced study in sleep deprivation conducted under the auspices of the last project left me with a deficit of 25 hours as of last Friday evening. I figured that sleeping all weekend would just about bring me up to normal -- that is, a 3-4 hour deficit.

No such luck. Saturday morning found the town council in a frisky mood, deciding to dig up half my street in order to replace the old faulty telephone wires with new faulty cable, and starting the jackhammers at 8am outside my window. Clearly they were on double-time-and-a-half on Sunday, since they started at 7am and went on until 8pm. Had I not been too sleep-deprived to stand without aid, those jackhammers would have been inserted somewhere that would have at least muffled their sound by 10-20dB.

Throwing my bag in the general direction of my desk, I grab my industrial-strength (and capacity) coffee mug and head for the coffee machine.

Given the time and day, it's not surprising that a small queue has already formed by the machine. Sue the secretary is at the head, waiting for her small cup to be half-filled so that she can drown it in milk. I've told her about the local Starbuck's and the concept of a latté but she seems happy with her home-made version. Who am I to argue?

Coding machine supreme, Graeme is next up. His fingers dance in a complicated movement over the button panel of the machine before hitting the "Strong" button. The machine groans and wheezes, then dumps a solid chunk of steaming black stuff into the mug. Immediately the ceramic starts to dissolve, a process only aided by Graeme slinging in three or four spoons of sugar. The rumour has it that Graeme had the machine apart one weekend, dumped the EEPROM controller data into his PalmPilot, spent the week updating it, and uploaded the new code the next weekend. Certainly this would explain what happened on April 1st last week. Nevertheless, the machine does seem to run significantly faster.

System tester Alex is the last in the queue. She places her mug under the spout and hits "Regular". Nothing happens. She hits it again. Applying the first law of system testing she power-cycles the machine and retries. This time it spits out a shredded tea-bag, and something which looks suspiciously like the fingernail of the last maintenance engineer to take the cover off while the machine was active. Cursing, she applies the "percussive maintenance" strategy. The machine beeps and pours out the coffee as requested. Poking suspiciously in the depths of her mug with a spoon, Alex wanders away to go break something more expensive.

I pull open the panel of the machine, block the output nozzle and cycle the coffee powder extracter a few times before allowing the hot water to mix in. The first time I tried this, I discovered the wisdom of not holding back a froth of boiling hot water and coffee with one's thumb. The burn has fortunately almost disappeared.

Slurping the first shot of the wake-up juice, and dropping a couple of glucose tablets into it, I make my way back to my desk. Already the fog of sleep is lifting; a new project awaits.

Warning Bells

Last Friday I had the briefing on the project. The Transportation Ministry of East Ruritania has decided to upgrade its old and perfectly-functioning tramway signalling system to a new one which is digital, uses distributed computing over a secure TCP/IP network, and which will have so many bugs that they'll be forced to employ 3000 people to fix the thing, thereby significantly improving the country's unemployment figures. Oh yes; they didn't want an off-the-shelf package as some salesdroid persuaded them that they'd get far better bang-per-buck for a heavily optimised implementation.

Once our team had stopped laughing enough to be able to hear our project manager again, we had the bad news. The implementation was being done by the well-known coding cowboys of Digital Cockups Inc. (name changed to protect the very guilty indeed), but in a rare fit of common sense the Ministry had insisted that their system be validated by a firm experienced in such systems. Unfortunately our firm's name had come up, and we'd not heard on the grapevine in time to stop our salesdroids from leaping at the contract like a ferret after a rabbit's arse.

The project was dumped onto our team at short notice because the DCI folks had "finished" coding two weeks early. Clearly they were billing fixed-price rather than by man-hours. The actual system hardware isn't due to be delivered for another month, so we're expected to spend four weeks scrutinising the actual code to find all the mistakes, have a week to bang on the hardware to make it all load up and work, then three days of actual testing before we're contractually required to submit our final report to DCI. They will then fix whatever bugs they feel like fixing, explain away the others, and ship the resulting system to Ruritania. Untested. No doubt they'll get a fat contract next year to go over there and fix most of the problems on time-and-materials, as there's no way that the Ruritanian Government can admit to having employed a bunch of idiots to rebuild their flagship transport system.

Aaargh. Anyway, the three of us have to eat, so here we are at the start of what promises to be an interesting experience in masochism.


Web pages maintained by Adrian Hilton