Ex Bibliotheca

The life and times of Zack Weinberg.

Sunday, 30 June 2002

# 2:50 PM

Further to my rant about version numbers: I left out two important ways to do it wrong.

  1. Failing to bump the major number when you should have. A good current example of this is automake. Versions 1.5 and 1.6 of this program are incompatible with version 1.4; therefore, they should have been called 2.0 and 2.1.
  2. Incrementing any component by more than one. This contributes to the pernicious misapprehension that version numbers are decimal fractions. People sometimes do that when they want to suggest that there have been a lot of changes and compatibility is not 100% guaranteed; for instance, Autoconf jumped from 2.13 to 2.50. The proper thing to do, again, is bump the major version.

It is, by the way, okay to delete features without bumping the major version, as long as the upgrade path is straightforward.

# 2:35 PM

Yesterday was the wake for my grandfather. Well, it wasn't a wake in the technical sense. There was just a large afternoon party at my grandmother's house, with about eighty of his relatives and friends invited. No speeches were made and no one got drunk. A proper farewell to a man who had three hundred people show up for his fiftieth wedding anniversary (last year), though.

It was the first time since about nine years ago that I saw all my cousins in the same place; they've done an awful lot of growing in the interim. The eldest is off to college in the fall.

This morning, I set out to make pancakes, only to discover that the maple syrup had gone moldy. I didn't know maple syrup could go moldy.

# 1:05 AM

From Salon's interview with the writer for the new HBO miniseries Wire:

I'll tell you what, this would be enough for me: The next time the drug czar or Ashcroft or any of these guys stands up and declares, "With a little fine-tuning, with a few more prison cells, and a few more lawyers, a few more cops, a little better armament, and another omnibus crime bill that adds 15 more death-penalty statutes, we can win the war on drugs" — if a slightly larger percentage of the American population looks at him and goes, "You are so full of shit" ... that would be gratifying.

I'm impressed that HBO is willing to take on a show like that. It seems, well, real, and to be saying something that needs saying. That's unusual in TV.

Saturday, 29 June 2002

# 12:25 AM

In my mail today was a response to a trouble ticket I'd filed with my DSL provider. At the top was a lengthy block of boilerplate, containing this passage:

Members: Please DO NOT reply to this email, as we will not be able to respond to it or provide additional support.

We will update this with status or resolution via the Customer Support tool in TAC. If you need to make updates or close your support request, please go to [web page].

This strikes me as sheer laziness on their tracking system's designer's part. How fscking hard is it to set up a robot that adds e-mailed responses to the relevant trouble ticket's logs?

But it's not just that tracking system; every fscking bug tracker I have ever used has the exact same anti-feature, except for Debian's. Now let me outline the series of steps involved in responding to a request for feedback, with and without the ability to send responses by mail.

With Without
1. Receive query by e-mail. 1. Receive query by e-mail.
2. Hit "reply" key. 2. Launch web browser.
3. Write response in favorite text editor. 3. Wait for web browser to start.
4. Save message and hit "send". 4. Navigate to relevant web page.
5. Write response in itty bitty form box.
6. Push "submit" button.

I think it's quite obvious that responses by e-mail are better. So why on earth is it that only one bug tracker on the face of the planet supports them?

