Ex Bibliotheca

The life and times of Zack Weinberg.

Thursday, 31 January 2002

# 10 PM

Whew, what a week... barely time to stop and take stock. And it's not over yet; have to run out the door and help Sumana move more. But, check out my project for the class I'm taking. It's been ages since I had a muse move into my head, I forgot how much of a rush it is.

Monday, 28 January 2002

# 11 PM

I mailed out a ton of stuff: mostly bills. I wonder how the amount of money I currently waste on parking tickets each month compares to the additional surcharge on the rent to get a space behind the building. I wouldn't be surprised if it's about the same.

Also, generated and sent off letters to various junk-mail companies requesting to be removed from mailing lists. I'm tired of getting credit card offers which can't even be thrown out for fear of having someone fish them out of the trash and send them in. The thing is, this shouldn't be necessary in the first place. We don't put up with opt-out when it comes to electronic mail; why should we put up with it in paper mail?

(opt-out.cdt.org is a great resource for doing this sort of thing. Just fill in the form and it will give you a series of letters to print out and sign. Of course, I had to do it five times because Mozilla decided to crash every second time I asked it to print the page.)

It's raining outside. This morning, apparently, it was sort-of snowing in Granite Bay where my boss lives.

Time for dinner, then fill in backlog of time sheets so I get paid for this month...

# 3 PM

The Christian Science Monitor has an article today about a growing public debate in Arabic-speaking countries over the link between political oppression and militancy. Definitely worth a read.

(You're probably thinking, isn't that the propaganda sheet run by that bizarre sect that thinks all disease is illusory? Yes and no. It is run by that bizarre sect (the Church of Christ, Scientist) but it's an independent, secular newspaper with high journalistic standards. They report all sorts of stuff that doesn't make it into the big media outlets. I haven't read it long enough to get a good sense for the spin they like to put on events; it's definitely different from the spin you get from more popular sources. There is one religious article each issue, but it's clearly labelled as such.)

# 5 AM

Wheee, I love it when I discover two different Mozilla bugs (122104, 122109) in the course of writing a journal entry.

# 4:20 AM

Wheee... seems like every time I report bugs in Mozilla they turn out to be duplicates of bugs with much smaller numbers.

Wheee... five copies of a Windows mail worm sent to a mail alias I probably shouldn't be on anymore, but still am.

Wheee... sorted most of the papers cluttering this place up, filed them away carefully, and labelled all the file folders. I've been needing to do that last for years. Some of the labels are silly: "Mathoms", for instance, right next to "Useless Manuals."

How long should one hang on to old bank statements for? I've got every last one of them since I moved to the Bay Area back in 1999. I doubt I'll ever need them, but I hesitate to throw them away...

Sunday, 27 January 2002

# 10:45 PM

The kitchen and bathroom are clean. I didn't make it to the grocery store, and it's a bit late now. I think I'll go out to dinner (the kitchen is still drying out, so I'd have to do that anyway) and then spend the evening picking up clutter and vacuuming the rest of the apartment, and that will be enough.

All the time I was cleaning I was imagining an article for ReadyMade magazine about how to clean your apartment. The mag is aimed at the twentysomething-slacker set, they might appreciate such an article. But I'm not sure whether I can cop enough style to write it the way they'd want it.

Edited the previous entry to be less confusing.

Mozilla's built in HTML editor is still too slow be useful. Come on, people, make the cursor keep up with me.

# 7:30 PM

Seth provides a link to a fascinating paper, On the (Im)possibility of Obfuscating Programs, which demonstrates that it is not in general possible to write a program that translates arbitrary code into unintelligible form. They can do this despite the existence of thoroughly obfuscated human-written code: as they acknowledge up front,

Indeed, any programmer knows that total unintelligibility is the natural state of computer programs (and one must work hard in order to keep a program from deteriorating into that state).

The catch appears to be that their notion of obfuscation is a lot stronger than the intuitive one. They define it to be impossible to extract any information from an obfuscated algorithm other than that available from running it as a "black box." For instance, an obfuscated algorithm could contain secret data (such as an encryption key) without any fear of its being compromised.

