Ex Bibliotheca

The life and times of Zack Weinberg.

Friday, 11 January 2002

# 4:30 AM

For some reason, washing dishes in lukewarm water makes me feel colder than I would if it were cold water.

# 3 AM

plumbing

Plumbing, it seems, is not unlike software maintenance in one key respect: when you start fixing something, sometimes you wind up replacing way more stuff than you expected. Take my kitchen sink. The faucet has had one thing or another wrong with it since I moved in. The handyman for the building has come by and replaced valve washers, packing, etc. repeatedly; each time it would be fixed for a short time and then fail again, worse than before. I particularly liked the failure mode where a steady stream of lukewarm water comes out of the faucet irrespective of the settings of either valve.

The handyman finally decided that the whole faucet had to be replaced, and I got to sit home all of today and wait for him to show up and do it. Once he pulled the old faucet off the wall, he discovered that the old chrome spacers didn't fit the new faucet. So he had to replace those too; and when he pulled those off the wall he discovered that the horizontal pipe for the cold water was rusting out. In fact, it was so wrecked that he couldn't get it out with a wrench, the visible end of the pipe would just squash shut.

Fortunately there is a special tool for this problem, reminiscent of a blunt-edged, tapered drill bit: you hammer it into the pipe and twist, and it screws itself into the inside of the pipe hard enough to stick and give you enough leverage to unscrew the pipe from the other pipe deep in the wall (which I hope isn't rusting out too!)

Anyway, when all was said and done he'd replaced everything between the spigot and the supply risers, and there had better not be any more leaks.

fuzz

On the subject of software maintenance, one of the more interesting things to do to a program is feed it input which bears no resemblance whatsoever to the input it's expecting to be fed. For instance, very few programs expect to be fed the output of a random number generator, converted to ASCII. This kind of test is called a fuzz test, after a pair of papers (1990 and 1995) by Barton P. Miller et al.

For the past half hour or so I've been doing just this to GCC, and have been pleasantly surprised - the only break so far was a trivial oversight, a routine that wasn't expecting an ill-formed partial parse tree. Of course, plain line noise only exercises the parser, not the deeper layers of the compiler. If I was really twisted I'd write a program to generate random syntactically valid, semantically ridiculous C and see what I got.

politics

Responding to Sumana's response to my babbling about India-Pakistan conflicts:

I didn't mean to imply that she thought it was All Britain's Fault, or that the partition was the cause of all the conflicts in the region. I skimmed over that bit because that wasn't the interesting thing about it for me. The interesting bit was the suggestion that partitions along ethnic and/or religious lines might tend to make conflicts worse or even create new conflict where there wasn't one formerly. Partitions are common in modern world politics, as actual or proposed solutions to thorny problems; and a fair number of people seem to assume they'll just work. It's always good to dig up unexamined assumptions.

niftiness

CSS does the TeX logo. (Your browser should allow you to turn off my style sheet; do that and look at this paragraph again.)