(To be fair, some other trackers, such as GNATS, claim to support responses by e-mail, but in practice it doesn't work reliably enough to be usable.)

Thursday, 27 June 2002

# 9:45 PM

one nation, under god, indivisible

As has been mentioned all over the place already, the Ninth Circuit has ruled the Pledge of Allegiance unconstitutional, at least as amended in 1954 to include the phrase "under God." This has come in for bipartisan outrage, e.g. a 99-0 Senate resolution objecting to the decision.

So let me weigh in here with my total agreement with the decision. The pledge should never have had any reference to divinity in it, and the Ninth Circuit ruled correctly. I am disappointed that it seems the Supreme Court will not agree. Matter of fact, I would like to see the pledge abolished altogether, but I'll settle for this change.

Seth Schoen speaks far more eloquently on the subject than I can manage. Go read what he says.

ow ow ow

Tried to learn how to wear contact lenses. I did, once, manage to get one onto both my eyes, at the same time even, and back off again. And it seemed like they worked; edges were sharp and all that. The procedure for putting them on and taking them off, however, was unpleasant and painful, and most of the time unsuccessful. If the optometrist had not kept reassuring me that everyone has this much trouble, I would have given up. My eyes are still sore.


I've a copy of Diane Duane's reissued first two volumes of "The Tale of Five" (as an omnibus). This is a wonderful sword-and-sorcery series, which has been very hard to find for years. Well, the first two volumes were not so hard. The third volume was very difficult to find, and the fourth... well, the fourth volume never actually got finished. Supposedly, the third and fourth volumes will be printed in another omnibus later this year or early next. Here's hoping.

seen on the street

Down at Shattuck and Addison there is a piece of public art which I've been walking by for months, and every time it bugs the heck out of me. It's an area of sidewalk that has been sculpted to look like there's lots of human lips poking out of it. So if you walk on this area, you are walking, metonymically, on human faces. I would rather not do that. There is a reason why 'If you want a picture of the future, imagine a boot stamping on a human face — for ever' is such a powerful line. I don't think it was the artist's intent to evoke that frame, but I'm not going to cut him or her any slack on that score. People should think of these things.

On a lighter note, today I saw a couple of pre-teen kids staggering down the street, each carrying two cardboard boxes about as big as they were. It was a Three Stooges moment.

Monday, 24 June 2002

# 7 PM

A programming puzzle for the readership:

Coding in Python, what is the most robust way to write a work scheduler that dispatches assignments to N asynchronous execution threads? Each assignment is the execution of an arbitrary piece of code. Dependencies between assignments are static and known in advance.

It needs to be thoroughly robust against the assignment inadvertently trashing the scheduler or execution thread's private state, failing to terminate, or consuming excessive machine resources; the scheduler should in all these cases be able to recover control, abandon execution of the problem assignment, and continue.

Also, no matter what, a user interrupt must be able to abort the entire thing. I.e. even in the face of assignments maliciously trashing the scheduler, or outright bugs in the scheduler or execution threads, control-C should work.

Ideally, the implementation of this scheduler would be damn fast. Some performance hit is okay. I said "threads" up there, but any asynchronous execution mechanism is fine; I don't insist on the use of honest-to-ghu threads. (Coroutines, however, are no good; I do need to be able to execute assignments in parallel.)

In case anyone is wondering, yes, I already have a scheduler, it's just not nearly robust enough.

# 2:40 AM

Picked up my sister at Oakland airport this afternoon and took her into San Francisco, where she's living this summer. The airport still hasn't recovered from post-Sep.11 security "upgrades"; the lines for the checkpoints are still just as long. Also, since the building was built on the assumption that people who are meeting arriving flights could come to the gate, there is nowhere to get so much as a newspaper on the outside of the security perimeter. And you can't cross the security perimeter without a ticket anymore. Feh.

I got to meet all of Dara's housemates — she's living with a bunch of friends from Stanford. We all had dinner and watched Jumanji, which they had a tape of. This is a silly comedy with a relatively non-lame performance turned in by Robin Williams. It came out in 1995, and it's kind of depressing how poorly the CGI effects have aged. They looked really spiffy back then; now they seem obviously fake.

Sunday, 23 June 2002

# 2:40 AM

Another week, another game session. The PCs are trying to rescue a whole bunch of kidnapped children from a farm. The kidnappers, you see, have holed up on this farm, taken the farmers hostage, and are threatening to kill everyone if they don't get given safe conduct out of the country. The farm, incidentally, is guarded by barghests — not because the kidnappers brought them along; they belong to the farmers. So however they get in, they can't let the barghests notice, or they'll strike up a howl and alert the kidnappers (and likely maul the PCs to death too).

The players devoted the entire session to planning. Frankly, I like having players that would rather spend that long making plans than risk getting any of the hostages or kidnappees killed. Or the kidnappers, for that matter. The PCs have already once been forced to trek to the land of the dead to interview an adversary who inconveniently killed himself before he could be questioned; they're not going to get themselves stuck in that situation again.

It does, however, mean that we made no use whatsoever of about half the background detail that I worked up, that being the half that only becomes evident once they get on-site. (Oh yes, it gets even hairier.)

Thursday, 20 June 2002

# 5:45 PM

a rant about version numbers

Version numbers, as you know, Bob, are those odd digit strings attached to computer software. They look like "1.2.4" or "3.1.0". Now, lots of people are out there releasing software without the slightest understanding of how to generate these numbers, so here is my own explanation, after the style of another such (which neglects to say anything about the its/it's mess, but never mind).

This is how to do version numbering right:

  1. Realize that these numbers are not decimal fractions. They are integers separated by periods. That means version 1.99 is older than version 1.100, and version 1.100 is not the same thing as version 1.1.
  2. Only offically released versions of the program get version numbers. Development snapshots don't. Nor do test releases.
  3. A version number should have three components: 1.2.0 or 1.2.3. If the last component is zero, it may be omitted, but that's just shorthand: 1.2 and 1.2.0 are the same thing.
  4. Each of the three components has a meaning:
    • The first is the major version. You increment this number only when you have made changes that break backward compatibility. This is to be avoided if at all possible.
    • The second is the minor version. You increment this number when you release the result of a development cycle, having made lots of improvements, probably introducing new bugs as well.
    • The third is the patch level. You increment this number when you release the result of a bug-fixing cycle. A patch release should have strictly fewer bugs than the previous one, and no additional features.
  5. The first official release of your program is 1.0 (aka 1.0.0).

Now, some of the numerous ways to do it wrong:

  1. Bumping the major version number for no good reason. This is extremely common. If you bump the major version, it means that upgrading is dangerous, because changes were introduced which deliberately broke some of the ways the program used to be used. Do not bump the major version if this is not true.
  2. Not having a three-component version number. If you have fewer than three components, you hide information that your users need. If you have more, you merely create confusion. (Four- and five- component version numbers can be correctly used by repackagers; see for instance the Debian policy manual. But if you wrote the program, use three components.)
  3. Using anything other than numbers in version numbers. Versions such as 1.0a are ambiguous; is that the same as 1.0.1, or is it an alpha test for 1.0 (which shouldn't have had a version number in the first place)? Automatic sorting procedures disagree on how this is supposed to work, as do humans.
  4. Giving version numbers to development snapshots. The worst offender here is the Linux kernel, which makes a distinction between odd and even minor versions, then tacks a ton of extra suffixes on the end because the patchlevel isn't sufficient detail. This is a symptom of that development effort's longstanding habit of not using a proper version control system, but that's beside the point.
  5. Using major version number zero. This is not a total proscription; it is possible to use it correctly, if you know what you are doing. (See Subversion for an example of the correct use of major version zero.) Normally, however, anything before 1.0 is a development snapshot, which — once again — should not have a version number at all.
  6. Distinguishing version X.Y from version X.Y.0. This just plain causes confusion. (Fortunately, very few people do it.)
  7. The GNU maintainer advice for test releases has an especially pernicious suggestion, to use 4.5.90, 4.5.91, ... for test releases up to 4.6; not only does this clash with the namespace of patchlevel releases (what if there really were 90 patchlevels to 4.5?) but it continues by suggesting that the sequel to 4.5.99, if you're not done, should be 4.5.990, which is just plain wrong. See above about version numbers not being decimal fractions. Taking this advice is a common error.

The proper thing to do with development snapshots, by the way, is to give them date stamps, which look like 20020602. It is also acceptable to use 2002-06-02, if you're consistent. No other date format is acceptable; there are far too many of them, they're ambiguous both to humans and computers, and they don't sort right by naïve string comparison. If you are generating snapshots for two different branches at once — say, the main trunk and the 3.1 release branch — you can disambiguate them by mentioning the major and minor number of the previous release on that branch in the bundle name.

Ex Bibliotheca hopes that this has been an informative and useful rant, and that more of you out there will get it right in the future, dammit.

Wednesday, 19 June 2002

# 9:55 PM

Leonard nitpicks Star Wars: Episode II. And behold, it is funny. Contains the beautiful phrases "...look on the bright side: you wouldn't all be crushed under the jackbooted heel of the Dark Lord of the Sith!" and "I don't know how this could possibly happen, but I could probably think something up if George Lucas put me on the payroll."

(Me, I plan to wait until it comes out on DVD and then propose that the ICSI movie club either MST3K it, or take Dave Trowbridge's advice.)

# 9:35 PM

Hobo Nickels. Check it out. (From Boing Boing.)

# 4:05 AM

Threw a party for Shweta's 25th birthday. Lots of people came: herself, Nathaniel, Sumana, Vince, Rebecca, Michael, Julia, Eve, and Alex. We played Once Upon a Time and ate pizza from Zachary's.

Tuesday, 18 June 2002

# 7:45 PM

There's a certain category of fictional works, which are populated entirely with characters that I hate. I mean, these people are scum. They have no redeeming qualities whatsoever. If I were to be in the same room with them in real life I would be forced to blow their heads off with a machine pistol. Fortunately I can avoid this sort of person easily in real life. I can also avoid these people in fiction, by not reading the books, but sometimes I get suckered in and don't realize until it's too late to do anything but hurl the book out the window and scrub my brain out with lye.

The question here is, why do people write these books? How can they stand to have these scum living in their heads? To have made them up and be personally responsible for every last bit of their scumminess? Why did they not blow their characters' heads off with a machine pistol in chapter one, then find a story to write that has at least one person who is worth knowing?

# 3:30 AM

Joshua Micah Marshall, a fine investigative journalist with a blog, thinks that Patrick Buchanan was Deep Throat (of Watergate fame). It is not clear whether this is true or not, but it is a juicy little theory, is it not?

(Why am I still awake?)

# 3:20 AM

ihnta, ijls

Teresa has a post on Lutheran humor, in which she mentions "everyone's favorite Martin Luther quote:"

Sin boldly, but believe and rejoice in Christ even more boldly, for he is victorious over sin, death, and the world.

I feel obliged to point out that I have never heard that before. However, now that I have, it is indeed my favorite Martin Luther quote. (It is also my only Martin Luther quote.)


I haven't done an Amoeba run in awhile, but the albums in heavy rotation on xmms are:

All the band names start with "T." This means something, but I do not know what.

The Sisters of Mercy get mega bonus points for doing their own web page, with an attitude I approve of, and not fscking up the HTML, unlike some other bands I could mention. Well, except for the red-on-orange color scheme in some places. Owwww.

The Bosstones get negative points for pointless Flash; the link above bypasses it, for your convenience. Ditto TMBG; you will notice that the link goes to a fansite, not their official site, and there's a reason for that.

Time was that if XMMS was playing music, the Flash plugin couldn't make any noises. This is no longer true. I need to find out what changed and change it back. (Or find some way to prevent the Flash plugin from ever making noises. Hmm... hexedit the binary and change /dev/audio to /dev/null...)

# 2:40 AM

Yesterday, I went to see my friend Julia Bernd receive her masters' degree. Julia is another linguist — these days I seem to be hanging around an awful lot of them. She had a lot of family and friends show up. I didn't know anyone was named Desiree in real life, which is presumably what I get for being such a Yankee (Julia and company are all from various parts of the Old South).

Today, I spent an awful lot of time playing Freecraft, which is a clone of Warcraft II, which I was hooked on for a while back in college. It is a strategy game, in which you have to defeat a series of small armies of orcs (in the original; the Freecraft people are systematically renaming all of the cast in order to make it a tad less cliched, but they haven't finished yet). One thing I hadn't noticed before, about both the original and the clone, is that you invariably wind up clear-cutting all the forests on the board in order to build stuff with the wood.

An increasing number of web sites in my bookmarks list are becoming inaccessible from my DSL connection; routing traces go off into the weeds. I've poked the ISP and we'll see if it gets fixed. Unfortunately one of the inaccessible places is the W3C's HTML validator, so if there are any markup errors in this post, that's why.

Thursday, 13 June 2002

# 2:40 AM


Checked with my mother; Roger was born in 1922. He would have been eighty years old later this year.

Further to my complaints about the local anti-war protesters: my father is of the opinion that there haven't been any effective protest agitators since Mario Savio. He was in Berkeley at the time of the Free Speech Movement, so I think he is likely to know what he is talking about.

It also occurs to me that one of the assertions I made in that post may be misinterpreted. I said that the protesters take the position that War is Bad, end of discussion, and this is an absurd stance. Now, in an absolute sense, war is bad. To quote Eisenhower:

Every gun that is fired, every warship launched, every rocket fired signifies, in the final sense, a theft from those who hunger and are not fed, those who are cold and not clothed. This world in arms is not spending money alone. It is spending the sweat of its laborers, the genius of its scientists, the hopes of its children... We pay for a single fighter plane with a half million bushels of wheat. We pay for a single destroyer with new homes that could have housed more than eight thousand people... This is not a way of life at all, in any true sense. Under the cloud of threatening war, it is humanity hanging from a cross of iron.

The catch is that international politics isn't a matter of absolutes. There are situations where war is the best available action for a nation to take. There are more situations where making a credible threat of war is the best option. You will notice that Eisenhower did not abandon WWII just because it was the colossal waste of money and lives that he knew it to be. The alternatives were worse. On the other side, the Vietnam-era antiwar protesters were credible because they could show that that war was not our best available option.

The trouble with the current crop of protesters is that most people realize that sometimes war is necessary. The protesters' position comes across as "war is never necessary," and that's an absurdity, at least to their audience. The pro-war demagogues can therefore run right over anyone raising objections to this war, by claiming that their position is equivalent to this absurdity. That's a lie, but it's a lie that gets believed.


The Neilsen Haydens are full of interesting posts lately. Patrick has a couple of snappy ones on nuclear power and one on people's reactions to Coleen Rowley (the FBI whistleblower). Read the comments on both. Teresa has a long chewy speculation on Mr. Bush not knowing that there are black people in Brazil. Again, read the comments.

Sunday, 9 June 2002

# 2:20 PM

roger alexander, 192x-2002

My grandfather is dead.

He never recovered from the heart attack he suffered last week. He was unconscious for most of that time, but did wake up enough to recognize and speak to my grandmother on Friday. I'm told he died in his sleep, early Saturday morning.

I'm not sure precisely how old he was (pathetic—what kind of grandson am I?) but he interrupted his college education to fight in the second world war, so he has to have been born in the twenties. He had a long and distinguished career as a geologist with the Standard Oil Company (Chevron, after the breakup). After he retired, he taught petroleum geology for a while at Cal. He never stopped doing stuff, even this past year when he was continually ill. In fact, the thing that makes me saddest, right now, is that I remember him being all excited last Christmas about doing a geologic cross-section map of the Bay Area. It was to be displayed at the Mount Diablo state park's visitor center. He never got to start it.

Yit-gadal v'yit-kadash sh'mey raba, b'alma di v'ra hirutey, vyam-lih mal-hutey b'ha-yey-hon uv'yomey-hon uv'ha-yey d'hol beyt yisrael ba-agala u-vizman kariv, v'imru amen....

Goodbye, Roger, I'll miss you.

Wednesday, 5 June 2002

# 8:40 PM

Mozilla 1.0 is finally out!

# 8:35 PM

Hacked up Blosxom to go faster. Here are gory details.

# 6:50 PM

further car follies

I went and test-drove the new Honda Civic hybrid (warning: pointless use of Flash). This is a nice little car. It is pretty much indistinguisable from the conventional-engine Civic except for being about $4,000 more expensive and getting an additional ten-fifteen miles per gallon. Unlike the Toyota product, the dashboard and controls are all normal.

Honda has a surprising-to-me corporate policy of not allowing anyone to rent their cars. They don't sell to rental companies, and the dealerships don't do rental arrangements. The sales guy said this was to improve the resale value; rental places (he said) buy lots of cars, keep them for a year or two, and sell them again, glutting the used market. Now, since I am of the "buy one car and keep it for ten years plus" school of thought, I don't care about the resale value. But it makes it impossible to test drive the car over a long distance, which is somewhat frustrating. I didn't even get to try it on a freeway.

Also, the dealership has a markup on all their cars' sticker prices: "market value." This, the salesman explained, is an adjustment to reflect how much the car is worth, over and above the MSRP — which is already marked up quite a bit from dealer invoice. I imagine it should be possible to talk them down, but gosh, that's awful blatant.

I was pleased that the sales guy took me at my word that I wasn't going to buy anything today, and let me go in peace.

On the way home on my bike, I saw a car go by with the logo of the Bay Area City Car Share organization. This, frankly, would be the ideal car arrangement for me. I drive about three thousand miles a year, I know when I'm going to need a car well in advance, and I don't wanna deal with the hassle of parking, insurance, maintenance, etc. So why am I not signing up? Because you have to be twenty-five years old. Feh.


It is once again intolerably hot (i.e. 81°F). Fortunately, I remembered to make ice cubes this morning, so I can now have iced tea and cool down some. This is going to interfere with doing laundry, though.

Tuesday, 4 June 2002

# 8:10 PM

Discovered today the lovely Russian Tea HOWTO, buried in the Linux HOWTOs collection. They've taken it out of the official bundle, so here it is for your amusement.

# 4:10 PM


I cannot find anywhere that sells organically-grown white sugar, or even brown sugar. All there seems to be is "evaporated cane juice," which tastes quite strongly of molasses, much more so than brown sugar. It's not a bad taste, but even so. Why shouldn't there be people out there who want to buy sugar without pesticide residues in, but still refined — say, for use in recipies where molasses is inappropriate?


I would like to be anti-war and pro-Israel at the same time. I don't think this is too much to ask. Yet somehow, all the local anti-war protesters are thoroughly pro-Palestine, to the point where one suspects them of outright anti-Semitism. I can't countenance that.

Furthermore, my own opposition to the present war is based entirely on my opinion that it's not going to help any. We may or may not have succeeded in removing a despotic government from power in Afghanistan; it's too early to say whether another one will replace it. Meantime, we haven't even dented the root causes of the terrorist problem. If we were doing things that would, and those things happened to include the use of military force, I'd support that.

The local anti-war protesters, however, take the position that War is Bad, end of discussion. Since this is an absurd stance, it actually strengthens the pro-war position; they can just brush off more meaningful objections as equivalent to the above.

(When I rule the world, rhetoric will be a required subject in elementary school.)

Here's an article by Paul Berman on the subject of resurgent anti-Semitism in the developed world.

Sunday, 2 June 2002

# 8:35 PM

Sumana tells me that ska music is simply rock 'n roll with a horn section, and that often the bandmembers wear suits and ties. I am Enlightened. I always thought it was much more complicated.

# 1:30 PM

The time stamps are fixed now.

Saturday, 1 June 2002

# 6:45 PM

After five months of bloggery by hand, Ex Bibliotheca is now powered by Blosxom, with a number of personal hacks applied. To do this, I had to change the base URL; you may have noticed a nasty nag message on the way in, or you may not have, depending on whether the server redirect is still present. Please update bookmarks accordingly.

One nice effect of this change is that I can now do like Sumana did, and provide permanent links to individual entries. That's what the hash marks to the left of each date stamp are. (Sumana calls them pound signs. The Jargon File entry for ASCII appropriately points out that

...There are more culture wars over the correct pronunciation of this character than any other, which has led to the ha ha only serious suggestion that it be pronounced `shibboleth' (see Judges 12:6 in an Old Testament or Tanakh).

On the down side, all the time stamps are stuck in Greenwich Mean Time for no apparent reason. I have done the appropriate magic to make them appear in Pacific time, but it doesn't work. Yet.

I may change software again; Blosxom is nice and simple, but it's also rather heavyweight - one file per entry, all in the same directory, and it has to read them all every time you load a different subset. Also, it doesn't do comments, nor does it autogenerate the archive pointers for me. However, Apache's mod_rewrite should mean that I never have to change the URL again. (Famous last words.)