By contrast, the intuitive notion of obfuscation is more like, given the source text of an algorithm, an observer cannot determine the algorithm itself, but may be able to extract other information. For instance, an embedded encryption key could be recovered. This is much weaker, but also much harder to formalize. It would be interesting to see if it could be formalized, and if so, what could be proved about it.

# 4:30 PM

Okay, now to worry about Windows IE mangling the page. This time I think it's my own damn fault for using absolute positioning and pixel sizes. mozillaZine uses table-cell positioning instead, which may work better. IE also screws up the inter-paragraph spacing. Again, I think it's because I've written excessively clever CSS which doesn't mean what I thought it meant, but winds up looking okay in Mozilla anyway.

But I'm not going to muck with it today. I'm going to make myself an omelette, then I'm going to clean the kitchen and bathroom, and then I'm going to go buy groceries.

I wonder if there's any social situation worse than watching two friends have a lovers' quarrel in front of you.

Here's another great quote from an HCI paper:

...A coprocessor of largely unpredictable behavior (i.e. a human user) has been aded, and the systems algorithms have to mesh with it. There is no data sheet on this coprocessor, so one is forced to abandon the idea that one can design one's algorithms from first principles.

Saturday, 26 January 2002

# 8:30 PM

I've applied a hack to prevent Netscape 4.x from loading the style sheet for this page—it has serious bugs in its CSS implementation, such that the page comes out looking awful. Much better to ignore all the styling and have the page come out looking plain.

The hack, in case you're curious, is to add media="all" to the <link> tag referencing the style sheet. This trips another bug in Netscape 4, causing it to ignore the style sheet.

I'm not going to stop using modern markup, such as &mdash;. Have you considered upgrading to Mozilla?

# 8 PM

Yesterday was a busy day... back to work, after having moved furniture the night before and not gotten enough sleep. (I guess I'm too old to sleep on someone else's floor anymore.) Made some progress finding the bug in that 13-page debugging dump I mentioned before. I now know what is wrong, but not why it happens.

For dinner, went to the Bubba Gump Shrimp Restaurant on Pier 39 in San Francisco with the gang from work (Mike, Mike's wife Bets and baby son Edward, Todd, Thomas, and this guy named Jim who turned up - apparently he used to work for Wind River). Good company; decent food; I didn't care for the restaurant's style. But then I wasn't that impressed by Forrest Gump (the movie).

Afterward, we watched the remake of Planet of the Apes at Todd's place. This is worth seeing for the makeup, which does an amazing job of turning human actors into believable apes, with individual faces and a good range of expression. Unfortunately, that's not enough to produce a good movie. The plot is difficult to believe and the characters are of the finest cardboard (with the possible exception of the villain).

Must now watch the original and see how it compares: I expect not so good makeup and much better plot.

Thursday, 24 January 2002

# 11 PM

Now I know why my alarm clock was blinking twelves at me the other day: all afternoon, the power to the whole apartment would cut out for five seconds periodically. There's nothing obviously wrong with the fuse box, I wonder if these are area-wide brownouts. Fortunately I have a UPS so the computer didn't crash.

I've pretty much concluded to take the user interface course and not the compiler course. I'll learn more.

This weekend's assigned reading for the UI course is from a book titled Usability Engineering. I'm not sure if it's the one by Jakob Nielsen (we were given copies of the chapters assigned). It has some funny quotes:

Validity is a question of whether the usability test in fact measures something of relevance to usability of real products in real use outside the laboratory.

...[U]sability test subjects are not normally bodily harmed, even by irate developers resenting the users' mistreatment of their beloved software...

Now to do some dishes and then help Sumana move furniture.

# 5:10 AM

About to run off to the NTL meeting.

Did finally manage to get halfway decent airfare to Minnesota.

# 3:30 AM

how to make pasta sauce

a.k.a. "Hey, I don't need a jar of the stuff, I have all the ingredients right here."

  • 2 tomatoes
  • 1 onion
  • 9 mushrooms
  • a handful of black olives
  • 2 large cloves garlic
  • spices: black pepper, oregano, basil, tarragon

All these numbers are fungible: feel free to tweak them as you see fit. The 2:1 tomato:onion ratio is pretty important, though. It's okay to leave out the mushrooms or olives if you don't like them, or substitute other veggies. (Well, I don't think carrots would work.)

Chop up all the vegetables into appropriately sized bits. I like my onions and olives fine; my garlic, tomatoes, and mushrooms chunky. Put them in separate piles.

Start boiling water for the pasta.

In a largish pan, heat 1 tbsp olive oil and a pinch of salt. When it's hot, throw in the onion and stir-fry until it has begun to turn transparent. It's a good idea to reduce the temperature somewhat at this point. Now add the mushrooms. Continue to stir until the mushrooms are brown and have shrunk a bit. Add the garlic and olives. Continue until the garlic turns just barely yellow.

Now dump in the tomatoes, raise the heat again, stir until the tomatoes begin to disintegrate and there's enough liquid in the pan that you are no longer frying the veggies. Add the spices, mix everything up, cut the heat to a simmer and put a lid on the pan.

If you've timed it right, the pasta water will be boiling now. Throw the pasta in the water and leave both sauce and pasta to cook for about ten minutes. Grate some cheese while you're waiting. Drain the pasta, put it in a bowl, and pour the sauce over it. Add the cheese, mix well, eat.

a correction

The pile I picked my goddamned internet sticker from was not a junk pile, Sumana informs me. It was just a pile of stuff.

Wednesday, 23 January 2002

# 10:45 PM

Earlier today I was walking down a street, sun on my right side, big plate glass window on my left. Looking down, I saw I had two shadows: one going to my left, as you'd expect, but another going to my right. This made no sense for a moment, then I happened to see my reflection in the window had two shadows too. And it dawned on me: the shadow to my right was the shadow of my reflection, projected back out into the space I was in. It was a sensawunda moment.

I read a neat review of an exhibit at the Carnegie Museum of Art about the history of aluminum. I have nothing to add to what they say about aluminum, but I would like to point out the place about two-thirds down the page where the author tried to write "Otto Wagner (1841-1918)" and the message board program turned "8)" into a gif of a smiley face wearing sunglasses.

Oh neat, when you copy and paste a chunk of text out of Mozilla with an image embedded in it, Mozilla inserts the image's alt text in its place.

Tuesday, 22 January 2002

# 7:45 PM

I'd just like to say that wget kicks ass. That is all.

# 2:30 PM

No dreams last night. Instead, I got to wake up at something like 3 AM and see my clock blinking 12:00 at me. There must've been a power cut, or I kicked the plug in my sleep (it's right next to the bed). I spent the rest of the night waking up periodically and wondering what time it actually was and how I'd know it was time to get up and go to class.

Of course, when I did get up—awakened by the sound of the downstairsnik running her shower—I found that it was only 7 AM, and that the earliest class I have today is at 11 AM (not 9:30 as I'd thought).


These are what I'm considering:

CS 264: Implementation of Programming Languages
Compiler construction. Lexical analysis, syntax analysis. Semantic analysis code generation and optimization. Storage management. Run-time organization.
CS 260: User-Interfaces to Computer Systems
Design and implementation of user-interfaces to computer systems. Software and hardware architectures for personal workstations. Object-oriented programming systems. Form-based user-interfaces. Window and display management abstractions. Case studies of naive- and expert-user interfaces.

I'm only going to take one, but I'll sit in on the first couple meetings of each. Unless 264 is amazingly exciting, or 260 amazingly dull, I expect I'll end up taking 260.

# 12 AM

I'm actually writing this entry at the same time as the one for 9:30 tomorrow. Is it cheating to backdate diary entries? I certainly meant to write this entry at 7PM yesterday, but I was too tired.

Anyway... Today I took the bus to work. That was fun. The bus doesn't go all the way to work, but all the buses in this town have bike racks bolted to their front bumpers, so I could load my bike on there, get off about half a mile from work, and pedal the rest of the way. (I have to wonder what it's like driving the bus with a bike rack jutting three feet out in front of it. The drivers don't seem to mind, though.) There were lots of interesting people on the bus with me. One little girl, must've been about four, was running all over the bus ignoring her mother... then this elderly woman got on the bus and managed to get her to calm down in seconds.

It rained in the middle of the day and I thought I was going to regret the decision, but then it stopped. And, not having to drive around for ages when I get home, looking for parking, is definitely worth it.

The current bug I'm working on is rather intractable. It's a case of incorrect initial code generation. The initial code GCC generates, before any optimizers get their hands on it, is remarkably bad. Bad to the point where it interferes with human comprehension. I printed out a thirteen-page debugging dump of the function being miscompiled, taped it to my door, and drew all over it in red and blue ink to try to trace the control flow. Having done this, I still didn't know what was wrong.

If I can get my hands on a digital camera, I'll take a picture of the mess and post it here for your amusement.

One of the managers came by as I was drawing on the door and cracked up—I thought he was laughing at the extremes I was going to, but it turned out he just liked the joke bumper sticker I'd taped under my name plate on the wall. It says goddamned internet in big white letters on black. There's also some website pointer, but I don't remember what it was and google can't find it. According to the manager, this is a M*A*S*H reference. That show was long before my time, of course; I just picked the sticker up from Sumana's junk pile, thinking it was funny in its own right.

Monday, 21 January 2002

# 1:30 PM

I usually have dreams that are too incoherent to make weblog material, even if I remember them. Today, though, my subconscious decided to hand me a perfectly realized narrative fragment, illustrating what might have happened if the One Ring had been found by two Ankh-Morpork City Watch officers instead of Sméagol and Déagol. It went something like this:

"Oi, I found this ring, makes me invisible when I put it on."

"Magic ring. You don't wanna mess with magic rings. We'd better hang on to that till a wizard can come and look at it."

"I wonder what happens if I throw it inna fire, see?"

"You idiot, stop—dammit. Gimme them tongs."

"It's not hot at all... oh, lookit, writing."

"I cannot read the fiery letters."

"Yer right, we better get a wizard to come and look at this. Y'know any wizards?"

"There's that one in the gray beard and blue hat, comes by every now and then...what was his name? Mithrandir?"

I don't know why the one who speaks in dialect decided to throw the ring in the fire. Nor do I know what happens next, but I suspect the story ends a lot more peacefully for everyone involved. Well, except that now you have Ankh-Morpork inserted into Middle Earth, that could get messy.

# 3:45 AM

Called a salvage yard to see if they'd be interested in my radiators, but they said they had plenty right now. Still, that bodes well for eventually being able to get rid of them.

In the meantime, I've shoved them into a corner of the second floor hallway (at the bottom of the stairs to the roof) where they shouldn't be in the way, avoiding the whole question of how to get them down the stairs. I am still amazed at how heavy the damn things are. Anyone have a block and tackle I can borrow?

There's also the nagging question of what the landlord will think. Odds are they won't even notice, but perhaps it would be best to dump the radiators in the basement rather than selling them.

With a little WD-40 and a big honking wrench, it was easy to unscrew the union holding each radiator to its valve, but the valves themselves stubbornly refuse to come off the steam pipes. This is no big deal—even if I could get the valves off, it would not free up any significant amount of space. And right now the valves are preventing the apartment from being flooded with steam should the boiler suddenly start up (as if). My sense of aesthetics is offended, but I think my sense of aesthetics will just have to deal.

In other news, I got half the apartment cleaned (the easy half), and fixed a bunch of bugs in GNU C++ (the easy ones).

Sunday, 20 January 2002

# 9:45 PM

I decided to remove the radiators from my apartment. They're old cast-iron steam radiators, the one in the living room must weigh two hundred pounds. The building hasn't used steam heat in decades, so these things just sit in the corners of the rooms collecting dust and taking up space which I need for more bookshelves.

Right now they're in the second floor hallway, and I'm pondering whether this was such a good idea... how do I get a two hundred pound hunk of cast iron down the stairs without hurting someone? Having got it down the stairs, what do I do with it?

# 3:30 PM

frantically catching up

Friday: went to Sumana's party. The lasagna was a success. Met all sorts of interesting people. What's Going On was a success, too.

Saturday: did laundry. Observed other people doing laundry. A dialogue:

STAFF:You put all your clothes in the machine and then you disappeared for half an hour without starting it. People wanted to use the machine.
MAN:We went away for five minutes to buy detergent.
STAFF:(points at clock) It was half an hour.
MAN:Whatever. to his WIFE: See if we ever come here again.

Somehow, this dialogue reminds me of a story I read...

Afterward, went and had dinner with my grandparents.

bend your mind

with some ambigrams. I particularly like the first stanza of Jabberwocky.

# 6:10 AM

Why am I still awake?

Friday, 18 January 2002

# 4:30 AM

Just got back from a kaffeklatsch with a bunch of Bay Area SF fans. Present were: me, Shweta, Dorothy and Hal Heydt, David Goldfarb, Kate Schmidt, Eric(?)-who-works-at-Cody's, and I'm fairly sure I've forgotten someone.

Thursday, 17 January 2002

# 10 PM


My CD-ROM reader/writer regularly wedges itself into a state where it won't do anything at all until I reboot the machine. I'm 99+% sure this has something to do with the ghodawful way IDE CD burners are handled under Linux. There's a translation layer in the kernel which makes the drive look like it's SCSI, and then you stack the SCSI CD-ROM driver on top of that. For burning and ripping, which is most of what I do with the damn thing, it's even worse: user space talks raw SCSI commands to the translation layer.

I understand that the situation is somewhat more sane under 2.4, however, everything else about 2.4 just makes me want to run away screaming, or even switch to FreeBSD. Maybe Marcelo will manage to straighten it out, but I'm not real optimistic.


  • 1 box lasagna noodles
  • 1½ cups ricotta
  • 1½ cups parmesan cheese
  • mushroom sauce (3 cups):
    • 3 tbsp olive oil
    • 3 cloves garlic
    • 1 onion
    • 2 cups mushrooms
    • 28 oz plum tomatoes, canned
  • spinach
  • salt and pepper to taste


# 3 PM

the dirty dishes positive feedback loop

...is a common plight among lazy young men living alone, such as myself. It goes like this: One cooks a meal, and then puts all the dirty dishes in the sink intending to wash them later. When the time for the next meal comes around, one discovers that some essential piece of kitchenware is dirty. One then makes something which does not require it. Repeat until there are no clean dishes. At this point it is impossible to fit all the dishes into the drying rack in one batch, which provides another excuse not to do the dishes at all.

Most people in this bind will go out to eat, but I've got this psychosomatic quirk which makes it really easy to ignore the fact that I'm hungry, even as most higher cognitive functions shut down from lack of blood sugar. I get into a mental state where taking any action at all, even eating, is too much effort. If I do do something, it's grumpily and ineffectively. This has been known to go on for entire days.

Which is a roundabout way of apologizing for yesterday's entry.

is sex necessary?

...is the title of a charming little book by E.B. White and James Thurber, published in 1929 and still disturbingly accurate in its skewering of American courtship rituals and the associated support industries (psychotherapists, in particular).

It also makes a marvelous source of sound bites, such as:

Successfully to deal with a woman, a man must know what type she is.

It is even more difficult, and just as unimportant, to arrive at a zodiacal classification, because that is altogether dependent upon determining the year the woman was born, and because, even if you should ascertain her date of birth, the pishtosh of analysis and prediction which derives therefrom is a lot of mediæval guesswork.

If you don't care what punctuation mark you put after "darling," the chances are you are in love—although you may just be uneducated, who knows?

for those about to rot

...is an album I bought last week (see below), and this segment is to warn y'all not to do the same.

It was billed as "a tribute to AC/DC." This, I thought, would be a fine thing to have; AC/DC was not the greatest rock band of all time, but they did write some songs which are pleasant to hear now and then. As such, they would fit nicely into my current music- listening scheme, which may be described as "rip all one's CDs to disk, throw all the tracks except the ones I can't stand to hear ever again into an XMMS playlist, shuffle, and leave on all day."

The trouble is, the reason AC/DC songs are fun to listen to is their lyrics, which are clever and original. Bon Scott and Brian Johnson sang the lyrics so you could understand them. The cover bands on For Those About To Rot don't. This leaves you listening to the music, which is nothing special, and is obscured by the growling noises that I suppose are the attempt at singing.

Oh well — what I get for buying albums off the clearance rack because they're $1.95 and have scantily clad women on the cover.

# 2 AM

MTYWTKAIC has turned into a morass of HTML problems, so I'm going to put it aside for awhile.

The toilet broke. The landlord wouldn't let me fix it myself and bill them for the parts, and then the plumber he sent wouldn't believe me when I told him what was wrong. Grumble.

At work, I continue to fix problems that were fixed two years ago in upstream GCC.

Wednesday, 16 January 2002

# 5 PM

son of the living dead css

Discovered that using Mozilla's "text zoom" feature makes the link box look bad, because it doesn't resize with the text. Unfortunately, the obvious fix (use sizes in ems) doesn't work either. An em in the link box isn't the same size as an em in the content, which makes relative positioning a real pain. And they don't seem to scale right. I could still get the text to leak outside the yellow background.

Am writing up an explanation of what I was talking about in the previous entry: More Than You Wanted To Know About Inverted Commas. (Not complete yet.)

Sunday, 13 January 2002

# 9 PM

Figured out how to change the fonts in XFree86 4.1 to get the old left and right single quotes again. Too bad it involves recompiling X11 from scratch - the Debian packages aren't set up to let you regenerate just the fonts.

# 12:30 AM

i bought too many records at amoeba music

My sister Dara came up from Stanford and spent the day with me. We went to the Haight and wandered up and down for a couple hours. These days it's been yuppified, most of the stores are chains of one stripe or other. But Amoeba is still there and still doing gonzo business selling you all the records you didn't know you wanted until you saw them in the rack. My haul:

  1. A Slight Case of Overbombing (Sisters of Mercy)
  2. Candy from a Stranger (Soul Asylum)
  3. Days Of Open Hand (Suzanne Vega)
  4. For Those About To Rot (a tribute to AC/DC)
  5. Loaded (The Velvet Underground)
  6. Mink Car (They Might Be Giants)
  7. Ramones (The Ramones)
  8. Stanford Prison Experiment (The Stanford Prison Experiment)

When I got home I found a Usenet post pointing me to a C&W band, Luther Wright and the Wrongs, who have remade Pink Floyd's The Wall in bluegrass. They call it Rebuild the Wall. If I'd known about this before going to the city, I'd have been forced to look for it at Amoeba. And of course they would have had it.

fear and loathing in millbrae

When I say "My sister came up from Stanford," what I actually mean is "Her boyfriend needed a ride to the airport, so I drove down there yesterday afternoon, had dinner with them, took him to the airport, and then she stayed over at my apartment and we hung out today."

Now my attitude to driving in the Bay Area is, always assume it'll take twice as long as it ought to, because of traffic jams. But by some miracle there wasn't any traffic on I-280 last night, so we got to the airport about an hour before we needed to.

San Francisco International Airport is not really in San Francisco; it's south of the city proper, in Millbrae. What do you do in Millbrae for an hour? Well, despite being best known, to me anyway, as the home town of a plot-device character introduced in the last ten pages of Microserfs, it does have a halfway decent all-night diner. The place is owned by a windsurfing nut: on the walls there are all these pictures of the guy windsurfing with various improbable people, such as state senators. Everything is painted various shades of a color best described as Crayola "magic blue." And it's the only place I've ever been where puff pancakes were on the menu.

Overall it was the sort of place where I would not have been terribly surprised if some avatar of the road experience in America walked in the door. Shadow comes to mind.

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, 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.


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.


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.


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

Wednesday, 9 January 2002

# 4 AM

I got this fortune tonight at a Chinese restaurant:

You can depend on the trust of the collective.

Tuesday, 8 January 2002

# 6:45 PM

More fun with CSS

Redid the layout again, this time with position: absolute. This lets me put the links at the bottom of the HTML source, where they don't interfere with adding new entries or with people reading without CSS. It should also be a bit more robust. Floats have this nasty habit of deciding to shift around, often leaving a long trail of yellow background behind.

CSS, it seems to me, has serious issues apart from the sea of browser bugs. A lot of the tools one would want in order to control layout are either missing or don't work the way you would expect. For instance: there is no way to measure the total displayed size of a box. You only get the size ignoring all padding and borders. There's no way to specify "the width of the display less N pixels." There doesn't appear to be any way to say "put this below all other boxes on the page, even the ones with absolute positioning" unless you know all the box heights. (This last is why there isn't a link to the HTML validator at the bottom of the page anymore.)

Geopolitical ramblings

Several of my friends are Indians, and they are understandably nervous over the recent tensions between India and Pakistan. Last week in conversation Sumana argued that the partition of India should never have happened: the Hindus and Muslims had gotten along just fine living in the same country for centuries. When the British rubbed their collective noses in their differences by insisting on partition, however, everything blew up.

This is not a position which would ever have occurred to this white boy. I can't even evaluate it for historical accuracy: who originally suggested the partition, what was their agenda? Is it legitimate to blame the British? However, if we look at some of the other places where there's a conflict between ethnic or religious groups, we see that it's often over a partition line, existing or proposed. Israel versus Palestine, for instance, fits the exact same pattern as India versus Pakistan: continual conflict over the location of a partition line between two religious groups, who have historically been able to get along in the same country. You might even be able to blame the British again.

Looking farther, you can easily find situations that don't match the pattern along any number of axes. In the former Yugoslavia, the ethnic groups involved in the conflict didn't get along to begin with; the Communist Party managed to suppress the conflict, but only through totalitarianism. In Turkey, the Kurds are genuinely oppressed; partition is one proposed solution. In Bangladesh, political tensions with India are no worse than between other rival countries (although there seems to be some feeling in India that Bangladesh might side with Pakistan if it came down to choosing sides). Czechloslovakia split in half with hardly a murmur.

So what we have, it seems to me, is a topic for some serious historical research. Can we support an argument that partitions of countries along religious or ethnic lines do more harm than good? Can we suggest alternate techniques for dealing with this sort of conflict?

# 4 PM

This is the first entry written before noon.

Yesterday we had an episode of our Shadowrun campaign. I was specifically asked to make it combat-heavy since Dan would be joining us, and his character is a combat monster. (The game normally includes very little combat; none of us are that interested in sitting around rolling dice for hours to find out who has a sucking chest wound.) I did my best, but somehow the first four hours of the session involved no fighting at all, and when they did get into a fight it was over almost instantly.

I'm cursed with PCs who insist on planning beforehand, you see, and believe in not attracting attention. And when faced with a serious threat, they retreat rather than endanger the mission. This puts a damper on "blow things up good" sessions.

Still, it beats hell out of the game I was in in 1994, where we never did anything but blow things up good.

Monday, 7 January 2002

# 6 PM

Last month we had an endless flame war on the gcc development lists about an obscure corner of the C standard. This month, we had another endless flame war about a different obscure corner. That one was just calming down, when guess what happens? Some troll re-starts the argument we had last month!

# 4 AM

Fun browser fact: If you put the document type declaration for strict HTML at the top of your webpage (this means you solemnly promise not to use any deprecated markup) then Mozilla will ignore your style sheet unless the web server gives it the proper MIME type.

# 3:30 AM

I taught Shweta how to read Usenet. She taught me how to make curry. I think I got the better deal.

This is how I get my MP3 collection: someone mentions a song on some newsgroup I read, and I curiously download it, add it to the xmms playlist, listen to it once, and (unless I can't stand it at all) leave it there and forget about it. Usually it's random anime theme music (yeah, I'm an otaku, I admit it) but for some reason I seem to have picked up TISM's song Choose Bad Smack. (Think Monty Python does Trainspotting.) It's playing on my stereo right now. The disturbing part is, I'm tempted to go buy the album.

Half the fun of weblogging seems to be looking up appropriate hyperlinks for all the things I mention. Do I pick Pythonline or montypython.net to use as a reference for Monty Python? It's a beautiful excuse to spend hours surfing websites I normally wouldn't go anywhere near...

Sunday, 6 January 2002

# 9:45 PM

Further cat-vacuuming

I've rewritten the markup of this web page to use cascading style sheets rather than the old hairy nested tables. It's a huge improvement, both in terms of how easy it is to write new entries, and how robust it is against browsers that don't understand the spiffy markup. For instance, the date and time markers are now called out by <h2> and <h3> tags, instead of being table cells. This makes far more structural sense, is easier to type, and if you shut off CSS entirely, it still looks halfway decent.

Having said that, it doesn't work quite the way I'd wanted. The most visually obvious problem is that the yellow block at the left is supposed to be a column as tall as the right column. I haven't found any way to do that. Also, the links have to appear in the source before the content. This is suboptimal for editing, and if you're here with a browser that doesn't do CSS, you have to scroll past the links to get to the content, which is annoying. Suggestions for improvements are welcome.

Saturday, 5 January 2002

# 11:40 PM

Someone else has packaged QMTest for Debian, so I don't have to. This is good.

After hours of effort I still don't have new caption text for What's Going On. This is bad.

The mechanic says my car doesn't need anything replaced. This is good.

On the whole, a good day.

# 5 PM

I've spent the past six hours or so attempting to clean up a bunch of images of text in a font I can't assume people have on their web browsers. These were mistakenly created using Photoshop with anti- aliasing on, and saved as color JPEGs with background set to approximate the background of the web page. All of this is of course the Wrong Thing. They should have been created in non-antialiased black and white, then saved as black and white transparent PNGs. But it's too late for that now, I have to get to black and white transparent PNGs - somehow - from what I've got. Much dinking around with pnmtools has produced things that look more or less crap, but never actually good.

I think I'll go to bed, get up tomorrow (damn, it's already tomorrow. In the morning, then), and see if I can persuade my home box to load up the weird font ("Comic Sans MS") and then I'll re-type all of these things. I'm sure it'll be easier. Lots of people seem to be able to get XFree86 to play with TrueType fonts.

Friday, 4 January 2002

# 7:20 PM

I'm going to Minicon. The time has come to make airplane and hotel reservations.

It costs US$666.00 for two people to fly non-stop from San Francisco to Minneapolis. If you're willing to make a connection through Denver it goes down to $476.

Flying out of Oakland (much closer to Berkeley, my home town) is approximately twice as expensive, and you have no choice but to make connections. These connections involve airplanes with model names like "Fokker 100 Jet."

You might think taking a train would be cheaper, but it isn't. It costs $646 for coach fare and an additional whopping $1684 to upgrade to a sleeper cabin. You need a sleeper cabin, because the train takes three days each way. And people wonder why Amtrak doesn't make any money.

# 6:30 PM

Everyone has a weblog these days, why not me?

It's somewhat disturbing just how much time one can waste trying to write "clean" HTML. After an hour and a half, I'm declaring this bastardized version of the Electrolite template Officially Good Enough. Next, I spend a day or two vacuuming the cat writing clever scripts to generate updates.

Other entertaining discoveries for today include:

Why yes, I am repackaging software. QMTest, specifically.