Friday, December 19, 2008

Why This Post Is Late

(Disclaimer: while the following is based on a true story, it contains significant exaggeration and should not be taken as evidence of, well, anything, really.)


It's past six-o'clock on a Friday night
I'm exhausted as words can express:
My ex-colleague's code chose today to explode,
And I get to clean up the mess.

It's not the first time this has happened, mind;
I should have replaced it all then.
But other bugs cried, so I set it aside —
Now they're done, but I'm back here again.

La, la la, di di da
La la, di di da, da, da


Chorus:
Find us a fix, you're the parser man
Find us a fix tonight
You've done such a great job cleaning up after Bob;
We're sure this time you'll get it right



At first it just kept leaking memory:
The x86 machines died;
And John said, “We're bereft; it's Bob's work, and he left,
And he left us no comments as guide.

“You wanna try taking a look at it?
There's realloc() calls next to new[];
Cross-casting through void *; tricks best left unemployed;
Did this (bleep) ever see a review?”

Oh la, la la, di di da
La la, di di da, da, da

It started as output from lex and yacc,
Reentrantized piece by mad piece
Through methods arcane, insecure and insane,
and likely to fail in Release.

So I took up a Spirit of righteousness
And a gallon or five of caffeine
And when I was through, gone were *alloc() and new,
And it ran on the oldest machine.


(Chorus)


But the interface to it remained in place,
And I'm sitting here at my desk
While there on my screen sits a function unclean
And three globals with names Kafkaesque.

And on Linux, m_Nodes has four duplicates,
Although over on Windows it's fine;
But the code path is clean — no #ifdefs to be seen
As I step through it line after line.

Oh la, la la, di di da
La la, di di da, da, da


(Chorus)

(I would complain more, but I ran out of song. This is probably for the best.)

No comments: