Sometimes I feel sorry for myself because I spend most of my waking hours inside a cube. Sometimes I sleep there too. Then I feel even sorrier. But on the other hand, some people are so much worse of than I am. My cube is much better than this guy’s, but the bugs I deal with are much more insidious. If you don’t believe me, read Ellen Ullman’s “The Bug“.
I think of my life as one long developing and debugging session. I try to improve my software and hardware, fight bloat, load more data in my databases, find new algorithms for doing things. And of course my life is full of little bugs, inefficiencies, crashes and weird behavior. Instead of making coding my way of life I try to make my way of life be more like coding.
There are three classics of the genre of the heroic computer geek saga. First there’s Tracy Kidder’s “The Soul Of a New Machine“. Second is Douglas Coupland’s “Microserfs“. Third is G. Pascal Zachary’s Show-Stopper!. Pascal’s first name which he hides behind the initial “G” is Gregg. Yep, Gregg.
Now I would like to add another book to the list. It’s Ellen Ullman’s “The Bug“.
To describe what these books are about I need to borrow a name of Cordwainer Smith’s short story – The Burning of the Brain. Or Harlan Ellison’s I Have No Mouth and I Must Scream. Those are the things that come to mind when I think about the heroes of these books.
Also comes to mind the episode of NYPD Blue where a doctor tells detective Simone that there is a possibility that the LVAD (Left Ventricular Assist Device) balloon pump might start “chewing up” his body. A poor choice of a metaphor in that case, but a very good one to describe what happens to the bodies and minds of the heroes of these books, be they real life superhuman engineers like Dave Cutler and Steve Wallach or more human but fictional protagonists of “Microserfs” and “The Bug”.
“The Bug” has three main characters. A tester on her way of breaking out from the cocoon of useless liberal arts degree holder and becoming a QA engineer not only in title but in life; a miserable antisocial software engineer in a fight of his life; and a software bug called The Jester.
At work I use Joel Spolsky’s most excellent bug tracking application called FogBugz. My project manager started calling especially nasty bugs “fugs”. Well, The Jester is a “fug” to the power of 10. To get the feeling of vertigo, the sense of spiraling into an abyss that “The Bug” invokes, i suggest listening to a piece titled “Spiral” on John Coltraine’s famous “Giant Steps”.
And here’s my favorite quote from the book:
“Look, Levin. Programming starts out like it’s going to be architecture–all black lines on white paper, theoretical and abstract and spatial and up-in-the-head. Then, right around the time you have to get something fucking working, it has this nasty tendency to turn into plumbing.
“No, no. Lemme think,” Harry interrupted himself. “It’s more like you’re hired as a plumber to work in an old house full of ancient, leaky pipes laid out by some long-gone plumbers who were even weirder than you are. Most of the time you spend scratching your head and thinking: Why the fuck did they do that?”
“Why the fuck did they?” Ethan said.
Which appeared to amuse Harry to no end. “Oh, you know,” he went on, laughing hoarsely, “they didn’t understand whatever the fuck had come before them, and they just had to get something working in some ridiculous time. Hey, software is just a shitload of pipe fitting you do to get something the hell working. Me,” he said, holding up his chewed, nail-torn hands as if for evidence, “I’m just a plumber.” “
“This late in the development process, bugs are often passed along, or “punted,” to the next Windows release–Longhorn–if they’re not sufficiently problematic.
On the day I attended, one feature group had four of its bugs punted to Longhorn because they had failed to shown up for War Room. When someone argued that they should be given another day, Wanke simply said, “F#$% ’em. If it was that important, they would have been here. It’s in Longhorn. Next bug. “
I bet that when Dave Cutler was around, nobody missed meetings like that. Probably because Cutler would have punted them.
And this is just a good proof of what Joel keeps saying about superstar developers :
“I went out and handpicked the three best developers on the team and said, ‘just go and fix it.’ One developer fixed over 7,000 references to [Windows] .NET Server. Let’s just say that there are people I trust, and people I don’t trust. I told these guys, ‘don’t tell me what you’re doing. Just do it.”
From the first part of the article
“Originally, we were targeting NT to the Intel i860, a RISC processor that was horribly behind schedule. Because we didn’t have any i860 machines in-house to test on, we used an i860 simulator. That’s why we called it NT, because it worked on the ‘N-Ten.’ “
Huh. Now they tell us.
I’ve been fooling around with Amazon.com SDK today. I’ve always wanted to write a wishlist manager. I tried to export my wishlist out, but not all records are being returned. Looks like it’s a known bug according to their bulletin board. Ok, I guess I’ll have to extract it page by page (it seems to be working a page at a time).
At the same time I discovered a silly bug in the way wishlist results are displayed. To reproduce” modify “registry.page-number” part of the query string in the url, to jump a few pages forward. Then press “previous button” : numbering of items will turn to negative numbers. Yeah, pagination is usually tricky to code right. But if even I can do it, so should Amazon programmers.
Regular shopping cart pagination uses “pg” token, and works ok with this manual jump.
Right now I am in the process of consolidating all of my information in a hyperlinked map. The tool I am using is called Treepad. But it’s late, I’ll write more about that later. Good night.