As anyone who’s ever done it professionally knows, programming computers isn’t as glamorous as they make out in the movies. Take for example, Independence Day, where the hero lashes together a program in 30 minutes and conjures up a piece of code that saves the world. Have you ever seen anyone do in that real life? And did you bill them for the full hour?
Or take another glamorous example of the mercurial codesmith-as-shamen. In Po Bronson’s Nudist On The Late Shift – one of many books of the dot.com era that tried to persuade us work was simply another form of leisure, the eponymous hero is a programmer so dedicated to his task that he forgets to put his clothes on. And he’s so vital to the organization, no one minds.
But if this was really happening – what would you think? You’d ask yourself, what would drive a man to toil over a computer, in a deserted building, stark naked? Just what would possess a man to lose his dignity like that? The lonely soul must have been tearing his heart out. About, what exactly?
Well, what was probably going through the mind of the nudist at that very moment can be found on page 203 of this marvelous book, by Verity Stob. He was probably thinking something like this.
Once upon a time there were three special COM string types: BSTR, _bstr_t and CComBST. BSTR was the most straightforward: it was a typedef for a pointer to a wchar_t, and w_char_t was a typedef_ of a 16-bit Unicode character. Therefore BSTR was a Unicode equivalent of LPSTR [which is what Microsoft called strings in Win32].Ha! Got you there. BSTR was no simple null-terminated string; rather it had a secret length count and extra null terminator, and was allocated and freed with special functions. One was not supposed to know the format of its contents, and it was not obvious how you were supposed to make conversions to /proper/ strings. [Which in any case, would break the ‘make no assumptions about content’ rule].
But why manipulate BSTRs as pointers? The answer was “Yes, of course it was a natural for a class”, which was two were supplied, “A _bstr_t object,” said MSDN in its _bstr_t page, “encapsulates the BSTR data type,” whereas the entry for CCombSTR began “the CComBSTR class is a wrapper for BSTRs”.
Both ignore Bruce McKinney’s MSDN-bundled, and therefore officially sanctioned 1996 article “Strings the OLE Way” where he proposed a BSTR wrapping class of its own, called ermmm, String.
Well, when run time error hilarity ensues, do you wonder why a programmer would rip his clothes off – wouldn’t you?
Here then is the grim reality of the code face, once the marketeers and consultants have taken their colored UML diagrams down and departed. Somebody has to keep our machines running.
For 17 years a mysterious English lady called Verity Stob has been chronicling the dilemmas of people who do on a monthly basis – with amazing felicity, wit and patience, and here are her columns in one place for the first time, in a real paper book.
Verity Stob is to computer programming what the BOFH is to network administration. Both are so acutely well observed, and so well written, that like The Office, enjoying them causes anguish as well as giggles. Both are consistently funny, truthful and inventive not just occasionally, but year in and year out.
But there, the similarities end. Verity Stob’s humor is in the stoic British tradition of a Tony Hancock, fiercely moral but utterly non-judgemental. (With only one exception). Faced with libraries, languages, frameworks and tools that don’t make sense, often accompanied (as we see above) by documentation that doesn’t exist or really shouldn’t have in the first place.
Systems programming has its own folklore, in the Jargon File. But for Windows programming – the grim toil undertaken by the rest of the programming world? Verity Stob is its Queen and its chronicler.
There are great flights of fancy, such as Brunel applying for a C++ job, or a sentient Google cluster, or a superdense history of computing – the funniest ever written. Or her Beaufort Scale of PC Decay, which is so well observed that anyone who’s used a post-Windows 3.0 PC will recognize each stage.
Cruft Force 1: “New” … “The mouse does the poltergeist trick where, with the actual mouse stationary, it drifts three inches due east and then stops. For no reason at all…”… Cruft Force 3: “Lived In” … “One time in seven when the user starts word or other Office 2000 app, instead of running it pretends it is installing itself for the first time and starts a setup program” …
… Cruft Force 8: “Decrepit”: “…The SETI screensaver overnight creates 312 copies of itself in an impressively expanded system tray that fills half the screen”…
We recommended this to Apple to use instead of their silly “Twitch Over From Windows” campaign, but really it should be etched onto the side of space probes to warn advanced extra-terrestial civilizations that if they get any closer to Earth, they face asymmetric warfare.
Stob saves plenty of scorn for middle management and the schemes they introduce to justify their positions.
Especially memorable is the “code review” – a fad in the early 1990s, where Verity is upbraided for failing to record the return value of a printf() statement, but flirts her way out of trouble. And any Microsoft Certified Professional will recognize the BSY or “Bill Says Yup!” examination. Or level 2, BSYI, the “Bill Says Yes Indeedy” exam. The ISO 9000 program gets repeated attention, too.
Verity’s BFG is the literary parody, and we’ve praised the History of the Borlandites epic here before, faithly capturing the rhythms of the King James I Bible. There are many more here, but the pomes are probably the best. These are incredibly hard to do well. Auden’s Night Mail is note-perfect, and you can imagine Verity’s excitement when she discovered that Longfellow’s Song of Haiwatha borrowed its meter from the Finnish national epic Kaleva.
Finnish, you say? Away she goes.
In a city called Helsinki
Capital of icy Finland
Where the days are dark in winter
Where the nights are bright in summer
Where no mother’s son drops litter
(Finns are very down on litter)
Dwelt a Swedish-speaking youngster
By the name of Linus Torvalds
“Linus” being Shulz for blanket
“Torvalds” simply meaning Torvalds
Although Verity says she wants to rebuff, in advance, any suggestions that the collected columns resemble a social history of computing, it’s still an amazing potted history of man’s inhumanity to man in the name of programming. If the lady could curate a computer museum, what a place it would be. And section two, “1995-1999: The Rasp of The Modem”, could give it its name. Modern historians forget what a gruesome task programming the x86 segmented architecture using MS-DOS interrupts really was. And then how good that suddenly looked when Microsoft introduced OLE and COM. Stob finds an article in the Microsoft-published Developer Network magazine (MSDN) that begins, “I love COM. COM is good. Like a fine pilsner or ale, COM never disappoints. In fact, the more I look at COM, the more I like it.”
Years later, after Microsoft discontinues OLE and COM, Verity finally encounters an example that works.
“I for one still feel a thrill of excitement and surprise when Word does what I asked it to, often followed by a second thrill, of a different kind, when it abruptly stops doing so.For a long time the big problem with Automation, in my opinion, was the lack of robust and realistic examples showing what it could do—especially where Outlook was concerned. Happily this shortcoming has in recent times been addressed, and addressed in spades.
Of all the script viruses, “I Love You” is still my preferred source of useful snippets for manipulating the Outlook address book, even if its author does insist on spelling mail “male.” By the way, ILY also contains some good stuff demonstrating the VB file system object – I would lobby for its inclusion in MSDN, but I suppose it is too late now.
Lovely. And true.
About Verity herself, little is known – except that she has an older sister, Parity Stob. But this might well the funniest book written about computing, and you should treat yourselves without delay.