[Comments] (1) : Hm, the first entry of 2005. What to say? Something profound--but not too profound. Perhaps a convocation for the new year, something to usher in peace and goodwill. Or I could just squander it by talking about games.

Hey, you know what games are cool? The ones by Steve Hardt. I've played his masterpiece XEvil for years, enjoying its ingenious set of moving parts, cartoony ultra-violence, and randomly-generated 2D playing field. Only recently did I learn that XEvil is Steve Hardt's second released game. XDeathlord was written earlier. It's got the same fun-style (there must be some German word for that) as XEvil, but in a vehicular combat mode instead of a personal combat mode. As such, it uses the X and Y axes instead of X and Z. I haven't been able to really get into the game yet, though, and I'm not sure why. Hopefully it's just my short attention span.

Steve Hardt also wrote a PalmOS game called TREADS, which I haven't tried out yet but it kind of looks like a more refined version of XDeathlord. The screenshots show Steve Hardt's game design philosophy, which I think is sorely lacking in a lot of the games I play for Roundups: a flexible set of techniques to use towards your goals, and lots of random variation within well-defined parameters. Almost every game I like has one or both of those traits (the rest I like because of minimalist simplicity), but they seem uncommon in the games I test for the Roundups. Not sure why.

: By no popular demand whatsoever, I present the list of Cryptonomicon-Baroque Cycle tie-ins that I haven't seen mentioned elsewhere (qv. NYCB passim). Presented in descending order of plausibility. Contains spoilers.

[Comments] (5) Telling Y'all It's An Arbitrage: I was able to buy a pint of half-and-half (for ice cream) for less than the price of a pint of milk. Why? The ingredients list for the half-and-half: "Milk, cream". Are they using really cheap cream that's cheaper than milk?

[Comments] (3) : Hey, Beautiful Soup fans (all others can ignore this entry). Among my other projects I am designing Beautiful Soup version 2.0, which should be much more coherent and powerful, as well as generating better parse trees and having better Unicode support. This will come at the expense of Python 1.5 compatibility and (as always) backwards compatibility with previous versions. Thanks to several incredibly useful contributed patches, I have almost everything figured out, but I have two unresolved issues about nomenclature and operator overloading, which follow. I know there is nothing Python programmers love better than arguing about nomenclature, so have at it.

  1. Consider the following HTML:
    <p><b>Foo <i>bar</i></b> <u>baz</u></p>
    <div>Some more text</div>

    *ML is parsed by Beautiful Soup (and other parsers) into a treelike structure, like so:

     | +-B
     | | |
     | | +-"Foo"
     | | |
     | | +-I
     | |   |
     | |   +-"bar"
     | +-U
     |   |
     |   +-"baz"
       +-"Some more text"

    One of the two defining features of Beautiful Soup is that it tries harder than other parsers to build this tree even when the markup is bad, and will always give you some sort of tree, on the assumption that if you wanted a ParsingIsHardLetsGoShoppingException you would have created one yourself. But one of the things missing from Beautiful Soup v1 is (to refer to the tree above) any notion of the relationship between the P tag and the DIV tag, which I've discovered can be a very important relationship to have access to when you're screen-scraping.

    Looking at the tree it's obvious that the P tag and the DIV tag are siblings; they're right next to each other on the same level of the tree. But there's no easy way in Beautiful Soup to get from the P tag to the DIV tag. The .next member of the P tag is the B tag, because it was the thing *parsed* immediately after the P tag. You have to get the parent of the P tag (the root of the document), then get the list of its children, then go through it looking for the P tag, then see what the next thing is.

    In Beautiful Soup v2, the P tag is going to have some pointer to the DIV tag, and vice versa. This will only be useful for relatively well-formed HTML, but when you need it, you need it.

    However I'm not sure what to call these new members. previous and next are already taken as referring to "previous/next thing parsed" and I want to leave that alone. The only other ideas I have are previousSibling and nextSibling. Do you have any other suggestions?

  2. The other defining feature of Beautiful Soup is that it comes packaged with tree-traversal methods, inefficient to run but very efficient to not have to write yourself. There are two such methods. The main one is called fetch and it searches the tree for whatever you're looking for, returning a list of everything that matches. This is aliased (in v1 and v2) to the method call operator __call__, so in the example above you'd write soup.fetch("b") or just soup("b") to get a list containing the only B tag.

    But if you know there is only one B tag, it's a pain to call fetch and then take the first item in the resulting list. So there's a helper method called first that does it for you. In Beautiful Soup v2 I want some operator-overloading magic for the first operator. I can't think of anything suitably Pythonic, though.

    Overriding __getitem__ would look OK, but I'm already using it to get a tag's attributes, ie. a['href']. So I've got two current contenders. The first is the dot operator (__getattr__). The dot operator looks the nicest (soup.head.title is lovely) but it also happens to be used for member and method access on objects. I'd rather not have a solution that does one thing when you call .title and another thing when you call .fetch, especially when you might be parsing some XML or made-up markup language that has a "fetch" tag. It also seems like it would slow down the parsing a lot.

    The second contender is the % operator (__mod__). I can't explain why I like (soup % head) % title except that I think it's funny. Unfortunately the joke is too complicated to express in words, so you'll either get it too or you'll just have to take my word for it. On the other hand, if you took the modulus operator at its word you'd expect soup % head to give you the whole document but without the HEAD tags, which is totally not what first does. The other possible reference is to the string interpolation operator, but first is searching for a 'string', not inserting one. So it's not very intuitive unless you share my sense of programming humor.

    I may just not create any shorthand for first since it is already shorthand for fetch()[0]. It would be nice to have something clever and elegant, though, the way we use the method call operator as an alias for fetch. Again, I need ideas.

[Comments] (6) : Got my braces (mostly) off today. There are tiny bands of braces still on my front teeth, making my mouth look like one of those old video games where you keep playing the same levels over and over again, but every time the platforms get shorter and harder to jump onto. Those come off in 2 weeks when I get the retainers.

[Comments] (3) Spot The Villain: Having trouble figuring out which guest star in a Star Trek spinoff is the villain? Just keep around this list of self-justifying catchphrases. Use of any phrase on the list is guaranteed to identify the speaker as the villain of the episode:

[Comments] (3) Oyster Mushrooms Rockefeller: You come up with a great name for a dish and then it turns out someone else came up with it in 1998. They provided no recipe, though, so this is still groundbreaking stuff. I made this tonight for my "secondhand-eponymous dishes" mini-dinner party (also on the menu: Caesar salad and bananas Foster).

Basically you are going to put oyster mushrooms at the bottom of a ramekin (to simulate an oyster in its shell), and then fill it up with your favorite Oysters Rockefeller topping, except a little goopier to make up for the lack of oyster liqueur. Then you bake it and broil it. Here's the recipe I synthesized which tastes good, though I have no frame of reference to compare it to. It makes 4 ramekins worth.

Chop the MUSHROOMS and put them at the bottom of ramekins.

Saute the spinach and onion in the butter until the onion is a little brown and the spinach has wilted. Put the mixture in the food processor, add the rest of the FILLING ingredients, and process.

Make a white sauce out of the WHITE SAUCE ingredients, using the pan you just used for the spinach and onion. (Quick mini-recipe to make white sauce: melt butter, add flour and stir, when it's brown add milk and stir and reduce to a sauce.) Pour the white sauce in the food processor and process again. You are basically making a weird pesto with white sauce instead of olive oil. Then scoop it into the ramekins and smooth it out flat.

Bake for about 12 minutes at 350 degrees, then garnish with more breadcrumbs and finish it by broiling for 2 minutes. Garnish with chopped parsley, hot sauce, lemon juice, or whatever. Tasty!

[Comments] (1) Iron Chef America #3: I say #3 because the Food Network extravaganza coming later this month is the third attempt to port the Iron Chef meme to an American production. There were a couple UPN "Iron Chef USA" specials in 2001 which although unwatchable were enjoyably unwatchable. Then recently Food Network did a few "Battle of the Masters" specials which turn out to have been an extended pilot for this show that's more or less exactly the same. Unfortunately there are some big problems with their casting, in some ways I think representing a step backwards from that of the much-maligned UPN specials.

Case in point: Bobby Flay. Bobby Flay is not one of the world's great chefs. He's just a pretty good chef who has a successful restaurant and a television show. Of all the chefs in the history of Iron Chef he's the only one I think I'd have a shot at beating if I somehow got on the show. I admire his willingness to make spicy dishes, but Emeril Lagasse has built his entire career out of a willingness to make spicy dishes (or, rather, acting as though somewhat spicy dishes were really spicy while making it obvious how to make them spicy for real), and he has the natural showmanship for which Bobby Flay substitutes boyish good looks. What's more, Emeril's shows already look like solo Iron Chef acts. So as long as only people with Food Network shows get to be Iron Chefs, pick frickin Emeril. After all, he's got two shows on the Food Network, so he's doubly qualified.

I don't like Mario Batali either, but from what I can tell he is actually a world-class chef. You can't get me excited about him, though. His dishes doesn't seem very inventive; well-crafted but also very traditional, more like a challenger than an Iron Chef. I can't think of an alternate choice among people already on the Food Network payroll, but surely there must be some great Italian chef in New York or LA who's crazy enough to be an Iron Chef. Go through the archives and call up the Americans who won or held their own when they were on the original show. Do I have to do everything for you?

Wolfgang Puck became famous in the early 1990s for putting weird things like goat cheese on pizza (well, it was weird back then). In a fair universe this sort of skill would make him a great Iron Chef, and I think of the non-import Iron Chefs he's the best. I still don't really like him on an absolute scale but my mind is still open. The obvious choice for an Iron Chef of California cuisine is Alice Waters, who invented the whole thing, but she'd probably find the whole thing kind of ridiculous.

I see Masaharu Morimoto in the promos but I don't know if they're going to keep him around as a real competitor or just as a relic of the Japanese show. I always liked him, because I think fusion cuisine is the soul of Iron Chefdom, and his predecessors as Iron Chefs Japanese didn't do a lot of fusion; after all, they were in Japan and could just play straight to the Japanese palate. I hope he stays around, even though it seems like a lot of Iron Chefs if they keep him, and we all know that too many Iron Chefs spoil the Iron Broth.

Alton Brown, by his own admission, is also not one of the world's great chefs. But that's fine because he's not an Iron Chef; he's the color commentator. This is a job for which already having a cooking TV show is actually useful experience. He doesn't have to come up with his own ideas on the spot; he just has to make whatever's going on sound interesting. I think this is the best casting choice they made, but I'm prejudiced.

Finally we come to the Chairman, played here by Mark Dacascos. I really like the actor but not the character he plays. He doesn't seem an eccentric, like Kaga or Shatner played. More of a dilletante, as though Kitchen Stadium were a side project he funded out of his stock options rather than a grandiose bid for culinary immortality or a scheme to humiliate rival clans with his army of chef-assassins, or even just an obscene display of wealth which was what Shatner seemed to be going for.

Uh, conclusion: I predict we're going to be seeing a lot more shows where the challenger wins. I find it highly unlikely that three of the four best chefs in the country would happen to already have shows on the Food Network. I find it only slightly unlikely that someone who was an Iron Chef in Japan could transfer his skills to the American palate, especially since Morimoto has a restaurant in New York and was the most American of the Japanese Iron Chefs (for all I know he really is American).

Coming soon: the meta-trend continues with another entry about Hey! Spring of Trivia.

[Comments] (3) : The worst part about coming up with a kitchen utensil or other gadget to be sold through TV infomercials must surely be coming up with another, lower-margin gadget to give away as the "But wait! There's more!" freebie. You put all your genius into one super molded-plastic product but your ungrateful market demands some cheap auxilliary device for cracking eggs or something. It seems such an integral part of the sell that I envision Gilbert and Sullivan teams of product designers, one who excels at the big product and one who comes up with the perfect giveaway to accompany. Or a SourceXchange type market for matching big products with small, to form marketable sets. I think too much about this kind of thing, possibly because I can see myself as the guy who comes up with those half-brilliant, half-lame ideas for kitchen gadgets.

[Comments] (4) The Word Is Out: But, I won't absolutely insist that you treat me right. The subject of my CodeCon presentation, long a secret, has been revealed as the Ultra Gleeper, a recommendation engine for web pages. Yes, I created the thing people have been complaining about not having for nine years. And it does a pretty good job.

It still needs work, but I've got a whole month still to put off doing that work. I meant to work on it this weekend, but instead I wrote a goofy story about cannibalism. Good job, me.

[Comments] (8) Hey Rachel: This sounds like an easy way you could make some good money, if you can get used to fleecing the gullible without feeling guilty, (not, in my experience, a strength of the Richardson/Whitney bloodline, but associated more in my mind with the trickster Calls). It monetizes the skills I said during Christmas you should monetize, but is a whole lot higher margin than making collage crafts. Link via Accordion Guy.

[Comments] (1) Great Moments In User Interface Design: Seriously.

[Comments] (2) Apache Question: It looks like you can't use a text file to drive a RewriteMap if the URLs you're rewriting to are longer than 1024 bytes. Is this accurate? Does anyone else consider this a blot on mod_rewrite (as though it wasn't already bespeckled with blots)? I'm using a .dbm file instead, which doesn't have this problem, but it's aggravating.

[Comments] (7) Star Trek Nerd: Look away if you can. This entry's more geeky than the Baroque Cycle one I posted a couple days ago. That at least had news value. This is just stuff that crystalized in my head recently.

The first Star Trek I ever saw was the original series' "Court Martial". I was maybe 8 or 9 and I saw it in grainy black-and-white at my grandparents' ranch. Recently it was on the TiVo so I gave it another watch.

It was not that great (I think that most of TOS, when taken on its own terms rather than vs. what else there was at the time, is not that great), but I was amazed at the new meaning it gave to one of the best Next Generation episodes, "Measure of a Man".

There's a good case, which I will now make, that the TNG episode was consciously structured in homage to the original series episode. The basic plots are the same: one of the major characters gets put on trial and a friend of his must do the prosecution. There are also stylistic commonalities. Each episode has a guest star playing an old flame of the captain. There's a moment in "Measure of a Man" where the defense has the computer read out all of Data's commendations and medals. It turns out that's a reference to a scene in "Court Martial" where the computer reads out Kirk's service record.

It was the second season of TNG, when they still did this kind of nod to TOS. But "Measure of a Man" is vastly superior to "Court Martial" as a piece of drama. In "Court Martial" Kirk is on trial because Starfleet thinks he killed one of his crew through negligence. Not a bad premise, but not noticably science-fictional. In "Measure of a Man" Starfleet decides that they own one of their officers, and he has to sue to prove otherwise. Just on the level of the premise, it's more interesting.

In "Court Martial" the prosecuting attorney just happens to be Kirk's old girlfriend, in one of the first examples of what quickly became a very tiresome Trek tradition of the guest star being somehow related to one of the regulars. Instant, yet unsatisfactory tension! On the other hand, in "Measure of a Man", one of Data's friends is compelled to prosecute him so the suit can even proceed. This is a lot more satisfying dramatically.

When the computer reads out Data's record it's a rhetorical device on the part of the defense, to create the impression that if he's not sentient he's really, really good at faking it. The corresponding scene with Kirk has the same form but serves no real purpose because we already know Kirk is a big hero, and as Data would say, that is not in dispute. You can be a galactic hero and still hit the wrong button on a horribly designed instrument panel and kill someone. In the TOS episode it's just the computer doing what it does whenever someone is sworn in.

That's the other thing. For a television show about humanity finding a better future in the stars, TOS is pretty paranoid and mistrustful of the machines people build to take them there. It's always the insane supercomputer or the malfunctioning space probe or, in this case, the computer whose records have been tampered with and can't be trusted. The centerpiece of "Court Martial" is Kirk's defense attorney, a card-carrying technophobe, giving a speech about how humanity (of whatever species) must always be the master of cold machinery lest we lose our own humanity (of whatever variety). This argument is the direct ancestor of the argument used against Data in "Measure of a Man": that because he's a piece of technology, he does not partake of humanity and must be owned and administered by it. "Measure of a Man" puts one of the underlying themes of TOS on trial and shows that it hasn't held up well.

I still think there are big philosophical problems with the defense in "Measure of a Man", but I won't go into them because I'm afraid if I do I'll create some sort of nerd singularity which will destroy this website. Best to leave well enough alone.

[Comments] (2) Jokes With The Same Punchline: What punchline is used in the most distinct jokes? I can't even think of a punchline used in two distinct jokes, but it must happen sometimes. Perhaps the people who did that big humor study could help; they must already have a big database of parsed jokes.

: I saw the Piececlopedia over at our old friend the Chess Variant Page. Looking at all the wacky new pieces people have come up with for chess variants I was reminded of those less intellectual games where in between levels you buy items from an enormous stock of weaponry. Since there are already standard accepted point values for the standard pieces, why not extend that to the weird pieces as well, give each player some number of points, and let them pick and choose from the list to populate their army?

It turns out that when I thought this I reinvented BuyPoint Chess, which is less enthusiastic about allowing every single chess variant piece but was written by someone who's actually good at chess and can figure out game balance, and also who came up with it eight years before I did. I've got other ideas for introducing basic other-game mechanics to chess: bidding on pieces, drawing pieces from a Scrabble bag. But if I just spend enough time looking through chessvariants.org I'm sure I'll find any idea I might come up with on my own. It's the Library of Babel for chess variants.

Bonuses: semi-derogatory names for "real" chess by variant enthusiasts: "orthochess" and "FIDE chess". And the funniest chess variant I've seen: Accounting Chess, with two sets of rules.

[Comments] (1) : I added an RSS feed of the new books published by Dover to the Automat. Now it's easy to keep track of what's going on at every nerd's favorite not-quite-general-purpose publishing house. Don't miss Spacecraft Attitude Dynamics or Country and Suburban Houses of the Twenties: With Photographs and Floor Plans. Sometimes Dover's books are awesome and sometimes they remind me of Andy's father's geology books that we made fun of in ZZT games. "Why drink coffee when you can read Origin of Sedimentary Rocks, or the heart-pounding, best-selling Principles of Geomorphology."

Cannibalism story is done in rough draft, which is good, but now I'm back to my usual uncaring state about story-writing. I was hoping I'd get writing fever and end up going NaNoWriMo and writing the whole novel of which that story is but a set piece, but it seems that's not what my brain has in store for me. I did discover that making up a story while handwriting it goes a lot faster than doing so while typing it.

Sisyphus vs. Charlie Brown: For millenia, Western civilization has used the myth of Sisyphus as its futility myth. But within the past fifty years a new myth has entered our psyche which I think does a better job in many respects: the myth of Charlie Brown trying to kick Lucy's football.

It may seem silly, and the myth of Sisyphus does have the gravitas, but only because of its great age. The myth has a big buildup about Sisyphus snubbing gods no one cares about anymore and inhabiting an underworld that's long been replaced in our namespace by the Christian hell, then leaving the underworld and being dragged back and blah and blah. All of it is to provide a flimsy justification why Sisyphus should have to push his rock all the time. What's missing is any real motive. Why should he push his rock all the time? He just has to. It must be stipulated.

On the other hand it's not hard to understand why Charlie Brown should, eventually against his own better judgement, try over and over again to kick Lucy's football. Kicking footballs is the kind of thing humans want to do. When the sport of football is forgotten everything will still be explained in the dialogue: "I'll hold the football, and you kick it". Charlie Brown's own desire, vanity, and hope compel him to go after the football time and time again. There is no need for the gods to curse him because he has cursed himself.

Camus would say (and did):

If this myth is tragic, that is because its hero is conscious. Where would his torture be, indeed, if at every step the hope of succeeding upheld him?

The lack of hope is only a prerequisite for Sisyphus' compelled labor. Hope is what tempts Charlie Brown to choose his fate for another year. His "torture", as it were, is delayed until the moment Lucy betrays him, when it is repaid with interest. Camus' Sisyphus has his reprieve while the rock rolls back down his hill, but during Charlie Brown's reprieve, the brief lifetime of his hope, he is building up the momentum that will inevitably be turned against him. I think that's more tragic.

Anyway, according to that history site, starting in 1986 Charlie Brown had actually given up his hope, and those strips are less compelling. The same thing that makes them less compelling also makes them more like the Sisyphean myth. Q.E.D.

Get Up, Stand Up, Come On, Put Game Roundup: First, some updates from Game Roundups past. I played xdeathlord some more and it's not me, it's it. It's not nearly as good a game as xevil. It's just plain hard to play. So blah. Second, since its last mention two years ago Iter Vehemens ad Necum has in true roguelike fashion gotten bigger and in true IVAN fashion gotten weirder (and gorier), becoming simultaneously less and more frustrating. It remains in my opinion the most bizarre roguelike, the Yapok Sundria of roguelikes, if you will.

And now, new games. I'm very excited about this roundup; most of the games here are really good. They're also for the most part pretty violent, which may or may not be a plus in your book. One of them isn't as violent as it needs to be, which won't satisfy anyone.

Closed source games are not eligible for the Palm d'Rassemblement De Jeu (Des Jeux?), so Gate 88 is disqualified and the winner of this roundup is Apricots, the chaotic death-from-above game with the classic Amiga lines. Runners-up: Marauder and Atris. The traditional limerick prize celebrates the many non-enemy-initiated modes of death in Apricots:

When Pilot Mike tired of slaughter
Right into a fir tree he'd auger
It felt like a balm
To smash into a palm
And bliss to crash-land in the water

: Try your luck at the Incompatible Food Triad. A winner every time! (for certain values of "winner")

The Great Coffinfish Hoax: "Although they are genuine images of some rather strange deep-sea creatures, these photographs have nothing to do with the Indian Ocean tsunami."

[Comments] (1) The Gloves (And Braces) Come Off: Here I go!

: Lisa Schile told me about this smirking fellow: the Typothyrax. I mean the Typothorax.

[Comments] (1) : Does anyone else who uses the Technorati API notice that it's down a lot? I'm getting errors about 3/4 of the time or even more. Maybe it's my usage, the time of day my cron runs, etc. but it seems a little weird.

[Comments] (5) On Retainer(s): My top retainer mold has a negative cast of my palate that looks a lot like a Klingon's forehead. I've been carrying a Klingon forehead in my mouth all my life without knowing it. Now I wonder if the Trek actors who play Klingons are acting with big molds of their palates or someone's palates on their foreheads. Probably not practical.

[Comments] (3) Blasts From The Past: Some folks set up a Java NES emulator on their site and will let you play all the old-school NES games in an applet, as well as the games of lesser contemporaneous systems. It's like they're the coolest kid in school, though their coolness is of a peculiar completionist kind not generally found among middle school students.

Speaking of maxima of cool: I really hate comic books, but there's going to be a Buckaroo Banzai comic book series which I think I pretty much have to get. Yup, there's no way around plunking down my cash for the next item in that franchise. Nothing gonna swoop down from the sky and save me from this predicament. What's taking them so long?

Development Diary: I've been putting off working on the Ultra Gleeper but today I did most of what I still need to do before CodeCon and it wasn't so bad. Now it's mostly a matter of writing the paper. I feel like I need to take a break from my existing projects and commitments and only work on new things for a while. Maybe after CodeCon, or after CodeCon plus Beautiful Soup 2.0.

[Comments] (4) Not So Fast, Kid: Kid singing the alphabet song at Trader Joe's: "Q, R, S, T, U, V, now I know my ABCs." Nobody uses those last letters anyway.

Crouching Software, Hidden Roundup: Yes, it's the first Software Roundup in a year and a half! And I still have a backlog of 137 non-game items to investigate. Since statistics prove the real draw to this site is the Game Roundup, I'm posting this first and the new GR will follow.

The winner: pypov, which I hope people more graphically inclined than I get some good use out of. And now, the traditional prize of a limerick, soon to be a major driver in improving open source software quality:

pypov shows me why, back in the day
I couldn't use POV-Ray
They say only fools
Go blaming their tools
I've just about had it with "they".

It's Another Tequila Game Roundup: And here it is, the Roundup you've been waiting for. In case you're wondering, my Game Roundup backlog is a whopping 249 games. It's madness! But it's not like this is my job or anything.

So there we go. Tong wins this Software Roundup, and gets the limerick:

A game that is more than one game
Is constantly changing its name
The more clones we tacks on
From Asteroids to Zaxxon
The more we put Firefox to shame

Accidental Users: I often write software expecting other people will use it and they don't. So it's always a pleasant surprise when someone uses a piece of software I didn't really intend for anyone else to use. The person is Josh Barratt, fellow Alton Brown fan and Minix hacker, who has installed a copy of The Me Software Map, the script I wrote for managing the "here's a list of all the software I've written" page often seen on nerds' websites. This gives me hope for the future.

[Comments] (1) I Can't Believe It's Not Not Software Roundup: Even though I have so much to do and today I shoveled even more on my plate (more about this later), I figured I'd just go through some of the Software Roundup backlog and weed out the ones that turned out to not be interesting. I should have known. I got sucked into the shadowy world of software trying-out and another new Software Roundup was born. Here it is. Now I'm going to turn off the computer, except I need the computer for the stuff I'm supposed to be doing. Dang.

And now the winner. For fear of aspersions being cast upon my Y chromosome, I have no choice but to hand the award to the Real Man's Compiler Collection, that blackmailing constable of social norms. Enjoy this limerick, Real Man's Compiler Collection:


Gimme Google Memewatch: "give me back my"

: Going to the yearly CollabNet retreat, or as it's called this year, the CollabNet retrograde advance. It's likely no bruising of news will occur until Friday night. To top it all off, the company doing our team-building activity stole my and Kevin's team-building business idea and watered it down into a safe, liability-free activity.

We planned to take participants on board our walktheplank.net-branded ship as swabbies, show them how to handle a rope and a cutlass, then storm the nearest container ship. Those that survived would become more effective teammates and take home valuable merchandise, as well as peg legs and other picturesque injuries. They've watered it down to mere "pirate-themed challenges" such as the Cannonball Carry. Such is ever the reward of genius! And of genoise.

: I found a cute book at SFMOMA about Elmer, the cute elephant whose skin is a patchwork of different colors. Sort of a more colorful Checkerboard Nightmare. I got it for Sumana to cheer her up.

In spare moments I make progress on CodeCon paper and new currently-secret project. For some reason writing in longhand works well for me. It tires me out though.

[Comments] (1) :

Compsognathus sing this song, doo-dah, doo-dah
Compsognathus five miles long, oh the doo-dah day

[Comments] (3) Anacrusish #2: First draft of Ultra Gleeper paper is done. I also wrote another Anacrusis type story. This one tells the story of one of crummy.com's most enduring minor characters,

Fast Jack

Fast Jack's calculator gets passed around during Geometry and he pays out at lunch. He got his leather jacket without mowing any lawns, but he's after the romance: Frankie in a tux, raising to a cool mil between sips of neat. He can't keep this secret, nor share it.

"Hey!" It's Robson. "Your video poker's crooked!" Robson never got a PIN, but he has ways.

"You can check the program." Fast Jack's wasting his breath.

"I lost ten hands straight. Tell me that's fair."

Fast Jack has a letterman's jacket, too. He thinks about variance, runs like a hot Nevada wind.

[Comments] (5) Granola: The thing I've missed most while having braces turns out to be granola, so I've been making a lot of it and it's great. I'm using Alton Brown's recipe but with different nuts and fruits. Macadamias are great, peanuts are less great. Dried berries are better than raisins. Alyson, would you post or send me the recipe for the granola you made when I came to visit last year?

[Comments] (6) Speaking of Granola: My AAA membership expired and they sent me this really obnoxious membership renewal package, so I got pissed off at them and joined the vaguely-named Better World Club instead. They wear their politics on their sleeve instead of being sneaky about it like AAA does.

So far it's working fine. The only things AAA has over BWC as far as I can tell are: with AAA you can be a map hog and get a billion maps and they have to suck it up; BWC limits you to ten per year. And because my AAA membership was grandfathered in from my mother, or mothered in, I guess, the membership card said I'd been a member for longer than I've actually been alive. But that comedy gold mine went bust when my membership lapsed, and I already have more maps than I know what to do with, so I recommend switching unless BWC's hippy attitude aggravates you as much as AAA's fake-personal direct mail and mandatory upsell magazine aggravates me.

This is pretty funny: Someone submitted the precis of the movie (At Least) Three Cheers for Cause and Effect from Infinite Jest as an actual proposal for a movie. How far was the query letter submitter hoping it would get into production before someone realized this? Who would even watch that, or any of the movies from Infinite Jest (except, I suppose, Infinite Jest itself)?

[Comments] (3) Can't fight the freezer: Am thinking of getting a big standalone freezer to supplement the meager freezer on top of my fridge. I like making food and freezing it to heat up later. How much sense does this make? I'm not sure where in my house it would go.

I'll try to keep posting every day despite the month and a half of constant activity that looms before me. I like posting to NYCB but too often it turns into an excuse to procrastinate, which is my big problem. In addition to Ultra Gleeper, where I've finally pulled out of the rest stop and onto the straightaway, this new project is the textbook example of something you don't want to do if you want to retain free time. I guess I can prove the Ultra Gleeper is worth its salt by just spending a couple minutes a day posting links I find through it.

[Comments] (8) Exciting Gmail Contest: It used to be that people who got Gmail accounts would hold contests on their weblogs to give out their Gmail invites. The first n people who commented on the relevant entry would get a Gmail invite. Well, time passed, as it always does, and now there are too many Gmail invites to go around. Everywhere I go, people bombard me with offers to send me Gmail invites. Soon I predict it will escalate to bombarding me with actual Gmail invites, and then with bricks.

To keep things civilized I am starting a contest. The first one person to comment on this entry offering me a Gmail invite can go ahead and send me one. Surely this friendly competition will solve the Gmail invite problem once and for all!

And Other Dangers: I'm rebooting my Ultra Gleeper installation to get a feel for how long it really takes to set up the dataset, and to write the getting-started document. So far it's taking a loooong time; I think because I'm running it on a machine with less bandwidth. Best find so far: Code Names, a map of secrets.

Gleeper TODO note to myself: (all of this has to be done by Monday)

[Comments] (2) Someone's Having A Contest: From query logs:

In what country was Mentos 'the Freshmaker' invented? : 87
In what country was Mentos 'the Freshmaker' invented : 25
 In what country was Mentos 'the Freshmaker' invented? : 9
In what country was Mentos 'the Freshmaker' invented?  : 9
In what country was Mentos 'the Freshmaker' invented  : 8
In what country was Mentos invented? : 7
Mentos 'the Freshmaker' invented : 7
what country was Mentos 'the Freshmaker' invented : 7
country was Mentos 'the Freshmaker' invented : 4
country Mentos Freshmaker invented : 3
in what country was mentos invented : 3
  In what country was Mentos 'the Freshmaker' invented? : 2
 In what country was Mentos 'the Freshmaker' invented : 2
Mentos freshmaker invented : 2
Where were Mentos invented? : 2
in what country was mentos the freshmaker invented : 2
what country was Mentos invented : 2
what country was mentos invented : 2
where was mentos invented? : 2
 In what country was Mentos 'the Freshmaker' invented?  : 1
 In what country was Mentos invented : 1
 Mentos 'the Freshmaker' invented : 1
 what country was Mentos 'the Freshmaker' invented : 1
In What Country was Mentos, "The Freshmaker", Invented? : 1
In what country was Mentos "the Freshmaker" invented? : 1
In what country was Mentos invented : 1
In what country was Mentos invented  : 1
In what country was Mentos invented?  : 1
In what country was Mentos the Freshmaker invented : 1
In what country was the freshmaker Mento's invented? : 1
Mentos "The Freshmaker" was invented in what country? : 1
Mentos 'the Freshmaker' invented? : 1
Mentos 'the Freshmaker' were invented in : 1
Mentos Freshmaker invented : 1
Mentos the freshmaker invented in what country : 1
Mentos, 'the Freshmaker' invented, candy : 1
What country invented Mentos the Freshmaker? : 1
What country was Mento's the freshmaker invented? : 1
What country was Mentos invented in? : 1
Where was Mentos 'the Freshmaker' invented : 1
country was Mentos 'the Freshmaker' invented? : 1
in what country was Mentos "the Freshmaker" invented : 1
in what country was Mentos 'the Freshmaker' invented : 1
in what country was mentos 'the freshmaker' invented : 1
in what country was mentos invented? : 1
in what country was the mentos freshmaker invented? : 1
in what country were mentos invented : 1
in what country were mentos invented  : 1
in what were mentos invented : 1
mentos freshmaker invented : 1
mentos the freshmaker invented : 1
mentos the freshmaker invented country : 1
mentos the freshmaker was invented in what country : 1
what country invented Mentos candy? : 1
what country invented Mentos? : 1
what country invented mentos "the freshmaker" : 1
what country invented the Mentos, freshmaker : 1
what country was "mentos" invented : 1
what country was Mentos "the fresh mint" invented? : 1
what country was Mentos 'the Freshmaker' invented? : 1
what country was mentos the freshmaker invented : 1
what country was mentos the freshmaker made in : 1
what country was the mentos freshmaker invented : 1
what country were mentos invented in? : 1
where was  Mentos invented : 1
where was mentos invented ? : 1
where were mentos invented : 1
where were mentos invented? : 1

I gotta say, "the Mentos freshmaker" sounds like a much more interesting device than "Mentos, the Freshmaker". More like a doomsday machine.

For what it's worth, the answer is "Holland".

[Comments] (3) Recommendation Engine Meta-Discoveries: My friends all have IMDB pages, but at least I have an Audioscrobbler page. Which reveals that the shorter my songs are, the more people listen to them. Not a lesson I think people want me to learn, but one born out by cold hard statistics.

In non-meta recommendation engine discoveries, HobbySpace "seeks to show that everyone can participate in space exploration and development in one way or another."

: Has anyone hypothesized that John Barth and Donald Barthelme are the same person?

[Comments] (7) : The amazing Ultra Gleeper has reached 1.0. I spent the whole week making sure I could honestly say it works, and that it was actually amazing and not just a fluke. It turns out it does honestly work (now) and it is pretty amazing. It found Gold bar mystery from China, and Steven Wolfram's attempt to give every mathematical function its own web page, and a whole political analysis magazine I never even heard of.

Learn all about how it works in my new paper, "The Ultra Gleeper: A Recommendation Engine for Web Pages", soon to be a major CodeCon presentation. Of special interest is the "Giving away the store" section, where I do what I wish other people would do and summarize all the little epiphanies that turned into the design/software/idea/whatever.

Have fun. If you start using this, or start writing your own, I'd like to hear what you think. I made an account on my installation for Sumana so hopefully I can get some user feedback from someone who's not me.

Update: I redid the web page to make it more user-level "why you need a recommendation engine" and less academic "why is this recommendation engine different from all other recommendation engines?", since the latter is now well-covered in the paper.

[Comments] (5) But The Youngest Son Knew About Google: Search request: tricks to play on leprechauns

Wouldn't the leprechauns have already run the same query, and prepared themselves for shocking tape measures or whatever other lame tricks are listed in web pages about leprechaun dupery?

[Comments] (1) : How to Extract DNA from Anything Living. Come back here, you!

Found via lonita's links log, found via you-know-what.

[Comments] (5) : Does anyone know why the HTML standard doesn't allow PUT or DELETE as form actions? Sure, they're not widely used, but neither is the form's TITLE attribute, or the KBD tag, and they're in there.

: Gleeper find of the day: the Archaeology Data Service, a collection of zoom-in-able maps and search engines that help you find really old things in the UK. Like peat, and moats. You know, when I was in England I didn't see a single recognizable moat, but apparently they're all over the place there.

[Comments] (11) Curry Recipe: From Sumana's mother, Nagalakshmi, who wants me to come to India and says if I do she'll teach me how to cook Indian food.

Heat the oil in a pan. When it's hot, add the mustard seed, turmeric, and ginger. Then add:

Close the lid and leave for 5-8 minutes. Then add:

Serve with rice or naan or whatever.

My problem was, I was using too much liquid and my curry always was soupy.

I revently bought a bunch of spices mail-order (more on this later) but I didn't get any turmeric. I thought the only reason people used turmeric was for color, to fool diners into thinking you'd put saffron into the food when actually you were too cheap to buy saffron. Sumana and her mother think this is a hilarious misconception of mine.

[Comments] (2) CodeCon Request: If anyone reading this is coming to CodeCon tomorrow, would you mind printing a copy of my paper and giving it to me there? I'm out of reach of printers--printers and I never did get along very well; the feud dates all the way back to my old noisy dot-matrix--and I'd like a paper copy to use when working on my talk. Let me know if this is within your abilities; I'd also love paper copies of my preliminary slides, on which to write my notes.

[Comments] (6) Forbearance: I decided not to use my CodeCon presentation to push my pet hypothesis that the "free money from the government" guy is actually the Riddler from Batman.

"Riddle me this, Batman! How could you get $800 for remodelling the Bat-Cave? Or $400 for a new cape? Or over $1000 for repairs to the Batmobile?"

[Comments] (5) Mea Gleepa: It turns out the Ultra Gleeper requires version 0.5.3 of SQLObject, not version 0.6 or up as I previously stated. It looks like I started working on it about three days before 0.6 was released. I know Ian Bicking reads this weblog, so maybe he could speculate on whether porting to 0.6 would be fraught with peril or as easy as changing the import statements.

Update: I just released 1.0.2, which fixes RSS bugs and also moves the variables specific to my installation into cfg.py where you'll run into them while setting up the database and change them to your stuff.

[Comments] (14) : I have a compulsion to buy weird soaps and sometimes I regret it. Like the cocoa soap. It smells like cocoa! Hmm.

The soap I'm using now is some lavender clay soap. I dropped it on the bathroom floor when I was taking it out of its package, and little bits shattered off. Yup, clay soap.

The flyer for the CodeCon Google reception last night says "Relax and rewind." What does it mean to rewind, in that context? It could have been a retro-video-game-themed party, but no such luck. They probably meant "unwind"?

Off to give Gleeper talk.

[Comments] (1) : Gleeper talk went really well, I think. I'll put up the slides tomorrow in PDF format, and hopefully they'll archive the recording of the talk, so you can experience it retrospectively.

The OpenOffice presentation program is really good for drawing little ad hoc diagrams like the ones I made heavy use of in my talk. Better than any of the specialized diagram-drawing programs, closer than them to my preferred presentation strategy of scrawling ovals and arrows on a whiteboard.

Details about my next big project (until now maintained in parallel with the Gleeper, now to eat up all my time) coming soon.

Now We Are Sick: Can't go to CodeCon today because my sinuses hurt. I will tell you a story about being sick and the moral is: never buy more than one box of TheraFlu per illness.

My senior year of college I got sick a lot for some reason, with the sinus/ear/throat problems to which I am prone. Fortunately in the UCLA student store they sold TheraFlu, a granular substance which when added to hot water produced a soothing liquid similar to apple cider. I did this once and it worked really well to relieve the symptoms, so the next time I got sick I bought two boxes of it.

But by the time I started in on the second box, the peculiar not-quite-apple-cider smell and taste of TheraFlu was starting to itself become a source of sickeningness. I gave up halfway through the second box, even though it really helped the symptoms, because just smelling or thinking about it made me want to throw up. And now I can't even appreciate real apple cider, which I used to like a lot. Thus, the aforementioned moral.

Turning to the lighter side of the news, I put up the slides from my CodeCon talk. Hopefully soon the archived audio will be put up, and you can read along.

[Comments] (1) Kind Of A Penguin: There's also a new NewsBruiser, because Jarno found a bad bug in the comment system. I recommend everyone who uses comments upgrade to this version, especially since 2.6.0 also fixed a bad bug in the comment system. I don't actually know of that many NewsBruiser weblogs that have comments, though. All the crummy.com weblogs have been automatically upgraded.

[Comments] (6) Sony Walkman Personal Stereo Park: San Francisco renamed Candlestick Park to Monster Park, hopefully because monster.com gave them a lot of money but also because "Monster Park" sounds cool and scaray. How about renaming Alcatraz to Monster Island?

[Comments] (4) They Keep Coming: Ie. the recipes from Sumana's mother. This is a cold/sore throat remedy that really surprised me. You grind pepper into a saucepan full of water and boil the water. Then you grate ginger into it and drink it. Shocking!

[Comments] (2) The Real Recipe: It turns out the recipe I gave for the cold remedy yesterday was actually Sumana's garbled recollection of the recipe. Here is the real recipe, from her mother:

Start by melting 1/2 t butter or thuppa (ie. ghee) in a pot. Then add:

Boil down to 2 cups and drink with honey. Or add salt and serve it with rice.

Sumana also got me a copy of Make. If I were good at making things I'd be all over that magaine. As it is, I'm only partially over it.

[Comments] (3) A Refreshing Splash of Lemon-Lyme: For a Valentine's Day dinner I made Lemon Lime Risotto with Asparagus, which was very tasty. I love odd little risottos; it's a good medium for experimentation. Lately I've also been thinking of ways to make desserts with buttermilk.

[Comments] (7) : I think this would be a great game but I can't think of a mechanism: "Disconnect Four".

RSS aggregator as task aggregator: One of the things I like about the Ultra Gleeper is its RSS feed, which not only gives you recommendations but also the interface you for rating the recommendations, right in your aggregator. It works really well for me because I use Feed On Feeds, so my aggregator supports Javascript (incidentally, only recently did I find out that "DHTML" is just a code word for "Javascript"). It should work in any aggregator since they any aggregator has to be web-enabled enough to handle clicking on a link, even if it doesn't support Javascript.

If ever again I get into a segfault.org-like situation where every day I have to go through a bunch of user submissions and publish or kill them, it'd be easy to do that as a series of operations in my RSS aggregator. There's an emerging consensus that anything non-urgent you have to keep an eye on should be exposed through RSS, but I'd like to actually be able to take action on those things without having to click over to the main site. You'd see the item, and then any controls neccessary to edit the item, and buttons to publish or kill it. About as easy as such things get.

The only drawback to this idea is that you have to authenticate to get a customized RSS feed, so either your browser needs to store username and password or you need to stick it into the feed URL.

A similar idea in the same vein, which I didn't actually use, was the idea of wrapping any RSS feed at all in Gleeper clothing. The result would look almost exactly like the old RSS feed, but each item would be annotated with a set of rating controls for each link in the entry. I never did this because it'd be way too much trouble to be an RSS feed man-in-the-middle, and change all my subscriptions to point to the cache. It's a good idea though, until someone gets mad that you're changing their RSS feeds, which I estimate would take 16 seconds.

Update: It occurs to me that one could combine these ideas. Suppose you have a website that keeps track of tasks for you, and provides an RSS feed for the tasks, but you have to click through the RSS feed to actually manipulate the task. You could write a script that annotates the RSS feed with the HTML forms and links you need to manipulate the task, and do it all from your aggregator.

It's Time To Dim The Lights: This has been linked all over, but I enjoyed it a lot: Over Time, a student short featuring puppets that are not quite Kermit the Frog. It's funny and it's (off-brand) Muppets, but it's also got an interesting take on the relationship between puppet and puppeteer. Better than those dang pizza ads that's all the real Muppets are doing nowadays.

[Comments] (10) SQLite: At CodeCon I was mobbed with people who wanted to know why I made the Ultra Gleeper run against MySQL instead of the hip self-contained database, SQLite. Actually I think it was Danny O'Brien, who just plugged the Gleeper in this week's NTK and maybe one other person, but I'm no stranger to micro-mobs. Anyway the answer is that I barely heard of SQLite and I've been using MySQL installations more or less continuously at work and at play for years, so I just went with what I was used to.

I know everyone hates software that's hard to install and that the Gleeper is currently such a software, but I was surprised at how for many people the breaking point was having to set up a MySQL database. If most of that is balking at setting up MySQL, then SQLite will probably solve the balking problem. I haven't installed it but I don't see how it could be harder to install than MySQL. Plus the database files it keeps can live in the same directory as the app instead of in /var/, which I think is probably the big draw though it doesn't make much difference setup-wise.

Because people (including me) are all about self-containment, I'm planning to distribute a copy of SQLObject with future versions of the Gleeper. That should short-circuit the SQLObject version fiasco, and it's the only external library the Gleeper depends on. Including a copy of every single external library works well with NewsBruiser, and as a matter of fact it works with the Gleeper, which already includes about ten external modules in its lib/ directory. Why not SQLObject too?

I don't want to distribute SQLite in the package, because it's not a Python library. I'd have to either distribute platform-specific binaries or hook up with SQLite's build system. That said, I don't have a problem with changing over to SQLite if people think that's easier. I had all sorts of doubts about SQLite, but then I realized they're the same doubts people who use proprietary databases have about open source databases, so they're probably WRONG. SQLite looks really nice.

The other thing I could do is write a script that takes you through the installation process, instead of a document that tells you how to do it. A very powerful tool for making installation documents look less complicated is to hide the verbiage at the other end of hypertext links that might not be followed. I didn't do this because I didn't have time before CodeCon. I'm still not doing it because I'm working on a different project, with a deadline. Spooky! To me, anyway. Whoooo!

PS: This is also why there's no new Beautiful Soup, or whatever else it is I promised you I'd do.

[Comments] (4) XML-RPC APIs: Does anyone know of any XML-RPC interfaces that don't require authentication and that live on the public Web? I know of two: the weblogs.com ping API and its imitators, and the Advogato XML-RPC API (some but not all of which requires authentication). I don't think either of those is interesting enough for my purpose. My studies have shown that all the new web services expose REST and/or SOAP APIs. Poor little XML-RPC's showcase of implemented services is stuck in 1999. Am I wrong? Am I wrong?

Update: I can't believe I forgot the XML-RPC API I wrote for Downhill. It doesn't really meet my criteria either, because it's not that useful anymore. The Weblog Ecosystem data it depends on is about 2 years old and it's not being collected anymore so I can't update it.

Hmm, Waypath and Meerkat look like they might work.

I Advise It: Viewer discretion is the better part of viewer valor.

[Comments] (3) : Making good progress on the secret project, which I don't even really think needs to be a secret, but if I weren't too lazy to find out I'd instead be too lazy to work on the project. So it's a good trade-off. Meanwhile my brain is working on other ideas to astound you. I'm really starting to identify with the Richard Feynman quote (was it a quote or an anecdote about him?) that suggests you should cultivate a smal set of ideas and apply them to everything that comes your way, so that when you find a match people will think you're brilliant.

[Comments] (5) Nontrivial Tests For Being Trapped In A Cultural Artifact #2: Product placement. If you live in a modern consumer society, yet lead a Soviet-like existence in which there's effectively only one brand of soda, one type of car, etc, you're probably in a movie or TV show.

[Comments] (3) Iain Pears: I read An Instance of the Fingerpost, which everyone seems to love, and thought it was incredibly boring. Then I read The Dream of Scipio and thought it was really good. Conclusion: I like reading multiple, mutually analagous stories better than I like reading the same story told from multiple viewpoints.

[Comments] (1) Lessons Not Learned: I thought I was on track for my secret project, but it turns out the deadline got moved way up and I wasn't paying enough attention to notice this until yesterday, so it's a midnight oil combustion-fest 'round my place. That Leonard! Will he never learn? THE ANSWER IS NO.

He Did The Risk: He did the Zombie Risk.

[Comments] (1) : My CD player recognizes my Foo Fighters album as "no disc". It's the Odysseus of CDs.

[Comments] (2) : Hey, if you have ideas for interesting little things to do with the Google web API, let me know. I'm trying to think of one for my project, but I've been drawing blanks, and the non-blanks I've drawn have proven not to be feasible.

Whew: (Almost) done with the mysterious and spooky project. Ahead of schedule, too. Now I've got this big adrenaline rush left over from my rush to finish it that I'm not sure what to do with. The solution: rocksurfing! The incredible new sport that combines rock climbing, windsurfing, and sluicing for gold! It's extreme cubed!

[Comments] (3) Cleanup: Two things for my project for which I could use some help. First, if there are any REST bigots in the house I'd like to run some stuff by you. Let me know.

I'm also having a problem with Python's CGIHTTPServer in conjunction with POST requests. I can use the cgi module just fine with a POST, so there must be some way to get it to work, but if I try to read sys.stdin (where the POST data goes) from a CGI it just hangs. What's up with that? I found people talking about similar problems, but only on Windows and on Python 2.4. Has anyone else seen this?

: I found this via Dog Bites Dog. I feel like this proves some point of mine.

[Comments] (4) World Famous Ultra Gleeper: So what did I find out today but that the Ultra Gleeper, which still needs to be rejiggered so it's easier to install, is famous! It's mentioned in an article on CodeCon and Demo on B1 of today's Wall Street Journal (though they devalued it to a mere "Gleeper").

And when I tried a Google News search to see if Google had some sneaky deal with the WSJ such that I could use it to link through their subscription firewall (answer: nope), I discovered that the Ultra Gleeper got a much more gushing treatment in Red Herring, in an interview with Christian Leybold, a VC whose company sponsored the "underground convergence of algorithmic minds". Doesn't this mean I get a free round of funding?

[Comments] (12) : Hey, how are you doing? The thing I've been working on for the past month is a chapter for a book. The book's about beginning programming in Python, and the chapter's about web applications and web services. I tried to write the chapter that would have turned me into a super-prescient web application genius if I'd read it in 1997, when I first started writing CGIs. Actually, most of my writing is messages to myself that come far too late to help me, but might help you.

So (the first draft of) that's done, and now I have to deal with all the personal stuff that's been piling up, but maybe this could be a new, not-very-lucrative career for me. It was pretty fun to write, except for the deadline panic, and I was able to write a lot more than I thought I could.

[Comments] (1) : Near the end of Moby-Dick Ahab's piling on the hubris because not only is he about to clobber the white whale but his weird preternatural advisor has practically assured him victory! For Ahab to fail, according to this guy's estimates, an elaborate set of conditions would have to be met: he, the advisor, would have to die first, and then Ahab would have to see him again somehow, and then encounter not one but two separate hearses (Hearses? On the ocean?) and come on, it's all just so far-fetched, how could that stuff possibly happen? And then of course it does and Ahab screws everything up. Same with prophecies in fiction since Oedipus Rex.

So you trust a guy to tell you the future, and then he starts telling you that your stupid plan can only fail if all this unlikely stuff happens. He's probably just trying to tell you that it's going to happen, but using terms that make it sound so ridiculous that you don't violate the timeline by actually acting to stop it. But it's gonna happen. It's the equivalent of the man who bets you that "he can make the Jack of Spades jump out of the deck and squirt cider in your ear". Don't take that bet.

PS: I guess I started thinking about this after the previous entry, where I described my writing as messages to my previous self except the messages can't actually go back in time.

[Comments] (2) : The Lego Fantasy Roleplaying Game gives purpose to all that Lego frippery (ghosts, pirate cannons that don't work, pirate cannons that do work, etc.) by turning each piece into a game rule. This confronts my hatred of Lego frip-pieces with my love of intricate RPG rules. Touché, Lego Fantasy Roleplaying Game, and well done. What I'd really like, though, would be some sort of Lego/Crystal Castles/Nethack type game.

[Comments] (4) FOOLISH HU MANS: Sumana tried that "Laughing Cow" cheese and thought it was disgusting. I explained that the cow was actually laughing at her.

Update: Sumana disputes this story. Maybe it was someone else.

[Comments] (11) Song & Dance: In the early days of rock 'n' roll[0], songs and dances were package deals. Every band had one or more songs that was just an excuse to do the corresponding dance. The song talked about nothing but how great the dance was, and sometimes told you how to do it. I don't know if the dances were invented to go along with the songs, or if dances spread through a different medium, and bands wrote songs to cash in on a dance craze.

You don't see this much anymore. I'm actually kind of glad, because I think those songs are generally pretty lousy. From a memetics standpoint, I do like the idea of a song just being an advertisement for some accessory to the song.

[0] Maybe earlier, too? I can't think of any jazz era dances that correspond to specific songs.

[Comments] (1) The Pocket Wisherman: I've got an Amazon wish list where I toss in whatever books strike my fancy in my online travels. The idea is that I'll know what to look for when I'd otherwise just be aimlessly staring at the shelves of used bookstores. The flaw in my plan, which you have no doubt realized, is that when I'm in those bookstores I don't have access to my wish list. Oh, the exquisite irony!

Yeah, I've had enough of that lousy irony. A while ago someone proposed the obvious solution: print out your wish list and keep it in your notebook. The problem is that while Amazon gives you a wide variety of ways to sort your wish list, none of them do you any good in a physical store. No alphabetical by author, or title, no sorting by genre. So yeah, you've got a hard copy of your wish list, but when you've got a wish list like mine with over 250 items, you'd spend all your time context-switching between the printout and the bookshelves.

I figured I could do better, because Amazon exposes their product and wish list info through a REST interface, and I've been messing around with it for a while (other bits of messing-around to show up in my book). So I wrote The Pocket Wisherman. It grabs a wish list, figures out the most-represented genres (for things that have genres), and sorts everything by genre and (where appropriate) author or artist. I wrote a formatter to print a big HTML card of the information that you can print out.

Except. I can't control printed dimensions in HTML. But I wanted 3x5 cards to put in my little birthday notebook. So I wrote a thing that generates the cards in PDF, four to a page. I also wrote a thing to generate a big HTML list, so now I can autogenerate the kind of obsessive page that other nerds would spend days keeping up to date (if only I could do the same for the books I've read... wait, I guess I can).

The Test

But how well does it work? Yesterday, I put it to the test by taking my printout cards to Black Oak Books in Berkeley. I'd made many previous visits, while my wish list was accumulating its items, but on any given trip I'd never found more than maybe 5 books I really wanted. How many would I find if I had easy access to my wish list? How easy would it be to correlate the wish list and the store bookshelves?

I ended up buying 11(!) books from my wish list, and 2 by authors on my wish list (Stephen Baxter and Fernand Braudel) where the bookstore didn't have the specific book I'd put on there. I got 3 books not on my wish list, which is about my usual total haul when I go to a used bookstore. Total elapsed time: about 2.5 hours, which is slightly longer than I would have spent in Black Oak without a list.

There were 6 books on my wish list that I didn't get because they seemed too expensive (including the out-of-print novel with the hilarious name, "Buddy Holly Is Alive And Well On Ganymede", available in a signed first edition for $45). There was also one book I looked at and then decided I didn't really want it. Total books found because of an entry on my wish list: 20. I'm confident I found about 70 percent of the books on my wish list of which Black Oak had used copies. Pretty good.

How easy is it to apply this program? For ze so-called "genre fiction" it is incredibly easy. The Pocket Wisherman automagically figures out which genres to sort by, so that science fiction is shown as Science Fiction and not Fiction (unless you don't have much science fiction). Genre fiction classifications are pretty monolithic, so you just go to that section of the bookstore and run through your list and the bookshelves in parallel. One pass and you're done.

For nonfiction it is difficult. The biggest section of my wish list is "History", but history is not a monolithic classification in most used bookstores. Black Oak has separate sections for the history of every region of the world. It puts biography in with history, though some bookstores have them separately. I went all over the place trying to remember what the books were about (the downside of the truncated author names and titles that make the card display so compact) and in which subgenre I might find them.

General fiction was also a pain, but I think that's just because there was so much of it and so little of it was stuff I wanted.

I had a big "unclassified" section that I didn't really check at all. It's made of high-hanging fruit: really obscure stuff, stuff I don't think a used bookstore would sell, and stuff that might be categorized in any of a number of places.

The categorization itself slips up in a couple places. Historical fiction in my list gets categorized under History instead of Fiction. Sometimes the Amazon data is just wrong (why is the big Far Side collection filed under "History"?)

Sumana points out that if the bookstore has a terminal where you can look things up, or has a lot of staff (unlike Black Oak), you can just hog the terminal or a staff member for a while and avoid a lot of these problems.

Anyway, give it a try. If there's enough demand I might host a web application version of it, but that could be pretty ugly due to the one-query-per-second-per-IP-address limitation of AWS.

: Oh, the thing I forgot to mention in that enormous entry is that Michael Josephson put my OnDemandAmazonList class in the "contributed code" section of the PyAmazon project. Ordinarily to iterate over an Amazon list you have to iterate over the first page, then grab the second page, iterate over it, etc. There's also at least two different things that might happen when you go over the end of the list. OnDemandAmazonList hides that complexity and lets you iterate over a wish list or result set like a regular Python list. Now I might be able to get away with not including that code in my chapter, which would be nice.

[Comments] (5) : Clearly bottles of wine dipped in chocolate are an abomination, since inedible objects should never be dipped in edible coating. But is it actually disturbing, or just a garden-variety abomination? I can't decide.

[Comments] (2) : What would happen if Frank Chu met Frank Cho?

: "But five years on and let's be real: Isn't this starting to feel tiring, repetitive, cloying, misguided, weird seeming?"

It seems you cannot write about Dave Eggers without adopting his writing style.

[Comments] (2) : Not in the mood to do much software writing lately, for whatever reason. Sorry, people who use software I wrote. I did release a minor fix to The Pocket Wisherman which gives PDF wish list cards a bit of a margin so that printers don't print off the edge of the page, as happened to me once in a sort of Fermat's Last Theorem stroke of fate. I thought I was so clever setting the edge of the card flush with the page so as to save a whack of the scissors, but those printers have different ideas.

Tomorrow: jury duty.

[Comments] (3) The Pocket Wisherman Gets A Bite: Wow, someone bought me things off of my wishlist, previously used only as an example. Who is this mysterious patron of the crummy.com arts? Maybe I'll find out when I go in to work tomorrow to pick up the packages. Thanks!

[Comments] (4) : Why am I deluged with spam for pills to cure impotence, but nothing to cure idempotence?

[Comments] (2) There's a dollar in every one! My chain letter scam worked!: It turns out I have two benefactors: Kevan, who bought me The Third Policeman; and Josh Lucas, who bought me Moneyball and Fear and Loathing on the Campaign Trail. These data points lend still more support to Kevan's hypothesis that when Alice buys Bob a gift from Bob's wish list, she actually buys from the intersection of the wish list and the things Alice likes.

Kevan writes:

Come on, admit it, you only made the Wisherman so that people would buy things from your wishlist in gratitude. This book's one of my favourites, anyway; enjoy it.

I encourage everyone to believe this.

: I got roped into writing another chapter for the Python book, so once again free time is a thing of the past. Lousy past, hoarding all my free time! [whack] Take that! Crud, I destroyed the past.

[Comments] (3) : I think woefully unexplored is the continuity of modern haute cuisine ("deconstructed dishes", recent causes celebres of turning food into aerosol foams, printing images on rice paper with flavored inks, etc.) with similar bizarre preparations used in medieval and ancient times, Not strange ingredients like flamingo tongues and lampreys, which was what I always used to think of, but the dishes themselves: the ground meat of animal foo molded into the shape of a roasted animal bar, the Satyricon's twelve-course Zodiac meal, four and twenty blackbirds baked in a pie, etc. It's the same impulse in both cases, but now we have better technology. I would love to read (or write) something that tied these trends together.

My current favorite example of old-school culinary tomfoolery is this medieval recipe for an enormous egg using 30-40 normal-sized eggs and two pigs' bladders. That sucker's huge! There's no reason to make such a huge egg except to mess with visitors' minds. "Yup, everything's bigger here in Mecklenburg-Strelitz. You should see our cows!"

[Comments] (6) : Okay, that's enough of that. I took my cards to Moe's in Berkeley and found nine books from my wishlist (plus two not in the wishlist) without trying very hard. Then I went to B&N and spent accumulated gift cards on another five. The increasing fragmentation of my wish list is exposing problems in the Pocket Wisherman's automatic categorization, but if I fix them I'll just go off printing new copies of the cards and buying more dang books.

The new chapter I'm writing for the Python book is on network programming. I'm planning to write a tiny IRC-like chat room thing, and a multiplayer game of some sort, and maybe a file-sharing something to demonstrate peer-to-peer. Let me know if you have any ideas, especially for the game. I don't want to introduce a whole lot of irrelevant-to-the-chapter overhead just to get a cool demo application, but it'd be nice to have something besides the not-terribly-heart-pounding number-guessing game I'm currently planning.

[Comments] (1) Fore!: WHACK

[Comments] (3) : I wrote my cute little IRC ripoff for the book in about 100 lines of Python. I was going to invite you all to telnet in and try it out, but there are firewalls in front of all the machines on which I can run the program, firewalls that prevent me from exposing servers of any kind to the outside. Tragedy!

: Went to the Ferry Building for the first time today. It's full of expensive little boutiques, including a store that sells only mushrooms. You don't see many stores that try to cover a whole kingdom of life. The whole experience was nice, albeit overpriced.

[Comments] (5) : Still in jury selection blah. I don't understand how sitting and doing nothing can be more stressful than going to work. Too tired to write anything, which is a problem as I'm supposed to be writing the other book chapter.

[Comments] (1) : Jury selection is over and I'm not on the jury. Bizarrely, both of the people I made friends with during the process are on the jury. So don't make friends with me if you want to get out of jury duty.

This is fortunate because it means I can go down to Bakersfield tomorrow to see my mother. Hoorah!

: This depiction of game auteurs basking in the glow of game mega-auteur Will Wright (who writes the games I've always wanted to write) is a little odd to me. It seems to have an unhealthy obsession with Wright's technique of saving money by rendering graphics dynamically instead of paying someone to animate every possible sprite you might see in a game.

I'm no artist, so I've always accepted that I'd need to do this for any fancy-graphics games I might write. I've never had a budget for paying anyone for anything, and a "we need an artist" announcement is a near-sure sign of a moribund open source game ("Our ambitions have overshot our abilities! Who has some spare ability?"). So maybe it's just a different worldview.

The thing in that presentation that seems really interesting and novel to me is the tactic of creating in-game content by reusing the products of other users' normal play. Now that I write it down I see it's not totally novel: for instance, bones levels in roguelike games do the same thing. That's a lot more limited than what Wright is describing, though.

This type of hack, interpreting the normal behavior of users in a way that yields new information, is one of my favorites. In a game context it could cause privacy problems or be a Tar Pit From Hell, but you could structure games to avoid those problems; game state need not be a general-purpose communication mechanism.

[Comments] (1) Medical Heuristics I Learned From Watching House: If you don't know what it is, it's probably some obscure form of poisoning.

I'm Disorganized, Just Like A Real Author: Hey, a couple days ago someone sent me mail asking if I wanted to write a tutorial, presumably for money. I'm interested but I can't find your mail. Would you please resend it? I remember you mentioned reading NYCB, so hopefully you'll read this.

[Comments] (8) A kiss may be grand but it won't pay the rental: Sumana knows I'm obsessed with the automat, and sent me a bunch of frustratingly-small historical images pertaining to that dys/utopia of restauranteering. I must now see Dark City just for that sleek-looking automat scene. Also, for some reason, vegan cheesecake.

: Having lots of fun clicking around Board Game Geek's GeekLists, which are much more interesting than the similar product lists on Amazon, or, indeed, more interesting than writing about network protocols.

[Comments] (2) : In the antique store I saw a book with one of the best titles I've ever seen. I'll use wacky font sizes to try to convey the way the title looked on the cover:

Gold! ...no gold

The book itself was some self-published autobiography of growing up in central California or something. I could tell it was self-published because the jacket copy told me that when I was done reading the book I would feel like I really knew the author and consider them a close friend. Only the self-published author would consider that the best use of jacket copy space. I don't know anyone who reads books to make friends with the authors, and I imagine non-self-published authors would be kind of creeped out about people who considered themselves your friends based on what they read in a book.

In a refreshing reverse of what's usually less creepy, this is less creepy if the author is dead. Then reading their stuff is the closest thing possible to actually making friends with them. I don't think the author of Gold! ...no gold had that in mind, though.

[Comments] (1) : Spam asks me: "Would you take the time to meet people that spend over one billion dollars on travel?". I can't imagine such people would stay still long enough for me to meet them.

[Comments] (6) : It's hard to keep writing a cutting-edge weblog such as NYCB when every spare moment is being dedicated to writing quality Python information for beginners (you hear that, Debra?), so I'm just ripping off stuff from other weblogs. From Amygdala I steal Star Trek blooper reels, which are actually pretty dull, even the titillating-sounding "TNG -- Cast Swearing.mpg". The 'VOY Bloopers' one has some decent ones, including funny pre-post-production overacting from Tim Russ. That's the one I'd recommend, if you're IMAP. Interested. I meant interested.

[Comments] (2) : Does Newton's Wake have any thematic connection to Finnegans Wake, or is that wishful thinking?

[Comments] (2) a/s/l: I figured out the problem that was preventing me from running my lame IRC ripoff server such that others could connect to it. So telnet in to crummy.com, port 2000, and keep me company tonight while I write my lame BitTorrent ripoff.

It turns out the problem wasn't firewalls; it was a misconception of mine about DNS. You'd think they'd be able to find domain experts to write these books, and you'd be right. But it turned out the networking domain expert didn't have time, so they turned to me to write that chapter instead.

Update: That was fun, like a little party, in that no one showed up for hours and then a bunch of people showed up and stayed past my bedtime. I got some good advice on select().

[Comments] (3) Socket Question: Okay, here's something interesting. Python's socket documentation for the socket.shutdown method mentions three constants: SHUT_RD, SHUT_WR, and SHUT_RDWR. However, nowhere I can find does Python actually define these constants. It's obvious what they are because they're ripped off from C/Unix constants of the same names, and those always start numbered from zero. But it seems really weird that the socket library would forget to define these constants even though it defines a million other constants. Am I missing someplace where those constants are defined?

Hamentashen: Sumana got obsessed with hamentashen so I made some tonight. Only one of them held its echinodermoid shape throughout baking; the others unfolded and became little tarts. I made a poppy seed filling, which was probably really expensive, but tasty.

Happy Mordecai! I mean Haman. Purim. Happy Purim.

[Comments] (3) Polls You Can Bruise: I'm not going to haul out the old COPOUT code just for this one poll, but I'd like your opinion on how I should end my networking chapter for the Python book.

I've got enough pages to cover one more topic in a fair amount of detail (a couple 10-100LOC examples or one 200-300LOC one). Should I cover a) the peer-to-peer architecture by writing a little file-sharing/distibution network type application, as I planned, or b) the Twisted library, which makes writing networked applications easy such that much of the rest of the chapter is rendered moot and rather quaint-sounding? I'm leaning towards b) even though a) would be easier, because I don't want to be responsible for people thinking raw socket programming is the way to go. On the other hand, so far I've been able to write my chapters without using anything outside the Python standard library, and I think that's a worthy goal.

Let me know what you think I should do. I was going to try to write the last section tonight, but instead I'll start pitching everything into the Word template. I'll write the last section tomorrow after I've decided what goes in said section.

Whichever one I do, the other one will get a little text-only section under "other topics", because I think they're both important.

Out, Damned Irony: I wrote about sockets all day and now my shoulder sockets are sore.

[Comments] (6) Time Meddler: This is the game that makes our fortune, Leonard me boy. Time travel game! In other such games you experience time travel from the perspective of a human: you turn back the clock to a specific point and relive events from there. In this game, you are a four-dimensional being! To you, the timeline looks like the pages of a flip book spread out before you. Like a Trafalmadorian you can visit any segment of the timeline that strike your fancy. Unlike a Trafalmadorian you can also change the timeline. Your changes have ripple effects into the future.

The game board looks like a 2D grid. The squares contain people and objects in different states over time. That is, the x axis is stepwise "time" and the y axis is stepwise "state of person/object #y". Your job on each level of the game is to meddle with the timeline to achieve a certain result (eg. to make two people fall in love). You can insert items into the timeline, move objects around, etc. Every time you do something at time x, the timeline is redrawn from x+1 onwards. With the right modelling the possible actions and resulting events could be very flexible.

It is a turn-based puzzle game because of course it makes no sense to have any time-related operations since the whole point is you exist outside of time.

How do I know this game will make my fortune? TIME TRAVEL, DUH!

Next time on NYCB Game Design Brainstorming: Captain Compliance! The game where the object is to get permission to play the game! Inspired by my review of oki. I'm still not sure exactly how it will go, though.

[Comments] (6) Crøss Purposes: OpenOffice Writer autocorrected "naive" to "naïve", then immediately flagged it as misspelled and suggested "naive" as the correct spelling. Come on, different parts of OpenOffice Writer, let's see some cöoperation cooperation cöoperation coöperation cooperation coöperation here!

[Comments] (1) : Almost done with the book. I have to think up two more study questions and that's it. I can't believe I've written 110 pages of stuff!

Welcome Robot Sea Monsters: I must be more wicked than I thought, because no rest for me. Tonight I did taxes and wrote an item for an O'Reilly "Hacks" book. Tomorrow the technical reviewers' comments come back on my web applications/services chapter for the Python book, and I have to work on that. You'd think I was making a living at this or something.

I'm really proud of the web chapter (and undoubtedly I will remain proud until I get the reviewers' comments), partly because it brings me full circle back to the student class on CGI I gave six years ago. But mainly because in this chapter I suggest a definition of web services that I've only seen one other place, but that I'd like to see more often. I think it's a pretty intuitive definition that will hopefully set the younger generation on the right path.

In the networking chapter I don't do anything like that. For one, I don't know nearly as much about low-level networking as I do about web programming (though I know a hell of a lot more about networking than I did when I started writing that chapter). But mainly it's because on the network and the transport layer, we already had the fight between the simple geeky incrementally-developed protocol and the huge corporate designed-by-committee protocols, and just like in the movie, the ragtag band of geeks and their scruffy but loveable protocol won. Not much to do now except to show people how to use it.

We had that same fight on the application layer for email and chat and "content delivery" and you name it, and almost all the time the geeks won. And just when you thought the fight had been appealed all the way up the protocol stack and settled once and for all, now we're having the same fight on top of HTTP! Being too young to have been involved in the earlier fights, I figured I might as well do my bit for this one, and throw in my lot with the idea of web services I think fits the best with the Python philosophy.

Update: The guy doing the Hacks book (okay, it's Danny, if you must know) says of my hack: "I'm speechless!". Nothing like a shot of praise to bolster my spirits in preparation for the clobbering I fear the tech reviewers will give my web chapter.

[Comments] (3) Games Games: It's games they say, on the other side of the hill. Brendan started a fun new collaborative weblog about game design, and through it we were all reminded of Kevan's random game idea generator. It was the best temporal-displacement Christmas ever.

I think I'd be a good game designer, but almost everything I've heard says it's a miserable profession, and far better to just dabble in it as an amateur. But they say the same thing about writing, and I'm kind of headed in that direction, so maybe I can take it. They probably say that about software development, too, and carpentry.

[Comments] (6) Blockquote Thetans: Beautiful Soup is on a roll lately, getting lots of buzz at PyCon, and at the BangPyPers, the Bangalore Python users' group. Now that I've got a little free time I worked on version 2.0 this evening, which should make people happy. But then I watched The Emperor's New Groove with Sumana, which made me happy.

I can't think of any other Disney films that are out-and-out comedies. Usually they've got a bunch of songs and morality crap and it's like a dang variety show up there. I really dislike that, but this movie was great. Even its failed jokes were funnier than the comic relief in a typical Disney animated feature. Of course, I stopped seeing these movies a long time ago; maybe they're all like this now.

[Comments] (1) Beautiful Soup Buzz Update: It's now in Debian! How 'bout that.

[Comments] (5) Software Package Names: Apropos all the buzz detailed in the previous entries, Sumana said the problem with Beautiful Soup is that you can't tell what it does by looking at the name. This is true, but I'd say it's true of a majority of software packages. It's at its worst in commercial software where your package name is a product name and needs to be trademarkable. It's not as bad in free clones of commercial proprietary software, where they can't use the trademarkable name so they take a word describing the software and hack "K" or "G" or "GNU" into it. But I think those names are pretty bad and unimaginative. That may be my bias towards wacky names that stick in your head but (though usually trademarkable) would never make it past a marketing department.

Maybe software packages need subtitles, the way every nonfiction book nowadays has a subtitle that explains the catchy main title in way too much detail. "Beautiful Soup: The Hidden History Of The Python *ML Parser That Handles Bad Input And Provides Tree Traversal Methods".

: Okay, I've got the new Beautiful Soup running an extremely sensible parsing algorithm based (more or less) on the difference between block tags and inline tags. I gave it a pretty-print mode so I could eyeball the parse tree, and it looks good everywhere I've tried it. Major features I still have to implement:

[Comments] (8) Grapefruit Riot: I've told this story before, but when I was a kid my father would eat grapefruit halves for breakfast and I thought it disgusting. But recently I had the other half of a grapefruit my mother ate and it was still disgusting but not after I'd put sugar on it. Previously even sugar was not enough to disguise the foul taste of the grapefruit, but with sugar it was pretty good. Now I eat grapefruit all the time, though I don't yet have a special spoon for it. I guess your taste buds do change as you get older.

Then I started thinking about sugar and fruit in general and got totally lost. Why exactly is fruit good for you? I have been eating more fruit than I used to to satisfy my sweet tooth, but that's because it's chock full of fructose. The sugar named after fruit.

Obviously a mango is better than a slime moldcandy bar, because in addition to sugar the mango has fiber and vitamin chemicals, while the candy bar has fat and preservative chemicals. But is the mango really a good nutritional investment in an absolute sense? And what about fruit juice? This canned (bleah) 100% fruit juice on my desk says 180 calories and 37 grams of sugar. That's more calories and more sugar than a can of ginger ale. What does the fruit juice have that moves it from the tiny space on the top of the food pyramid into the middle?

I tried to figure this out with web searches but all I got was people telling me to eat fruit. I'm eating fruit! I just want to know what's in the fruit that makes it so great.

[Comments] (4) : What's the deal with WIGU? The old strip ended, and after a couple weeks of messing around with other things, half the characters from the old strip showed up again and now it's like it was before. It's the Outland of web comics.

: The Beautiful Soup 2.0 beta is available for a limited time only, before it becomes the real 2.0. Before I bless it I want other people to try porting their old code to the new version, but mainly to see if the new tree builder works as well as I think it does deciding how to build a parse tree out of bad HTML. All the other stuff is new features, so if you have to change your code, it's because your old code was a victim of the weird ways version 1.x parsed bad HTML. One fun way to test it is just load an HTML file into a BeautifulSoup and prettyPrint() it to see if the tags line up the way you think they should. It all depends on your idea of what's fun, of course.

Beautiful Soup 2.0 only works with Python 2.2 and above, which is unfortunate but I had to do that so I could subclass the string and Unicode types. Should a sufficiently large mob form outside my castle, I'll consider doing a version of the the new version that works with Python 1.5.2.

[Comments] (6) The Biennial Question: I need new computer stuff (specifically, hard drives and maybe a CPU). Where do I go, loyal readers?

Buzzword Namespace Collision: I went to the bank website and it said "LEONARD RICHARDSON - Personal Accounts" and I thought "Wait, why is Bank of America trying to sell me on Social Security privatization?"

[Comments] (4) Anacrusish #3: This is actually #2: I wrote it about six months ago but I just showed it to Brendan instead of posting it, and I forgot about it. I'm cleaning out Beautiful Soup email from my inbox and I stumbled upon it, so why not post it now? Because it's got the same problems it did earlier, that's why. Oh well.


God has bent the spectrum over His knee. A rainbow goes from red to between yellow and green, then back down to red. Grass, if there was any, would look sick and brown. Silas's arms have mainly lost their highlights, but his rubber gloves are as black as before.

Silas wipes at his face for suddenly appearing goggles. Is it his brain, his eyes? The room, the world?

"The blue wire!" shouts Detective Rogin from behind the vault's door. "Cut the blue wire!"

Silas looks down at the package and tries to remember. Clearly someone does not want him to succeed.

[Comments] (3) : I don't think I've ever enjoyed (or even seen) a TV show as formulaic as House. The least formulaic part of that show is at the very beginning, where the announcer warns you that there are going to be CGI simulations of what happens inside peoples' bodies. What will the announcer say? Will he advise "viewer discretion", or "parental discretion", or just plain "discretion"? It keeps me guessing every time! But then the episode starts.

[Comments] (1) : I got dragooned into seeing a movie today, but I got to pick the movie. I picked Melinda and Melinda, and... well, it was okay, but not great. Pros: Will Ferrell was funny, and the concept is good and very Socratic ("Oh, hi, Socrates, we were just discussing which is the worthier form of drama: comedy, or tragedy?"). Cons: It dragged a lot. Two miscellaneous fun things: the movie features Wallace Shawn in full Grand Nagus Zek mode, and there's a scene where a guy wears a plastic mullet like the one Brendan has.

It's a cliché to say that Woody Allen doesn't make funny movies anymore, but I'd rather perpetuate a cliché than a base falsehood. At least he's started having good ideas again.

[Comments] (1) More Movie Magic: Though I've never understood the "magic" part. Anyway, yesterday Sumana and I made up for watching Melinda and Melinda by re-watching the first halves of classic comedies Austin Powers and Some Like it Hot. I decided it would make Some Like it Hot a little more interesting to pretend that the character Dolores is actually Dolores Haze from Lolita, even though the timeline doesn't match at all. Also, William H. Macy was born to play Osgood Fielding III in the remake.

Sumana says I should write the screenplay for the heist picture in which Richard Feynman teams up with the Kool-Aid Man. "Okay, Kool-Aid Man. You get us through the wall, I'll get us into the safe."

: I think Beautiful Soup 2.0 is just about done. I'm not announcing it yet because I'm still writing the documentation, but you can download it as a beta from the main page.

[Comments] (1) : Here's a fun little DHTML game; not as elegant as Kirk Israel's games whose interface is the form submit button, but still nice. Yeah, "DHTML". We used to call it "Javascript", but that got a bad reputation, so we renamed it. Now, it sounds like a standard!

Belated Soup: Man, I hate it when I save as draft instead of publishing something. Anyway, here's what I wrote last night:

Well, I tried, but no Beautiful Soup 2.0 tonight. I'm almost done with the online docs but not quite, and I still have some things on the TODO list I want to put into 2.0 as long as I'm breaking backward compatibility. Tomorrow I get my reviewed copy of the web applications/services chapter back, (contrary to my fears the tech reviewer thinks I wrote a good chapter) so if I can't somehow squeeze it in tomorrow it's probably not going to happen for over a week.

[Comments] (14) Dismissed out of hand: I'm eating a Granny Smith apple. Whoever said they were good to eat raw? It's so tart. Brrrr,

[Comments] (4) Fried Tofu: I used to make stuff with tofu but not successfully. My attempts at stir-frying it were failures. Recently I had to create a vegan feast, so I fried tofu in peanut oil and brushed it with a peanut sauce, and it was tasty. What was missing from my previous tofu attempts was texture, and frying solves that problem.

[Comments] (3) : Hey, quick question. If I start up a server and bind it to localhost (instead of an IP address or an external hostname), then no one can access the server from outside localhost, right? This is backed up by my experience and stuff I've read, but I want to make triple sure so I don't tell people they're okay when they're actually exposing their systems to the outside.

[Comments] (5) Shaun of the Dead: Sumana rented it and we watched it tonight. It was really good, but in an amazing twist of fate the movie was ruined for me by false spoilers! Somehow while hearing about the movie (or, perhaps, seeing the name of the movie) I got the impression that halfway through, the main character got killed and came back as a zombie, but nonetheless they managed to pull it off as a romantic comedy. I thought this was so awesome that I kept wondering how they would manage it, and once it became clear that 1) it was not going to happen, and 2) the nature of zombiehood in this movie was such that it couldn't happen, it was a big disappointment. Still the best zombie movie I've ever seen.

[Comments] (5) Beautiful Soup 2.0: After much last-minute tweaking of Python and CSS, Beautiful Soup 2.0 is released! I really outdid myself this time. Still in one file, much better at parsing bad HTML, has pretty-printer, lots of idiomatic shortcuts for writing more concise code, lots of documentation. And, in contradiction of Leonard's Immutable Law of Open Source Software, it's not plugin-based. Go for it. No Python 1.5 support in this one, unfortunately.

SOAP Bigot Needed: Earlier I asked for some REST bigots to review the REST portion of my web chapter. I should also show the SOAP portions of the web services section to a SOAP bigot or two so I don't say wrong things. I'm pretty sure I got it right, but you can't be too careful when your writing's going into a book so heavy that an angry reader could use it as a weapon against you.

So if anyone who knows SOAP wants to look over about 10 pages real quick and flag any errors, please mail me or leave a comment. I'd like to send in my revised draft tonight so I can start working on revising the other chapter.

Piracy Oddities: When I think about modern piracy I think of the awful stuff, that makes you feel guilty about being interested in piracy: mafias and triads hijacking ships and "making the crew walk the plank" as Cryptonomicon put it. But the ICC CCS weekly piracy report only has a few penny-ante incidents a week, mostly pirates sneaking on board and stealing ship's stores.

If you read between the lines ("Coast near Aceh is particularly risky for hijackings") you see a glimpse of more dangerous incidents that don't get reported or don't show up on the weekly report they publish to gratify our weird voyeuristic tendencies. A while back I read a book called Dangerous Waters which painted a picture somewhere in between, of an East Asian pirate threat that was ever-present and chronic but not with many resources behind it, and easy to foil in most cases if you took safety precautions. Where does the truth lie?

I bring this up because there's a note on the piracy report page that I noticed when I went to fix its Automat feed by rewriting the scraper in Beautiful Soup 2.0:

After Tsunami there were no incidents of any kind in the Malacca Straits for two months. However, attacks have resumed since 28.02.2005. In the last four weeks there have been three serious attacks of Kidnapping the crew for ransom in Malacca straits. Heavily armed pirates have boarded ships and seized the master and one or two crew members and taken them ashore. Pirates have not stolen any property and sole aim has been to kidnap the crew.

Did the tsunami reboot the Indonesian piracy industry, giving them a chance to come up with more agressive and dangerous strategies? What's going on?

[Comments] (2) : The best thing about Arrested Development (apart from the total interconnectedness of everything in the fictional world, without which the jokes wouldn't be funny) is that the Ron Howard narrator is a real character in the show. Kevin even says the narrator is the protagonist. Anyway, last night's episode verified my suspicion that, like all the other characters, the narrator is a petty soul consumed with his own minor obsessions.

Near the beginning he took a potshot at the narrator of some other fictional show, and then kept sniping at that other narrator throughout the episode. I couldn't get enough of this, as narrator-on-narrator bickering is one of the purest forms of fourth-wall-breaking comedy gold in my book, second only to narrator-on-character bickering.

[Comments] (1) Easy Come, Easy Go: A couple days ago I got a letter from the Clark campaign. They are wrapping things up and they have an outstanding paycheck for me and is this the right address? Apparently between the week where nobody got paid and the actual end of the campaign, I must have put in a few hours of useful work, because I have $50.80 coming to me.

Then this morning I did my Arkansas taxes and it turns out I owe the state of Arkansas another $53. So that money's just going to go right back to Little Rock.

Night Of A Thousand Game Roundups: Cheap game roundup to celebrate that I sent off the revised copies of both my book chapters today. Yes, I am pretty much awesome. But enough about me. The stars of this particular show are the games, presented by ME! T-Rex!

The winner: Strategic Space Combat, aka SSC. No limerick as I am done with writing for today. Submit your own limericks in the comments, why don't you?

[Comments] (1) What they did to my manuscript: I've decided to stop thinking of the Python book as a book with a bunch of authors and start thinking of it as an anthology of essays on Python. Thinking about it this way makes those huge multi-author books make a lot more sense.

However the publisher sees them as big books, so the copy editor went through my chapters (essays) removing the "I" voice because the "I" for this book has multiple personality disorder. I use "I" a whole lot, because my nonfiction writing style is "Hello, allow me to tell you stuff". My "I'll show you x" became "You'll learn to x", and "I think you should do x" became "You should do x". The latter I'm a little uneasy with. It's just, like, my opinion, man.

Speaking of which, the copy editor also took out my Lebowski homage (changing "parlance" to "terminology"), but left "encroaching ennui" and all of my jokes intact. Not a bad trade.

[Comments] (4) Oranges and the Juice Thereof: Planet Organics had blood oranges on their list. I've loved blood oranges ever since I had blood orange juice from a Tetra-Pak Susanna brought back from Romania. I ordered two pounds of oranges for an exorbitant $4.00. As a tribute to the old Romanian aristocracy, I would bathe in the blood of oranges!

Well, it turns out two pounds of oranges is six oranges. Furthermore, that six oranges when squeezed yield about a glass of juice. So I spent $4.00 (of Sumana's money) on a glass of blood orange juice. I was enraged, but then we drank the juice and it was really good. Also, if you go out to a nice place for breakfast around here, a glass of non-blood orange juice costs $3.50. So $4.00 for fresh blood orange juice is doable as a one-time thing. I wonder if you can get those Tetra-Paks here, though.

: How do I keep getting sucked into these things? It must be my instatiable greed for latinum. I'm now in charge of revising a third chapter of the Python book. Soon I'll be an expert at everything!

Almost Immediate Update: Perhaps I spoke too soon; the original author is going to try to make time for the revisions.

The Downfall of Kris: I showed this cartoon to Kris and he vowed revenge. "Gil's goin' down," he says.

[Comments] (7) Cute Baby Wholphin Of Shame: Whale-dolphin hybrid has baby wholphin. This is not surprising as, you'll remember, there are no whales involved here, only dolphins under false names.

Just Don't Let It Happen Again: Ambiguous headline watch makes a return, with Mexico's Fox May Pardon Leftist Mayor for Election.

Beautiful Soup 2.0.2: People who complained about Beautiful Soup not being set up with distutils, it is now. I also made real unit tests out of my ad hoc tests, so you get the Good Programming Practices two-for-one deal. In conjunction with the unannounced version 2.0.1 there are also some fixes for bugs I found while getting the tests into place.

: Saw Eternal Sunshine of the Spotless Mind with Sumana and Sarah. (Remember, you heard about it here first; you also saw it long before I did). Everything I might have to say about the movie has probably already been said, so I thought I'd just recount a funny bit of dialogue from when we were perusing the DVD menu:

Sumana: Ooh, deleted scenes!
Leonard: They're all deleted scenes!

: Depressingly, I have yet to make a dent in the ultimate high score list.

[Comments] (13) Anticatnip: There are stray cats that wander the neighborhood, and they like to sleep on the patio and in the garden. Sumana dislikes these cats; they creep her out. Is there an anticatnip I could plant that would let me externalize the cost of stray cats by getting them to sleep on other peoples' patios?

The Secret To Writing Tutorials, I Guess: Writing a tutorial is like writing a test suite for someone's understanding of a topic. You start off with very basic assertions and gradually build on them until you can make assertions about the whole system. If you don't do it this way, you don't have full coverage of the topic.

[Comments] (3) Cue "doodly-oodly-oodly" Music: Okay, I have revised that guy's chapter and I am now done with the Python book altogether! Except I still have to send off a list of helpful URLs, and a little bio. I'm thinking of reusing my CodeCon bio ("Leonard Richardson lives in San Francisco and writes software calculated to drive you mad"). I would actually be "using" that bio, which I like quite a lot, since as far as I know the CodeCon people never used it anywhere. Anyway, what should I put in my bio? And what web pages are good supplementary resources for 1) network programming, 2) web applications, 3) web services? I have my own list but I'd like to know what you think.

Tomorrow flying to Utah for John's graduation. Taking the train back means lots of time for reading, and for writing fiction. Ah, sweet fiction, where you can make up random stuff and no one can say it's wrong.

[Comments] (3) Brrrr: Are you guys okay?

[Comments] (2) Self-Promotion: Sometimes we have people over for dinner and then Sumana wants me to play the gee-tar for entertainment. Recently we had Riana over and Riana was surprised that I play music. Clearly I am not that good at self-promotion if people I've known for years don't know I play music, even though there's a music link right there on my home page. I blame all the other stuff I have to do that has kept me from finishing my new album and achieving the musical superstardom I obviously deserve.

At the opposite end of the self-promotion spectrum, Riana also thought Jake Berendes is someone I'd made up. That's a common misconception, but a misconception nonetheless. Jake is doing installation art pieces on the other side of the country. How could I fake that? I can't even sew. I think I sewed a little stuffed-animal-size pillow once, but it split apart.

[Comments] (1) Onionskin: What is up with the really cheap, thin paper used in mass market paperbacks published in the 60s and 70s? I got a used 1972 copy of The Sot-Weed Factor and it's about as thick as any other paperback novel, but it turns out that's just because the pages are one micron thick. It's actually as long as (and more obscure than) frickin' Quicksilver.

Doodly-oodly-oodly: Hey, guess what. I messed up the copy of the doctored chapter I sent in, so I had to do the doctoring again from John's computer here in Utah. Fortunately I had the screenshots and the sample code to work from, so it only took five dang hours out of my vacation.

: Leaving on the train, eventually. We went up to Salt Lake today and it was pretty fun. I was unable to find anything at the cool SLC bookstore, which makes me think that I can't go shopping for books anymore without my Pocket Wisherman printout. Actually I did find some stuff, but I was too cheap to buy it. So probably I'm just being cheap.

[Comments] (6) : Back from Utah after a long train ride. There was a guy who did color commentary over the PA during our sojourn in the Sierra Nevada, and he talked about the Donner Party for five minutes without ever mentioning cannibalism, discussing every other aspect of the Donner Party in so much detail as to make me think that the cannibalism part was an urban legend (which it wasn't, and if it was you think he'd have mentioned that interesting fact). But it got me thinking along the same lines as many of my previous thoughts: why shouldn't I create and sell soy-based human flesh for ethical cannibals and the curious? I could call it either "Soyman" or Soy-lent Green".

[Comments] (1) Ye ask, What eat our merry Band/En Route to lovely MARYLAND?: Amtrak food: bad. Same logistics and preparation, but worse taste than airplane food. If you eat in the dining car it's got better presentation with tablecloths and real plates, but don't be fooled.

Fanboy Roundup #2: Tragically, NYCB fan favorite Bob the Tholian was killed in the most recent episode of Enterprise. Or was it merely his evil mirror-universe twin, Bob the Evil Tholian? You can tell he's the evil one because his name is spelled backwards. And the little crystalline goatee.

This season of Enterprise has been great for fansboy like me (apart for moment of sheer wince-inducing awfulness like week-before-last), but that's because it's been filling in gaps left by other Trek series. This comes at the expense of doing new interesting things that a franchise needs to do to get new viewers, and creating new gaps to be filled in by later editions of the franchise. I don't know if this navel-gazing was why Enterprise was cancelled, or whether, given the probable fact of its cancellation Manny Coto (my new Trek hero, BTW) decided to just do everything he ever wanted to see in Trek and damn the consequences.

Fanboy Roundup continues later this week with the Hitchhiker's movie.

[Comments] (2) BIDDLE NOWADAYS!: Someone's selling a laptop on eBay. Among the "REAL SCREEN SHOTS TAKEN FROM ACTUAL THE COMPUTER YOU WILL BE GETTING!!!!!!!" is the CNN screenshot from the Eater of Meaning (scroll down to "GO ONLINE TO THE INTERNET"). Plus things that aren't even screenshots, just the result of Google Image searches.

Ordinarily I 403 people trying to use Crummy images to spice up their eBay auctions, but I'll make an exception in this case. I guess if you bought this computer, the whole Internet would look eaten to you.

[Comments] (4) Graphs With Python: What's good for doing programmatic graphs with Python? I'm using PILGraph for a little project of mine. It's nice and simple but I'm having problems getting the labels to actually show up. I'll probably end up fixing it because I like the simplicity, but I'm wondering what else there is.

[Comments] (6) Ancient Chinese Secret, Huh?: I am interested in ancient history; I don't know why, but I like hearing about things that happened an incredibly long time ago. Let's say between 1000 BC and 1400 AD. About a year ago I reached the satiation point of my original interest in the Roman Republic and Empire (though I still plan to finish Gibbon, and to read primary sources). I've branched out both temporally and geographically, but I am having big problems finding good-quality books on ancient history. Part of this is probably due to a lack of written documentation about many parts of the world, or at least documentation that is not written by foreigners and full of crap about how peoples' feet are mounted on their foreheads. But some of it is just weird inexplicable gaps.

Lack-Of-Cliffhanger Cliffhanger: I read Dan Simmons' Hyperion and for the most part it was great. The universe is well-fleshed out and has fairly credible newslang and people act believably. It reminds me of the universe in the The Legend Lives! IF game, which I always liked and which I think has the most interesting universe I've seen in sci-fi IF, albeit one of the worst titles. (Obligatory disclaimer: Planetfall and Suspended and probably others are better games.) Geez, I haven't played any IF or felt guilty about abandoning my IF project for probably a year. Anyway.

The book is really good in general but parts of it are very boring (boringness is not correlated to "action" in the crude sense: some of the most boring scenes describe firefights and daring escapes). In particular there's a boring part about 40 pages from the end which goes on and on with fisticuffs and murder and repercussions and blah and blah. Maybe it's just boring because it's a framed story inside a much more exciting story that's coming to a head, and I've come to expect the last-minute revelation in these stories that someone is not who he seems. In my sci-fi epic, revelations that people are not who they seem will come at unpredictable times.

This framed story's eating up more and more pages and I realize that not only is this book the first part of a multi-part series, but it's not going to have a real conclusion or even a cliffhanger. Instead it will be as though it was originally a longer book that got split down the middle. Sure enough, that's exactly what happens. Just a chapter break with no next chapter after it, even though with about ten more pages there could have been a real heart-pounding "to be continued" cliffhanger. I never realized this before, but this is more frustrating than a real cliffhanger!

So, good book, but no resolution, even by the accepted standards of first books in series. I'd advise you to get the first and the second books at once, but maybe you won't like the first book and you'll blame me for forcing you to buy into the capitalist publishing machine when all I did was advise you to do this. Also, the copy I got in the used bookstore has much better cover art than the overly literal cover art you see for the book at Amazon. So get the, ah, 1991 edition if you want to feel threatened every time you close the book, instead of feeling like you're reading an Edward Scissorhands novelization.

RSS feed construction helper: This is kind of a neat tool I wrote but I'm not sure what to call it. It's a wrapper around the famous PyRSS2Gen library. It provides a simple pickle-based backend storage for state relating to an RSS feed that's screen-scraped from a web page. Some of the state it stores is redundant with the actual content of the RSS feed, but some of it is contextual information like "when was the first time a screen-scrape attempt found the item that has this guid"? (I am too tired to explain why this information is useful, but trust me, it quite often is.)

The tool provides convenience functions for fetching a new version of the web page, and does the good-citizen Etag and Last-Modified thing, so all you have to do is write a hook method that scrapes the webpage into a bunch of RSS items and adds them to the feed. As items go on the top of the feed, older ones automatically drop off the end.

In conjunction with Beautiful Soup) this makes it incredibly easy for me to screen-scrape a web page into an RSS feed and have it keep working over time. Up to this point I've been trying to run the various Syndication Automat feeds out of NewsBruiser notebooks. It's a clever idea but cleverness is just about all it's got going for it. It's clunky and awkward, and there are some cases I just can't handle, such as the Dover page where the items I want to RSSify don't have any dates on them. (That's why the contextual information mentioned earlier in this entry is useful, BTW)

I thought any alternative to using NewsBruiser would be a lot of backend work, but it's not. My module's about 150 lines of code: here it is in a temporary location until I come up with a real name for it: RSSHelper.py. Here's a sample script that uses it and Beautiful Soup and ASCII, Dammit (actually the "HTML, Dammit" subset) to make a Dover automat feed.

It originally took me an hour of work and eventual failure to get a NewsBruiser notebook-backed feed for the Dover site. It took about five minutes to write that script linked above. And the new script actually works, instead of putting the same books into the feed over and over again.

I've got the same feeling with this as I did when I stopped writing custom parsers for screen-scraping and started using Beautiful Soup. Is this as cool as I think it is? Do things like this already exist? What should I call it?

PS: Danny deserves a midwife credit since I came up with this and wrote it while working on my second hack for the Life Hacks book.

When Ideas Collide: I love it when a plan comes together. The perfect use for tiny images embedded in the body of a webpage is sparklines, Edward Tufte's trendy post-literate ideographs. Joe Gregorio has the Python implementation.

[Comments] (2) Subway: I was planning to write a series of articles on Subway, but a cursory run-through shows that such a series of articles would probably spend most of its time guiding people through small problems in Subway, and my time would be better spent organizing fixes for those problems instead of enshrining them in print. In other words it's not mature enough yet to be the subject of technical articles. So I may go back to my original idea of just writing individual articles on Cheetah and SQLObject, as I'd planned before I realized "hey, these things are all used in Subway". What do you think? Am I selling Subway short?

[Comments] (4) Hitchhiker's: Wow, that was great. Good job, Yoz!

Out Of Order: This was supposed to have been published yesterday:

New Beautiful Soup, with minor fixes and real Python 2.2 support. Now going to see Hitchhiker's with Sumana and Zack.

Python Generators: I'm messing around with Python generators for the first time, because I figured they'd make it easy to write different ways of traversing a Beautiful Soup parse tree, a la Ka-Ping Yee's scraper script. And they do make it easy, but they also slow down recursive tree traversals quite a bit. Is there a fast way to do this, or should I just unroll the recursion so I'm not creating a million generators?

[Comments] (2) Hey Hey Hey: At the DI in Provo there was a Fat Albert T-shirt, but due to bad typography it actually said "Fatal Bert and the Junkyard Gang". I looked at it and thought "wow, that's a pretty cool band name", but then I was disappointed. So from now on, just call me Fatal Bert.

: My computer blew up. Fortunately, the hard drives seem okay. I'm not sure whether or not the motherboard got it or whether it was just the power supply, but I just got a new motherboard that I never installed because it wouldn't fit right in my case and my video card wouldn't fit in it. So really the whole experience has just been an impetus for me to buy the missing pieces.

: Beautiful Soup 2.1.0 contains a bunch of new methods that solve a large class of problems that previously required that you write a while loop that navigated the parse tree.

I'd been meaning to do this for a while, but the impetus for me actually doing it was that I ended up writing one of those while loops in the screen-scraping script I wrote for the vaporware Productivity Hacks book. With the new stuff in 2.1.0 I could trim a line of code from the manuscript and make it easier to explain.

In fact, Beautiful Soup 2.0 (and the RSS feed builder mentioned earlier, which is going to have a life of its own once I finish the hack) was done for the same reason: so I wouldn't have to explain in print what this complicated code was supposed to do. This is the true power of documentation: it forces you to make things work in a way that's easier to explain. Assuming you care about the people who are reading your documentation, I mean.

[Comments] (1) Damn frogs, stealing our women!: Every since I was very young I've been fascinated with the story of the frog who would a-wooing go. There are so many variants of the song, but they're all clearly about the same frog and mouse.

Sometimes they get married and everything's fine. Sometimes they get married but then eaten by a fish or a heron or a cat. Sometimes they get eaten in the sixth verse for no real reason. It's like a probability distribution of all the different ways the lives of the frog and mouse could end up. They probably got eaten, but I prefer the versions where they don't. Cause having them get eaten just seems like

I'm tired of singing this song to you, mm-hmm
I'm tired of singing this song to you, mm-hmm
I'm tired of singing this song to you
They all got eaten by a bird, and away it flew
Mm-hmm, mm-hmm, the end

Especially when it happens in the sixth verse.

[Comments] (4) Restaurant Review: Watercress on Valencia. A little pricey: $20 for three-course menu. They do one flavor really well: an earthy butteriness that was detected in beets, candied nuts, mushrooms, and chicken. Maybe it was just butter, but how do you get butter into a cube of beet?

Big problems setting portion expectations. We got salads and they were tiny (and tasty). Then the entrees were enormous (and tasty, though a little salty). We held off on the entrees so we'd have room for dessert, and then the desserts were tiny (and not good).

Oh, I need to review the really good place we went to in Provo. Later.

Uncle Morty's Dub Shack: I saw the series finale of Enterprise on Sumana's pre-post-production press preview DVD, but Sumana has embargoed me from telling you about it, so instead I will talk about Uncle Morty's Dub Shack. This is the funniest MST3K-style TV show since MST3K. In fact I think it is the only MST3K-style TV show since MST3K, but I'm not trying any predicates-on-sets-with-only-one-member tricks on you; it actually is funny. The setup is very similar to MST3K, but its episodes are only a half-hour long so it moves a lot faster than MST3K. It's also significantly lowerbrow than MST3K, but not as lowbrow as I'd feared. It's like an Adult Swim realization of MST3K.

The conceit is way too complicated, like a movie version of Pee-Wee's Playhouse that spends forty-five minutes building up Pee-Wee Herman as an eccentric cyberneticist who after his wife leaves him decides to build a strange playhouse with sentient talking chairs, etc. There's a theme song that explains the idea, but before that you get a thirty second-intro to the theme song that puts it in context, and by the time it's all over you've lost a good chunk of the air time.

Basically, four slackers are compelled to dub English versions of old Bollywood and kung fu films, but they don't have any translated scripts, so they just make up whatever story seems to fit the action. The show is half dubbed film clips and half skits like the ones before the movie on MST3K. Sumana originally thought the skits were dumb and fast-forwarded through them, but they're actually pretty funny and often clever.

Uncle Morty's Dub Shack is on the poorly-named Imaginasian TV, the new basic-cable answer to local Chinese channels. They run an episode practically every day, and it's not the big watching-a-movie investment of an MST3K episode. You just get the ten minutes of the movie about which the show's creators could make up the funniest story.

[Comments] (1) Restaurant Jargon: I've written before about words that only show up on restaurant menus, weird vegetables, and techniques like "coulis". At Watercress there was tomato something, "tomato coralage" or some similar word. I asked the waiter what a tomato corolage was, and he said it was just tomato sauce. So either he was patronising me, or he didn't actually know, or this mystery word actually means "made into sauce" and was just put on the menu to make the food sound fancy.

I've decided that when I see a word I don't recognize on a restaurant menu, I'll write it down to remember it, and expose its true meaning here on NYCB. First, the only cooking term so far I've learned from menus: coulis is a sauce made in a blender and strained to make it seedless and very smooth. In restaurants it is usually used to garnish a dessert, and is inevitably made from two fruits: raspberries plus something really off-the-wall like passionfruit. Using three fruits in a coulis would clutter up the menu. Using one makes it seem cheap.

Also, jicama, a food I first saw on restaurant menus. Jicama is a South American root vegetable that has the texture of an apple. I can't decide whether or not I like it.

[Comments] (2) Potato Blue Cheese Soup: I was going to make a potato-leek soup similar to Ultimate Chowdah, but the cream in the fridge had gone bad. So I came up with the idea of using blue cheese to thicken the soup instead of cream. It was definitely one of my better ideas.

Melt butter in soup pan. Add aromatics and salt, and sweat. Add broth, potatoes, corn, and herbs. Cover and cook, stirring occasionally, for 25 minutes. Get out the stick blender and blend it. Stir in the blue cheese. Add pepper to taste. Yum.

For the record, the aromatics I used were one onion, part of a leek, and two stalks of baby garlic. Yes, it's Clean Out The Fridge Daze here at Leonard's house.

[Comments] (4) : What's a webpage you've always wished had an RSS feed? I need a demo site for the RSS feed builder. I've already done two, but one is for the O'Reilly book and the other (new books from Dover) requires some fancy scraping that makes it too complicated to be an example.

[Comments] (5) : Yesterdate, the 8th of May, I installed seeds in my garden. Sunflowers, watermelons, corn, and "garden beans" (As opposed to beans that grow in the rec room? They look like green beans so I planted them.). I mention this so that I'll have a record of when I planted these things. I don't remember when I planted the potatoes, so I don't know when to reap the harvest. I don't even know how potato plants work. I guess I'll find out when I dig one up.

Still to plant: canteloupe, pumpkin. Already planted: potatoes, rhubarb, garlic.

My mother says there's no way to know what to grow: you just have to plant things and see if they die or not. Nothing grew when I planted last year, but I planted way too late and also the soil in my backyard was all dead. Not even weeds were growing there. I don't have that problem anymore!

Scrape 'N' Feed: I came up with a name for my RSS feed helper, and fixed it up, and I hereby release it. I don't know if I'm allowed to put that example on the actual page to illustrate the module, or if it has to be first published in the O'Reilly book.

I probably never would have come up with the idea for this module if it hadn't been for the need to compress the large feed-scraping problem into a small "Hacks" entry. I've never done so much work for a hundred dollars. (However, I have done a whole lot more work for nothing.) You are the privileged recipients; my feed-scraping has never been easier than with this module. Though sometimes I get the feeling that scraping web pages into RSS feeds is just an obscure hobby of me and a few others.

Update: Actually I have done more work for less than a hundred dollars. When I was about 10, I dug up a huge tree stump in the side yard. It took me most of the summer, on and off. I think I got fifty dollars for it.

[Comments] (1) Spam Poem:

tying steps my
pretty fly
human prison side reference anything fly

[Comments] (3) Use The Bike Rack: Kevin thought Community-Supported Agriculture schemes were for dirty hippies, but then I showed him this one where you go to San Juan Batista and pick up half a dang cow to take home.

[Comments] (2) : Beets. Pumpkins (smallish ones you can eat, not the big ones just make big doorstops that connote "autumn!"). Canteloupe. That's all the seeds I got.

Check out this thing that finds paths between Wikipedia entries. I love this kind of thing, and this is the most impressive one I've seen. It's as fast as Downhill even though it's probably got an order of magnitude more data to match up.

DSR: i want a website where you can make a baby and you get money and play games and go shopping

A website, huh?

[Comments] (1) Friday Pie-Blogging: Going to Seth's party. I made a vegan strawberry-rhubarb pie, with rhubarb from my garden. The first fruits of my garden! Fun fact: the leaves of the rhubarb plant are a deadly poison! Well, they're a poison anyway. Much like lilies.

[Comments] (2) : I came up with the perfect name for my restaurant: "Overkill". It signifies everything I want in a restaurant. I don't think I actually want to have a restaurant, though. Too much work, not enough payoff.

[Comments] (3) Things That Are Fun: Writing stuff to fulfil various obligations. It's kind of slow going. My creativity seems to be exhausted for the moment. Thus, this spectacularly dull entry. Anyway, here's a cool picture of a mola mola, and Kris is going to start doing another comic soon.

Still Nothing Interesting Happening: Having no luck getting all the parts of my computer to work together: my video card seems to have taken over the PCI bus, preventing anything else from working. I knew we never should have moved past 1993 computer technology. I have given up getting it to work until I get my articles written.

On the plus side, strawberries are delicious.

[Comments] (4) : My mother likes the map of recent earthquakes in California. Maybe she'll enjoy TASTING THE FUTURE with the map of earthquake risk in the next 24 hours, calculated from the other map with scientific formulae.

[Comments] (3) : There are pictures of Lily on my camera. How did that happen?

More Hits: I just heard a car alarm that sounded like "Take Me Out" by Franz Ferdinand.

[Comments] (1) : I have read a few chess tutorials in my time but none has held my attention like Predator at the Chessboard. Maybe it's just the dinosaurs.

This site is titled Predator at the Chessboard, and is decorated with dinosaurs; yet the dinosaurs pictured are herbivores. Is this not a contradiction of some sort? In fact it isn't; and this, patient reader, for two reasons.

Yes, now it is the plants who are the prey.

[Comments] (1) : I misspelled "metadata" as "meatdata", which is funny because I bet "metadata" and "meatdata" are opposites.

[Comments] (2) Xiao Loong And Thanks For All The Fish: Yesterday: date with Sumana. We went to Xiao Loong in West Portal, a tiny Chinese restaurant which I've always thought would be really classy just because the door is painted a really cool shade of red. Well, it is pretty classy. They use a great technique where they dip things into hot oil for one millisecond and then stir-fry. The sauces are good but the tofu was in big chunks that didn't absorb the sauce very well. We had to mash it up to make it not bland yet covered with sauce.

Video rental time! We got The Great Dictator and the original Ladykillers. The Great Dictator was alternatively hilarious and bizarrely sentimental. You don't see movies with names like The Great Dictator anymore. I miss that.

Oh, one weird thing about this movie. At the very very beginning there's a scene during World War I and Charlie Chaplin is playing a German soldier. So you think he's playing fake-Hitler, because of course real-Hitler was a soldier in World War I and used this to his political advantage later. But apparently this was not common knowledge in 1940, because in the first scene Charlie Chaplin is playing the other guy in the movie, the everyman barber who just looks like fake-Hitler, and it's incredibly disorienting. You're expecting in the first scene the kind of vicious anti-Hitler humor you end up getting later on in the movie, because c'mon this guy is Baby Fake-Hitler, but he's played as a garden-variety buffoon, the Tramp, not fake-Hitler at all.

We just finished The Ladykillers and it too was great. Truly this is the weekend we struck comedy gold. About halfway through I realized that Alec Guinness' mannerisms in that movie are just the same as Danny O'Brien's mannerisms. I expect the movie would be even funnier if you watched the whole thing imagining it's Danny O'Brien planning the heist.

I inherited a corduroy jacket from my grandfather, which I wear sometimes when I go out. It's great because it makes me classy. Without the jacket I haven't shaved and I'm wearing ratty jeans and a T-shirt I got for 25 cents at a yard sale. With the jacket I get let into restaurants.

Back to working on article.

: Reading The Metaphysics of Star Trek because I got it for free somehow. I can never tell if the people who write these books are required to incorporate every single relevant reference from the TV show, or if they're just really good at picking and choosing examples to illustrate the various controversies.

The book is a pretty good introduction to the problems of mind and identity; I had not previously heard of the closest-container schema for numerical identity, and it's interesting but it doesn't make me feel any better about going through the transporter. Plus this book introduces a great term which I think deserves wider use: "recruited matter".

So it's a lot better book than I thought it would be, and not so aggressively "that is impossible" as The Physics of Star Trek, which I must have also somehow gotten for free because I wouldn't have bought it. These books apparently just fall off the backs of trucks into my lap. I believe Sumana is involved.

[Comments] (3) Found Fiction: Sometimes the new Project Gutenberg texts that show up in my RSS feed are really interesting, but usually they're boring sentimenal novels of the nineteenth century. However even boring sentimental novels can provide entertainment value via their lists of illustrations at the front of the book. When each illustration is captioned with a corresponding line from the book, you can read the captions as a sort of derivative work created at semi-random out of sentences from the book. It often makes for intriguing literature.

For instance, The Day of Days we get this little denoument:

"What I want to say is—will you be my guest at the theatre tonight?"

"You are the one woman in a thousand who knows enough to look before she shoots!"

Facing her, he lifted his scarlet visor.

He was Red November.

And in Little Eve Edgarton this madcap comic gem:

"Music! Flowers! Palms! Catering! Everything!"

"I am riding," she murmured almost inaudibly

"I would therefore respectfully suggest as a special topic of conversation the consummate cheek of—yours truly, Paul Reymouth Edgarton!"

"Your paper-doll book?" stammered Barton

"Don't delay me!" she said, "I've got to make four hundred muffins!"

Suddenly full comprehension broke upon him and he fairly blurted out his astonishing information

"You're nice," he said. "I like you!"

"Any time that you people want me," suggested Edgarton's icy voice, "I am standing here—in about the middle of the floor!"

Man, four hundred muffins. Almost makes me want to read the book. Actually I just skimmed it and that one's not too bad.

When Things Happen: My Soy-lent Green idea has come to fruition as HuFu. Specifically it has come to fruition as T-shirts and other paraphernalia about the purported product; you can't actually buy any.

[Comments] (2) become one of the low rates: Continuing my interest in mortgage spam. About 90% (or, perhaps, 3.77%) of the recent mortgage spam I've seen tries to give the impression that this is a follow-up to some earlier missed connection. For instance, from the most recent specimen to get past my filters: "We tried to contact you earlier about flnanclng your home at a lower rate."

Why is this such a common feature of mortgage spam? Are they trying to trick the people who are trying to get a mortgage but haven't heard back from the bank? A sort of phishing applied to customer poaching?

: List of possible terrorist plans. Includes dumb ones, and oddballs like "Terrorists might throw the nation's largest pancake breakfast." "Terrorists might unplug ticker tape thing." I think I've done that by accident. This needs to be an NKI list. Robotfindkitten: Public Safety Edition. Be alert!

: New feeds at the automat, for Kris' dual comic threat Checkerboard Nightmare and Starshift Crisis.

[Comments] (5) Ultra Guilttrip: Big ole weblog entry on recommendation systems mentions the Ultra Gleeper, and Paolo Massa, whose paper I referenced in the UG paper, has also noticed it. I find a lot of good weblogs to subscribe to from backlinks and being del.icio.used.

I have from the beginning felt that my paper is a much better contribution to the field of computer science than the Ultra Gleeper itself. The Gleeper, like all flesh, is frail and has shortcomings, but the paper exists in the realm of ideas, and solves all the damn problems and crowns me king of the world already.

Regrettably I have used this fact as an excuse to not work on making the Ultra Gleeper easier to install and use. I am a mess, I have writing assignments and even despite that I'm lazy and don't do work (this is also the reason I have not responded to your email). Also I beat myself up about the absolute amount of time I waste, even though by relative standards I'm a pretty productive guy.

Oh yeah, as long as I'm touting accomplishments that just highlight my lack of follow-through. blogs.gnome.org has started using NewsBruiser for their user weblogs, and they say nice things about me that I don't think are deserved. Also Benjamin Kahn ported one of those standard weblog themes (ie. one of the ones you see everywhere on weblogs of all shapes and sizes) to NewsBruiser. It looks nice!

: Let us now praise famous Josh Myers. This occasional NYCB commentor has recently done two things of note. First, he came up with a clever way of determining form submission encodings by hiding known HTML entities in forms and seeing how the web browser screws them up. Useful... and deadly! In certain extremely borderline situations.

Second, Josh has started a reading group for The Art of Computer Programming. His aim: use group dynamics and the fear of failure to make the members of his pact keep reading the thing and working the exercises. I always knew peer pressure was a technology capable of substantial non-infringing use.

[Comments] (3) What People Did Before The Internet: Went crazy in Antarctica.

[Comments] (2) : I've always wanted to write an early history of character sets, but I've been beaten to it by the guy who wrote FidoNet. Way to rub it in.

[Comments] (2) : In Bakersfield, as seems to be the tradition. Went to the Bakersfield Home and Leisure Expo, which was on the fairgrounds and sounded like it would be like the county fair. Unfortunately it was only like the part of the county fair that's a big ripoff. There were a couple desultory snack bars, and a single building full of booths for various businesses, mostly mortgage-related. I expected them to come up to me and act like they already knew me. Cool things: Jerky Hut, where I got some habanero beef jerky for Kevin, and this business that sets up dress-up tea parties for little girls. Yes, the thing girls once did as a normal leisure activity is now catered and done as a birthday party or something. It's like if someone tried to sell me a party where you go swimming and then play Nintendo. But Rachel seemed very interested in the tea-party idea, so maybe I'm missing something.

Oh, the reason we wanted to go in the first place was my mother heard that there's this guy who does topiary dinosaurs, and we wanted to see that. He was not there. There are topiary dinosaurs online, though.

: For lack of anything better to do Rachel and I went to see the new Star Wars movie. And it was pretty good as such things go, though... well, if I start complaining about things I'll stop liking the movie. Just one thing: all the scenes take place in furniture catalogs. In fact, furniture catalogs are more realistically furnished than the scenes in this movie. Nobody in the movie has any paperwork or magazines lying around or anything. It's creepy. But this, as with all of this movie's shortcomings, just leaves me wondering if the same shortcomings are also present in the original movies, hidden behind a veil of nostalgia. Come out from behind that veil of nostalgia and fight, you cowardly shortcomings!

[Comments] (1) Dr. Teeth: So I went to the dentist to get a crown put on the tooth that's had a temporary filling for three years, and he didn't seem incredibly impressed with the job my braces did straightening my teeth. Personally I think my mutant tooth is still a little crooked but on the whole they're straight enough. Anyway, he tried to upsell me on some gumline cosmetic surgery that was just plain weird.

Here's a rendition of my two upper front teeth with the gumline:


As you can see from my state-of-the-art diagram, the gumline above the mutant tooth is higher than the rest of my gumline. That pesky tooth is weird enough to guarantee I'll never be in a cereal commercial, but it's not a big deal. This is where the upsell came in. The reason it was weird was that I'd think cosmetic surgery might be used to restore my gumline to the population average, making it look like this:


But it seemed like my dentist was proposing raising the other tooth's gumline, bringing me further from the population average for the sake of local symmetry:


And making me look like a rabbit. No thanks. Of course, we've already established that I know nothing about teeth or how they're supposed to go into the mouth of Homo sapiens, so maybe that gumline isn't as weird as it looks.

[Comments] (3) : Man, the heck with this.

[Comments] (2) Kinds of Sauce: As Kris' and my generic Tom Waits parody goes, "Life just keeps suckin'." However, I have discovered that hot fudge sauce is better if you make it with coconut milk instead of condensed milk. Also, I made a strawberry coulis and it didn't turn out great. Not bad for a first try though.

Game Roundup: The Antirevenge: I'm actually not terribly clear on this concept of "antirevenge", but I do know a few things about games and the rounding up thereof, as I shall demonstrate. Incidentally, my fancy new graphics card has graphics acceleration, so I should now be able to review a bunch of games (like Kenta Cho's magnificent space shooters, each of which redefines the genre) that have been stacking up because previously my only review of them could have been "too slow".

The Krakow Wakes: Friday night dinner date: Krakow in West Portal. Polish food. Pricey, but everything's homemade and good. They have a wonderful thing called sourdough soup, which I don't even know if it's a real thing or if it has actual sourdough in it or what, but it was incredible. Best chicken I've had in a long time, but that's not saying much because I only eat chicken in restaurants and, like restaurant chocolate cake, restaurant chicken is always incredibly dry, so just doing chicken right is enough to be noteworthy. The only saeurkraut I've ever eaten and enjoyed. Good chocolate mousse for dessert. I would go again and just eat a couple bowls of the soup. It's that tasty.

: Done with the Cheetah article. Good to know I can still put these things off until the last minute.

[Comments] (1) Missed Calls... Of Destruction!: Riana and I went to see a preview of Godzilla: Final Wars, but it was sold out, so no Godzilla for us. Instead we watched a DVD of Kiki's Delivery Service, which was great.

Working on a little project which is fun and which you might like when I'm done. Also trying to get my sci-fi story done before someone actually implements the idea and it becomes pointless New Yorker fiction instead of sci-fi. My next article isn't due until the end of the month so I have a little time to do other things.

: Lately I've picked up an interest in the universe. I come to this interest only recently, after becoming frustrated at the lack of anything else to be interested in. Where to start but with a map of the universe and its major features? Disturbingly, among its major features are two Great Walls and something called The Great Attractor, which can't be good. Disturbing it may be, but this new hobby of mine has much to recommend it. Now, if only there were souvenir bits of the universe that you could buy and take home with you. Wait, that's it! I'll be rich!

[Comments] (1) Hubris: There are a bunch of buildings full of biotech companies by where I work, and today I saw a big on-building logo that said "LifeMasters". I feared for the worst, but it turns out that LifeMasters is just some health care thing for people with chronic conditions. I've never feared for the worst and then been so disappointed.

[Comments] (7) Gained In Translation: I should have mentioned earlier that my seeing Kiki's Delivery Service earlier with Riana was actually the second time I saw it; I'd also seen it the day before with Sumana. Also we had watched Elf, which Sumana really likes but which I wasn't crazy about.

Anyway, when I watched it with Sumana we watched it in Japanese with subtitles, just because that's how we saw Spirited Away in the theater and we liked the voice work for that movie. About halfway through the second viewing, the disc started acting up and we tried various things to fix it, including switching the audio track to English. And gaah! but the English track was a mess.

There was already a perfectly servicable and (as far as I could tell) pretty faithful English translation, which was used as the subtitles for the Japanese audio track. But in the dubbed version, this translation had been jettisoned in favor of what was clearly a much looser and greatly inferior translation, complete with entirely new lines of dialogue that didn't even work. It was like someone's bad fan fiction had been dubbed onto the movie. So I guess I am going to have to be a subtitle snob, if that's what they do when they dub movies. I never really compared the subtitled versions of a particular movie to the dubbed before, because I assumed they used the same translation for each. Does this always happen?

: I restumbled upon the term I first encountered in a restaurant a month ago. It's "concasse". Once again the peculiar genius of the French is evident: "concasse" means "chopped-up tomatoes". Ah, but if la tomate, she is but lightly mashed, zen she is "a la dabruque". So simple, non?

[Comments] (2) NewsBruiser Nepotism Number N: My cousin Jill Whitney now has a weblog! The template looks just like John's weblog, but it's blue!

: Remember the Game Roundup about a year ago where I gushed about a game called Metal Blob Solid? Well, the game is now complete, and there's a postmortem along with postmortems of the designers' other games. I've always loved game postmortems, especially for open source games.

[Comments] (7) : I tried making marshmallows with agar agar and it was a disaster. What went wrong? I tried again with gelatin and that too was a disaster, but not in an unsuccessful-marshmallows way; more like a third of the marshmallow mixture stuck to things like my hands and the kitchen, and wouldn't go into the pan.

Perhaps if I made marshmallows using John Agar as the thickening agent. Yes, that would surely work.

[Comments] (1) : I came up with an idea today which is not particularly clever, but which I think I could get a patent on if it's not already patented. It's the same caliber of ridiculous stuff that gets software patents put on it, and I was idly kicking around the meta-idea of actually trying to get a patent on it to use an example of ridiculousness. Does this make any kind of sense or is it all a sucker's game?

[Comments] (2) The Bayes Motel: I kept wondering about the suitability of Bayesian textual analysis to such-and-such a problem domain. Would it magically solve the problem as it does with spam, or would it be like trying to evolve an artificial intelligence by rating randomly generated sentences? Eventually I decided that the time had come for action! So I hired this guy to write a really simple generalized Bayesian rating application which you could use for just long enough to see if the problem was tractable. Yes, I don't just sit around--I make others do my bidding! But then he subcontracted it to a company in the Phillippines, and they went out of business, and their contracts were picked up by a floating libertarian utopia on a raft built out of abandoned oil drums, so make a long story short I ended up doing it myself for about half the price.

It's called The Bayes Motel and it does a pretty good job. By which I mean I wrote applications using it for a domain where Bayesian rating obviously works, and one where it almost works, and... it works and it almost works. TBM also does something I've been wanting for a while without realizing it: different tokens are displayed with different colors, to help you visualize how a piece of text got a certain Bayesian score. Pretty slick! And inefficient. Oh well, it's not supposed to be a big heavy-duty application anyway, just a prototyping tool. I hope you find it useful.

If I were a real hacker I would forget this Bayesian nonsense and do a Python implementation of Fast and accurate text classification via multiple linear discriminant projections. Even in accomplishment I feel guilty!

[Comments] (5) : Sumana has been playing a CD of marches so I have been marching around. I invented a march I call the Dinosaur Stomp March. In this march you stand perfectly still and pose like T-Rex in the third panel of Dinosaur Comics, and move your left leg up and down in time to the beat, stomping on something. It's kind of an avant-garde march because it disregards what's generally considered the primary purpose of a march: getting you somewhere else. On the "things stomped per measure" metric, though, it's off the scale.

[Comments] (4) : I've seen recipes for brewing root beer before but they always involved bottles and bottlecaps and some kind of crimping device for affixing the bottlecap to the bottle and blah and blah. That's why I was so interested when I found David Fankhauser's recipe where you brew the root beer in a two-liter bottle. Great idea!

He's also got lots of other interesting recipes, mainly for homemade cheese and other dairy products. My seventh grade science teacher was named Larry Fankhauser; I wonder if the two are related.

You're So Vague: I think this song is about you, don't I, don't I?

Del Eat: I wrote a tiny script that runs my del.icio.us tags through the Eater of Meaning's WordEndingEater to get different words, and prints links to the tag pages for those words. Sometimes these tags don't go anywhere, like "carpets" or "antedates", but sometimes they're pretty interesting, like "macro" (wonderfully ambiguous) and "twenty". It's fun--until you try it yourself!

No packaging; I'll just put it inline for those interested. You need the Eater, of course, and Beautiful Soup (or one of those fancy del.icio.us-Python interfaces with all the XML dependencies).

#Del Eat
#by Leonard

import urllib2
import os
import sys
from BeautifulSoup import BeautifulSoup
from eater import WordEndingEater

if len(sys.argv) != 4:
    print 'Usage: %s [username] [password] [path to Eater prefix file]' \
          % sys.argv[0]

username, password, path = sys.argv[1:]
if not os.path.exists(path):
    print 'No such Eater prefix file: %s' % path

authinfo = urllib2.HTTPBasicAuthHandler()
authinfo.add_password('del.icio.us API', 'http://del.icio.us', 
                      username, password)
opener = urllib2.build_opener(authinfo)
xml = BeautifulSoup(opener.open('http://del.icio.us/api/tags/get').read())

eater = WordEndingEater(path)
print '<ul>'
for tag in xml('tag'):
    eaten = eater.eatWord(tag['tag'], 'text')
    print '<li><a href="http://del.icio.us/tag/%s/">%s</a></li>' % (eaten,
print '</ul>'

[Comments] (2) Who Wants to Be A Hundredaire?: I got into the book-writing business at the beginning of the year, on the recommendation of Clark colleague Tony Steidler-Dennison. Not only has the experience been more or less fun, but with my pen I have made enough money to pay for the dinosaur hunt I'm going on with my mother in August (assuming it is just a trip to Alberta to see some dinosaur bones and not some sort of Sound of Thunder thing where we hunt live dinosaurs).

Now, you too can gain entry into this lucrative field (writing, not dinosaur hunting)! Tony thought of me when his editor needed someone to work on a Python book; now I'm paying it forward. My Wiley editor needs someone to finish a chapter about clustering on Knoppix. I don't have the equipment to run any kind of cluster, but I bet one of my readers does.

You should probably know something about cluster programming, but not neccessarily anything about Knoppix. The ability to write good prose is 5-10 times more important than knowing about the topic beforehand. You just have to be good at picking things up quickly, because by the time you're done you will need to know a whole lot about the topic.

Send me email if you're interested in this. It's just one chapter and much of it is done already, so it's about the easiest introduction into the world of writing you could hope for. If you deliver on time the editor will have a mental picture of you as someone who saved their bacon, and think of you for other, larger projects, and pretty soon the world is your scallop.

[Comments] (1) : Is Rogue not realistic enough for you to consider it a true tactical simulation? Perhaps playing it on a hex grid will help.

[Comments] (3) Jonathan Strange and Mr Norrell: I can't say enough good about this book (mainly because I'm tired). It's great. You should read it. I borrowed it from the library--it was just sitting there and I was able to read it for free! Amazing, these libraries.

[Comments] (4) Dry Cake: Every time I make a cake (as opposed to brownies or some other baked dessert) it comes out dry. I can't figure it out. What are the causes of dry cake? I am not accustomed to my food disobeying me in this way.

[Comments] (1) : The Fresh Loaf is not the vegetarian version of FreshMeat; it's a web site about bread. Makes me want to make some pretzels.

I made some bread yesterday actually. A couple weeks ago I was running out of pizza dough so I decided to make some more. But I wasn't thinking and I made french dough starter instead. So, lots of french dough starter in the freezer.

[Comments] (4) : I did make pretzels, and they were great but I didn't oil the pan so they stuck. Oh well. One lives, and, occasionally, learns.

I finished the revision on my Cheetah article, and submitted the first draft of my CherryPy article, so now I'm ready for my next overambitious project! Man, this is a big one.

[Comments] (1) Map Time: All sorts of ecology maps over at Mapping the Biosphere. Where else can you find the global map of soil pH? Actually, if you can find that somewhere else let me know, as that somewhere else probably has other interesting maps.

[Comments] (1) : There seems to be some interest in a Ruby port of Beautiful Soup, and I'm thinking of doing the port myself. I need to stop being a dilletante and do a good-sized Ruby project, and that's a good place to start. Do any Ruby people read this weblog? Would you like to have this?

[Comments] (3) : Floyd from The Fresh Loaf, who presumably knows from bread and bread byproducts, tells me that the sourdough soup I had at the Polish restaurant was probably zurek, and looking at the recipe I agree. Zurek is made with rye sourdough starter, so it is actually sourdough soup. Inventive.

Floyd also mentioned that he dabbles in Ruby, so that's one. I am going through the Poignant Guide, which is funny and gonzo and Fafbloggish, and I have a simple question about idiom. I see code like the following, which sets up a block that deals with a single item:

File::open('foo.txt', 'w') do |f|
  f << "text"

This idiom makes sense when you're iterating over a bunch of items, but why create a new block to deal with a single item? Is it somehow more Rubic (Rubyic?) than the following code, which seems much more straightforward?:

f = File::open('foo.txt', 'w')
f << "text"

Let me know. I'm trying to spare you the details of my mastery of Ruby (and puppets), but this is undoubtedly the first of many questions.

Dichotomous Google Memewatch: "Threat or Menace?" is much more popular than my favorite false dichotomy, "Myth or Fallacy?"

[Comments] (9) : I was Google sightseeing (they just put up the first decent-resolution satellite photos of the whole world that I've ever seen) and I noticed something weird in Libya. It looks like the Black Pit of Doom. Now that I've seen it I can find the same feature on other, much larger-scale satellite maps. I'm almost positive it's a real geographical feature and not a picture of a solar eclipse or something, but I can't find any information about it on the web. I tried the geographical name search engine for that latitude and longitude, and nothing it found seemed to match. What is that thing? It's creeping me out.

: Are your Nethack bones files dull because you always play the exact same character? Sign up for Hearse and it'll deliver other peoples' bizarre bones files straight to the directory in which you put bones files. Other, inferior bones file sharing services put the bones files in inappropriate directories like the current working directory, or /usr/bin/. Not Hearse!

My Neighbor Totoro: Really cute but somehow not a whole lot of substance. The She's Got a Thing for a Spring of movies. But I would watch it again (and I would probably play She's Got a Thing for a Spring again). Some of the more bizarre qualities I exhibit (the stomping around and roaring) I used to think were Godzillan or T-rex-esque, but now I think they might be totoroid.

The DVD we borrowed from the library, which is apparently the only edition available in the US, was dubbed (who knows how well etc.) but supposedly Disney is going to release a subtitled version soon... Hold on, I've just been handed a late-breaking bulletin. It seems Disney won't have enough incentive to release the subtitled version unless copyright is extended another twenty years! Hey, why is this "bulletin" written with letters cut out from magazine headlines?

The Man in the White Suit: We just finished watching this movie and I checked my mail and there was spam Business Cooperation in Textile Products. So he's still at it.

Oh yeah, the movie. Not as funny as The Ladykillers, but a more interesting plot, with several good dramatic moments. The Lavender Hill Mob is now waiting at the library, so our Film Festival of the Long Now proceeds apace, in which we will eventually see all the Ealing comedies starring Alec Guinness.

[Comments] (1) Deglazing: Clip 'n' Save: Brendan doesn't know how to deglaze a pan so he is stymied by my mother's chicken recipe. You deglaze by pouring a cool, flavorful liquid into a hot pan and then quickly scraping off the pan all the burnt bits that stuck to it while you were cooking. The burnt bits and the flavorful liquid will form the basis of a sauce. To deglaze, you usually use one of the three Bs: broth, booze, or lemon juice that somehow starts with a B.

[Comments] (1) Game Roundup You Can't Get Out of Your Head: Lots of Roguelikes and pseudo-RPGs in this Roundup, mainly the luck of the draw. There were a lot of Pac-man type games, but there were so many Pac-man type games, more and more of the URLs from my Game Roundup file turning out to be Pac-man type games, that I decided to round them all up in a special "Pac-man Type Game Fever" roundup, forthcoming.

Ethics: Sumana pointed this out during the screening of The Man in the White Suit, when the captains of industry are trying to get Alec Guiness to sign away the rights to his idea. Some people don't care about you as a person at all; they'll try to cheat you, walk all over you, trick you, but they won't lie to you. They have to be able to convince themselves they gave you a fair deal. That's why that scene is so great. You don't see that trait in movies much anymore; it's too complicated.

Fraud of the Century: Not, as would be cooler, "Frog of the Century". Today I went with Sumana and Riana to the Monterey Bay Aquarium. There were awesome jellies and a sea turtle and huge sharks and huge tuna and penguins and bat rays that you could touch (they feel so soft!), but the real reason we went was to see the awesome mola mola (mola mola), king of the open seas. And indeed there was a big tank containing lots of fish and surrounded by drawings of the mola. But there were no molas in the tank! The gift shop had postcards of that tank which distinctly showed two molas, so the molas must have died or gone on vacation and been removed from the exhibit. I bought a poster of the postcard but that was as close as I got to a mola today. Big disappointment.

We did see a guy who works at the aquarium and was a college friend of Pete Peterson II, and the jellies were incredible. They were illuminated from within the tanks, and in one of the tanks you could push a button to turn off the light and see the jellies become nearly invisible.

Coming soon: sea creature nomenclature prescriptivism: exposed!

[Comments] (1) Garden Refactoring: Went to the garden store to get new stuff to replace the stuff that died. I got a big jasmine bush because Sumana really likes jasmine. I also got the Sunset book so I wouldn't have to keep calling my mother with "will this grow?" advice. The Sunset zone system (and the underlying biology) is so complicated; there should really be a big online lookup table.

[Comments] (1) Jake Berendes BoogaBooga: A couple days back Jake was in BoogaBooga (nb. obviously this is my goofy nickname, you get the picture). Also, I got a postcard from Jake! He claims to be coming to San Francisco this fall, and demands vegan tiramisu when he gets here. That's going to be tricky since tiramisu contains just about every non-vegan substance known to man, and all extant recipes are full of unimaginative substitutions. But I'll never have to deliver on it because c'mon, Jake Berendes in California? It could never happen.

Also while writing this entry I noticed that there are some MP3s up from Jake's new album, which now that I think of it I should probably buy cause it's not just gonna magically get sent to me. The songs on this album are based on search requests to his website, and in the postcard he says he's looking forward to the album I've barely touched. "Trouble rarely stops but when it does we make our own," he says.

[Comments] (3) : The LazyWeb strikes back: I was planning to post links to satellite maps of all the UNESCO World Heritage Sites, but someone else beat me to it. Way to go, person who's not me!

[Comments] (6) So Long, And Thanks For All The Non-Fish: In high school or college I learned from one or another pedant that you're not supposed to call starfish "starfish"; you're supposed to call them sea stars because they're not fish. Well, they're not stars eithGAH MY EYES! Okay, some of them are stars. Also at some point I learned that octopods used to be called "devilfish". They're not fish either.

When we went to the Monterey Bay aquarium last weekend there was one awesome permanent exhibit with a lot of jellyfish. Also a "The Art of Jellies" exhibit which was pretty gimmicky if you ask me, though it did position a tank of jellyfish in a mirrored room, giving you the impression that they had you surrounded. But apparently the marine biology cartel now wants you to say "jellies" (or, I suppose "sea jellies") instead of "jellyfish", because those things are amazingly not fish.

The only other non-fish with a fishy name I can think of is "cuttlefish". I've never heard anyone saying you should call a cuttlefish something else, but I checked "on the line", as the kids say, and "cuttle" is the hot new name for that beast. How long has this been going on? Did people used to refer to cucumberfish, anenomefish, and urchinfish until someone rewrote the aquarium displays to encourage the biologically correct usage?

In an interesting reverse of this trend, at the aquarium I also noticed that the fish that used to be called a "dolphin" is now called a "dolphinfish". I think chopping "fish" off the names of obvious non-fish is not really worth it, but I'm glad about the "dolphinfish" change because that was really confusing. I'd hear about sport fishermen catching a bazillion dolphin and wonder why nobody was upset about that.

[Comments] (2) : Decklin Foster, who seems to have some connection to the Chicago cabal, has written roux. This is a screen-scraper->RSS feed gateway that uses Beautiful Soup, much like Scrape 'N' Feed, but where S'N'F gives you the page and has you write a screen-scraper, roux has you define some suspiciously regexp-looking things that magically reach into the soup and extract the things you want. As Vic Fontaine would say, crazy! Decklin, how does it work?

Darmonodes’ Elephant: This has beeen bothering me for a while. In Moby-Dick Melville uses a metaphor that includes "Darmonodes' elephant", known for its antisocial behavior. I didn't know if this Darmonodes character was supposed to be the owner of the elephant or a historian who'd included the elephant in a book of prurient anecdotes or what, so I looked him up and--nothing. The only place he shows up on the web is in copies of Moby-Dick. Did Melville make him up to avoid direct association with the elephant story?

2007 Update: I found this annotation in Google Book Search, in the Northwestern University Press's edition of Moby-Dick (ISBN 0810102684):

Apparently a misreading as the name for the elephant's owner. The editors of the Hendricks House Moby-Dick... point out that it does not occur in Melville's source passages and that its form is an impossible one in Greek. The NN [presumably another edition] editors have no explanation or emendation to offer.

I'm pretty sure Melville made up a dirty story and ascribed it to ancient history.

: Kevin says: "That's the thing I like about your generation: you never let lack of talent hold you down for long."

[Comments] (3) Party Food: I am having a multipurpose party on Sunday which is partially a birthday party. I'm going to start making food for it so I don't have to make it all on Sunday, and I want to know what you think I should make. I am going to make a whole bunch of pretzels and have various pretzel-dipping substances around, but I want to make other, more substantial stuff too. What?

[Comments] (1) DSR:

astroids that will come to earth and destroy it do you have a picture of that

Well? Do you, smart guy?

ingredients to make a real live metroid egg

Not gonna work.

[Comments] (2) The answer to this question is false.    T  F  : Seth is talking about self-referential aptitude tests, so maybe it's time to tell the story of... the self-referential aptitude test that ripped me off (nb. change to "broke my heart" for inclusion in Readers Digest).

This was in seventh grade algebra. We were given a mimeographed worksheet containing a "test of [our] ability to follow instructions". It had twenty instructions on it to follow. It said "Read this test all the way through before you do anything." So I did. The first instruction said to put your name at the top of the paper. All the rest of the instructions were to write down the answer to various trivia questions, except the last one, which was along the lines of "Stop! Don't write anything on this paper! Just turn it in!"

Ridiculous, I thought. By the time I get to that instruction, I'll have already written all kinds of things on this paper, and there's nothing after it. It's probably a trick to get people to follow the instructions out of order. Anyway, having read the test all the way through, I started on the first instruction. I completed all the instructions until I got to the one that said stop, then I stopped and turned it in.

Well, that wasn't what you were supposed to do. You were supposed to execute the the last instruction before any of the others, and never write anything on your paper. Why should you execute instruction #20 before executing instruction #19? Because #20 looks weird! Geez, Leonard!

I fought it, and lost. At the time I foolishly thought that mine was the only correct solution. But I don't think the worksheet said anything about the order in which you should complete the instructions, so there are actually a large number of correct solutions, including the one the teacher considered correct. So I could have satisfied my own sense of correctness while still getting a good score on the assignment (this was a big dilemma for me in school; it's not so much a factor now that satisfying my own sense of correctness is more closely aligned with doing a good job).

The moral, as always: don't mess with self-reference unless you really know what you're doing. Start by messing with Texas, and work your way up.

[Comments] (3) Gravlax:



             I just got off the phone with Washington. The
             Gravlax is headed towards Chicago. You'd better
             pray this device of yours works, doctor.

                           PROF. TOUCHFEELY

             I can't shake the feeling we're making a huge
             mistake. We haven't been able to establish
             communication with the Gravlax yet. For all
             we know its intentions are peaceful.

                           GENERAL MCBOMBEM

             By golly, I won't see the Earth destroyed
             just to test out your pet theories! Sergeant, 
             activate the atom ray!

                            SERGEANT JONES

             Sir, yes sir!

      CUT TO: 

      There is a huge EXPLOSION (STOCK).


      The area is covered with a fine paste of GRAVLAX.

                           GENERAL MCBOMBEM
                      (scraping GRAVLAX off his hat
                       with one finger)

             What _is_ this stuff?

                           PROF. TOUCHFEELY
                       (tasting GRAVLAX from his 

             It's cured salmon, General. Perfectly harmless.

                       (wiping GRAVLAX off his suit)

             As I suspected, the Gravlax came to this planet
             to lend its salty taste to little sandwiches
             and other light appetizers. But we were not
             ready for it. In our arrogance and blindness we
             assumed that because it had a name like
             "Gravlax" it had to be some sort of hideous
             B-movie monster. Perhaps one day mankind will 

                           GENERAL MCBOMBEM

             It's delicious.

      Enter PETE, frantic.


             Doctor, General. I just heard from the lab
             in Peoria. That signal the Gravlax sent from
             its ship -- it was aimed directly at its
             original point of origin.

                           GENERAL MCBOMBEM

             That could only mean...

                           PROF. TOUCHFEELY

             More of them are on the way.


                           GENERAL MCBOMBEM

             We'll be ready for them.

                               THE END

: Sumana has gotten her wisdom teeth out without complications. She is now resting. Sumana was quoted as saying "Ow!"

Baffling Interface: My fridge has an "Energy Saver" mode. The switch has two settings: "Use (Damp Exterior)" and "Save (Normal)". It's on "Use". If I want to save energy, should I switch it to "Save"?

Update: This web page explains what the switch does but only in a tiny clause does it actually explain which setting is which. "Save (Normal)" is the setting I want, unless I start seeing a damp exterior, in which case I should switch to "Use (Damp Exterior)" to get rid of the damp exterior.

Go Now And Smite The Crudites, Who Have Displeased Me: Spent the whole day cooking for tomorrow's blowout. Way more people claim to be showing up than I planned for, but I am prepared. Tomorrow I just have to make simple things like the guacamole and the crudite dip. I have decided to pronounce "crudite" like it's the name of an Old Testament tribe.

Summer Disease: The party is in progress. I have decided to adopt the consensus pronunciation of "crudite" but to spell it "croup d'eté".

[Comments] (4) : The party was a success! I'm tired. According to Seth, Aaron Swipe Swartz has picked up a lively interest in Jake Berendes, so I lent Seth my audiotape copy of Jake's "lost" (ie. not purchasable or downloadable online[0]) album, robot moped dehumidifier, the idea being that Seth can make a copy of it and send it to Aaron. I really wish it were available online; just about every song on that album is great.

Manoj showed up! I'm pretty excited about this. Manoj was on the east coast for a while but he came back here to work for Google. I'm glad because Manoj is the model for a character in a story I'm writing and I want to keep him under close observation.

PS: Kevin, your cheese and cracker arrangement was a big hit. Thanks for helping me set up!

[0] Except for Jake's cover and semi-cover of Chickadee and Check Yourself (For Ticks)), which I have cunningly mirrored to boost my own ego.

[Comments] (2) Unidentified Stationary Objects #2: This one's in Iran. Oil slick? Meteor impact crater? Parked alien spacecraft? Another weird volcano? I can't see this one in other sattelite photos so it's more likely to be a transient phenomenon.

[Comments] (7) : Today we saw two similar movies, Double Indemnity and The Lavender Hill Mob. Double Indemnity was an amazing movie: original, strong theme, good acting from everybody. One thing I noticed is that Fred MacMurray is basically a more versatile version of Will Ferrell. Try it out sometime and you'll see that every one of Fred MacMurray's roles is one that Will Ferrell would like to have, and you'd think it would be great, but he'd probably mess it up somehow. I'm not a big Will Ferrell fan but watching Fred MacMurray actually makes me feel better about watching Will Ferrell.

The Lavender Hill Mob was okay but definitely the low point of the Alec Guinness comedies from Ealing. I believe we've seen them all now so I can say that. It started losing my interest after the caper was pulled off, and the ending was an interminable Laurel and Hardy-type chase sequence which made me not like the movie. But if I ignore that part it was definitely enjoyable. I was hoping there'd be more of a mob.

[Comments] (1) Nothing Happens: I made sourdough soup and I like it (not as much as the one I had at the restaurant) but Sumana doesn't. Tomorrow my mother and Rachel come up. Hoorah! Other than that nothing really interesting is happening here. I thought I came up with the term "social robot", but not even close.

[Comments] (1) Bad Numerology: Horrible things have been happening within two days of our birthdays. Yesterday there was the Tube bombing in London, and tomorrow's my birthday. Two days before Rachel's birthday the Madrid bombing happened. And Sumana's birthday is near September 11. I expected that as I got older my birthday would become a grim confrontation with mortality, but I wasn't expecting it to start so quickly.

In non-awful news, my mother and Rachel are here, and today we went to 826 Valencia.

[Comments] (4) : Went to a Giants game today with my mother, uncle, Sumana, etc. It was surprisingly fun. It certainly went a lot faster than the last time I saw a major league baseball game (approx. 18 years ago), but maybe subjective time just goes faster now.

: Doing all right. I have a big project (more on this later) and I didn't get much done on it earlier this weekend because of the birthday celebrations, but I made significant progress this evening. Sorry for not posting much interesting, but maybe you'll enjoy some Epigrams in Programming.

Foreign Policy: The new beat by Jake Berendes hails back in its lo-fi splendor and Internet pranksterism to his early days with crupper scupper supper upper and the flupperdupper maleatora. His previous solo albums (including his debut, <simulated wood grain vinyl>, which I only recently remembered about) showed him on a clear trajectory into a black hole constructed of samples pasted together on a cosmic Macintosh.

But Foreign Policy demonstrates Jake and his guitar and the rain alone in his bedroom and not even sounding as high-quality as stuff I've done that people ribbed me about afterwards. Leading me to believe that these seemingly artless recordings are actually microsecond samples of ambient noise, twisted into an approximation of the Berendan vocal cords like the Guns 'n' Roses Self-Similar Midi Synth. Just as the song lyrics have been constructed from the shattered hopes of people who asked the web for something and got Jake Berendes instead. Each song fulfils a search request while giving the listener the feeling that they have failed to find something.

Songs to watch out for as they climb the pop charts: "jla dreamer", "history of sour candy", "old lamborghinis", and the Matthew Barney-esque "synchromaids".

[Comments] (1) Name Popularity Edge Cases: I know where to go to find statistics on the popularity of the names people choose when they name their children. Where would I go to find statistics on the popularity of the names people choose when they change their own names?

[Comments] (2) : Hey, mom, I found a couple of Pratchett stories online, which you probably haven't read.

MetaQOTD: Sumana said I should "blog" this, so here goes.

Let me quote the noted sage, "earlier version of myself":

Entry with link in it to follow.

: Found from the Project Gutenberg feed: The Pursuit of the House-Boat is an early piece of fan fiction starring the ghosts of various historical and fictional characters. It is little better than a hypothetical Hanna-Barbera cartoon dealing with the same subject, but the clever part is that it features Sherlock Holmes, freshly dead from his trip over Reichenbach Falls.

The author figured that since Conan Doyle was sick of using the Holmes character, he could just steal it and use it in his own works (I wonder if you could use Holmes this way today.) But then the story's canonality was invalidated when Conan Doyle started writing Holmes stories again, claiming that Holmes didn't actually die. Retcon is a cruel mistress.

As previously noted, the illustration captions make a good story on their own:


[Comments] (3) I Never Thought I'd Say This: but I think this container ship might carry too many shipping containers.

[Comments] (1) This Time, For Sure: Surely 2006 will be the year of Linux.

[Comments] (1) Crossover Time: H. L. Mencken and H. P. Lovecraft.

[Comments] (1) : There must be something interesting you could do with this list of each day's registered .com domains. Did you know that 149,161 new .com domains were registered yesterday? Most of them are just sitting there as search engine bait; in fact, a lot of them look to have been registered automatically from search requests.

Update: I ego-grepped the domain list and found "leonardispizza". Who dares claim that I am pizza? A search engine bait domain, that's who.

[Comments] (8) Beginning Python: More thrilling (for me) than the wait for Half-Blood Prince: my book comes out on Friday. In celebration I'm experimenting with shameless marketing on my home page, similar to how Ted Leung advertises his book, but with the lousy page design you've come to know and know from crummy.com. I really, really hope that that cover is not the actual cover they went and printed, because my picture on that cover makes me look like the biggest freak in the world. Worse than my passport photo. I sent them another picture, but who knows what goes on in these publishing companies. Anyway, buy the book, if only to embarrass me.


Dear Life in These United States
I sew plush squids and sharks and skates
And as these photos indicate
They're really great
Honest injun

Non-Life On Other Planets: Really great APOD today, and of course moon maps. Turns out the moon is not nearly as interesting as the Earth. Should be fun fodder for Paolo's Games on Google Maps list. You know, Google Maps has totally rehabilitated Javascript. People (inc. me if I weren't busy) are falling all over themselves to write stuff in this primitive and previously shunned programming language.

: I wanted to call our pirate ship the S.S. Mutiny. Kevin disagreed. I pointed out that whenever we made a raid, it would be bounty on the Mutiny. Kevin was not as impressed by this as I felt he should have been.

[Comments] (8) The Spice Trade: I bought a bunch of spices a while back. I bought a bunch of spices. I didn't figure the weights correctly so I've got enough sage, dried parsley, cloves, etc. to last for years. So if you want some spices, let me know when you're at my house and I'll give you some.

Among my spices are many whole spices which I figured I would grind as needed to make them last longer. This has not worked out very well because I have found no good way to grind spices in small amounts. I got a tiny coffee grinder because that's what Alton Brown recommended, but you have to fill it to the top with spices to get a good grind, which defeats the purpose. Should I just buy a mortar and pestle?

That Can't Be Good: I saw a truck with a bumper sticker saying "I got my wiki whacked at Luau Larry's".

[Comments] (4) Waffle Iron Panini: Riana came over and I made tomato soup for lunch. I planned to make grilled cheese sandwiches too. Sumana suggested the idea of grilling the sandwiches in the waffle iron. It worked out really well. Some waffle irons let you switch out the places for a special panini plate, but why bother? It works just as well with a regular waffle iron and it looks a lot more interesting.

[Comments] (1) Rubyful Soup: I should have done this yesterday because I don't have time to go into a lot of detail this morning, but I want to get some feedback before I go on the dinosaur hunt. I've ported Beautiful Soup to Ruby. It's not terribly useful yet because it's based on the standard library parser in Ruby, which throws exceptions when it encounters bad markup, but it's getting there. Try it out and let me know what you think.

Etiquette: "If a woman has a title of her own, she should be addressed as Dr. Minnie Wilson." Even if that's not her name.

[Comments] (1) No Relation: Crummy Church Signs, from Garrett.

[Comments] (2) Things To Do In Alberta When You're Not Dead: We have an extra day in our dinosaur hunt trip. We are going to go to the Museum of the Rockies in Bozeman, and the Dinosaur Provincial Park in Alberta, and the Head Smashed In Buffalo Jump of previous NYCB fame, and the Glacier National park. What else should we do in that general area (we can't really go camping)? Should we stay at one of those Olde Tyme Cowboy Lodges and eat chuckwagon food?

[Comments] (2) Perfect Gift: for Seth or Riana: Blackbeard and Other Notorious Pirates Coloring Book. "Exciting illustrations depict the daring deeds of five swashbuckling renegades and their cohorts, notorious for victimizing the high seas and harbor towns of the late-seventeenth and early-eighteenth centuries."

Return Of Revenge Of Guest Weblog: Oh yeah, as long as I'm going on vacation, I should start the guest weblog back up. It's like getting the band back together.

: Destroy ambiguity with thought experiments.

Buddy Holly Is Alive and Well on Ganymede: This is a great book. I say this because I really identify with the author. It's exactly the sort of book I would like to write, full of excitement and humor and chases and really weird stuff that doesn't let up. The writing style reminds me of Gordon Korman. Highly recommended and (like all the books Susanna tried to buy for me for my birthday) out of print.

: I am digging on microformats.

[Comments] (1) Local Boy Makes Good: When I ran a BBS, back in the 90s when everything was fresh and new, I had a caller named Gabriel Koerner. Gabe came to our sparsely-populated get-togethers and contributed on the message boards, which made him a dedicated caller in those days of higher standards for user interaction (whereas now a dedicated weblog reader is someone who subscribes to the RSS feed and occasionally leaves a comment).

Gabe Koerner was kind of odd, but my BBS was geared towards people who were kind of odd, so he fit right in. He was a big Star Trek nut, but so was I. "Ah," you might say, trying to look for the essential difference between him and me. "But Gabe was in fact such a Star Trek nut that he wrote fanfic Star Trek parodies." Which is also what I did. I thought Gabe was annoying sometimes, and that his Star Trek parodies were somewhat derivative of mine, but it's obvious in retrospect that I was also annoying at that age, and forensic analysis would reveal my own Star Trek parodies to be somewhat derivative of Robert I. Brayer's. So I don't think there was really any qualitative difference between my dysfunction and Gabe's.

However, my dysfunction remained mostly unnoticed in those pre-web days and even now manifests itself only on this obscure weblog, whereas Gabe's was captured on film in the hit independent film Trekkies, a film about Star Trek geeks and their awkward differences from consensus society. I haven't seen the movie but here's how Gabe describes himself on screen: "[S]o snyde [sic], so condescending and unappreciative. So damned whiny and anal retentive." Not a good foot to put forward.

Over the years I sometimes heard discussion of Trekkies, and Gabriel Koerner was always mentioned as the film's pinnacle of hopeless geekdom. Now, when you say that kind of thing about someone who used to call my BBS, it's like saying it about a member of my family, albeit a member of my family so distantly removed by blood that I probably don't really do anything about your saying it. Anyway, what could I say? The common Trekkies-derived perception of Gabe was not wholly incompatible with Gabe as I knew him; I just felt it was in bad taste to make a documentary about it.

But it turns out that Gabe doesn't need any lame "put up your dukes!" type defense from me, because he has managed to parlay his geekdom and his appearance in Trekkies (not to mention Trekkies II, which I think they missed a golden opportunity to tack a The Wrath Of onto the title) into a series of gigs making CGI models for science fiction TV shows and movies. He worked on the last two episodes of Enterprise (in fact, I think he was just about the only good thing about the last episode), and on the Serenity movie, and he's working on the Battlestar Galactica remake that's taking up 15 hours of my TiVo space. So without selling out to consensus society Gabe has made a place for himself. Here's his weblog where he posts occasional notes about his projects.

Once again Danny O'Brien's advice proves its worth. In fact, I think it needs to be given its own name for easier reference. Ideally something like "The O'Brien Heuristic" that sounds like a Star Trek reference in its own right.

The other day I got mail from Gabe letting me know that he and the rest of the Battlestar Galactica effects team are up for an Emmy. He has made me want to watch (part of) an awards show, something that has never happened before. Good luck, Gabe.

Banned Books That Are Lousy: The subtext of some lists of banned books is that these books are inherently worth reading because someone doesn't want you to read them. Otherwise bookstores wouldn't have special displays and sales on the banned books. But it needs to be said and I'll say it: some of these books are just plain lousy.

For instance, Catcher in the Rye. Boringest goddamned book I ever read. I also really hated Bless Me, Ultima, but that might have been because I was forced to read it in high school. The Goosebumps series: pure fluff. Etcetera. It would be useful if the book-banners consistently banned only stuff like Huckleberry Finn and A Wrinkle In Time, because then we could use their reactions as an oracle for literary quality, but unfortunately that doesn't work.

Guest Weblog Time: RSS feed people, here's the RSS feed for the guest weblog. There's some stuff from last year in the feed (and on the front page right now), but hopefully it will soon be replaced by brand new content.

: I'm in Bozeman, Montana, home of dinosaurs and the warp drive. We're about to drive into Canada. Yesterday saw the Museum of the Rockies, which was awesome.

: I'm back and burned out. To stave you off for a bit, here's the article I wrote for IBM developerWorks about SQLObject, which got published recently.

Overheard In Caveman Times: "Come on, folks, let's not invent the wheel."

: Bathing elephants. Reminds me of the transitional whale form they had some bones of in the Tyrell museum.

[Comments] (3) : My second developerWorks article, on the Cheetah templating language, is now published. What's more, I'm actually getting paid for these articles! (Once I set up direct deposit with my agent.) This is an intriguing development because I still haven't seen one cent of my advance for the book, or even the paltry sum I've earned so far in Amazon referral commissions.

[Comments] (4) : One interesting feature of this list of recipes is that they have you sauteing things in vegetable broth instead of oil or fat. Does that work? If so, how do you use up vegetable broth a tablespoon at a time without it going bad? Freeze it into ice cubes?

[Comments] (2) Attack of the Killer Information: Vacations are good for reading; I took 5 books with me and read all of them plus two of the three I bought while on the vacation. Among these books I re-read (and finished this time) Snow Crash. It didn't bother me nearly as much as the first time I tried to read it. Because the book itself hasn't changed (NOT ONE WORD HAS BEEN OMITTED), and because outside events since then have not made the book look more realistic, the change is entirely due to my mental processes.

First, between my previous reading and now I have read approx. 2 million words of Neal Stephenson's other writing, and found it pretty good, so I'm better disposed to the book now. Second, I was probably in a cranky mood when I read it the first time, because I was camping out in Peter Hodgson's abandoned office at UCLA (a somewhat Snow Crash thing to do, now that I think about it) and that always felt weird to me.

Most importantly, thanks to a Crummy reader whose email I can't find, I now realize that Snow Crash is obviously a freaking satire, you dolt. It makes mock of the politics and the science fiction of the 1980s. It does not subscribe to your Earth notions of sci-fi plausibility because that would wrench it out of the Comedy Universe. My loyal reader drove this point home with some scathing commnent like "'Admiral Jim's National Security'? Come on!", which was of course absolutely correct. Seriously, when I read this person's email it was like when the Metallica parody song I wrote actually convinced Adam that Metallica is a pretentious band whose lyrics are foolish, and he stopped being a big Metallica fan. Words actually changed my mind, a feat rarely recorded in the annals of human endeavor. I realized I had to give Snow Crash another chance.

When approached in this light I found Snow Crash very good and funny and full of cute touches just like everyone says, with my previous complaints rendered mostly moot. It does not matter that it describes an utterly pointless computer network, because its pointlessness is the pointlessness of VRML. It does not matter that it describes an unworkable political metasystem, because its unworkability is the unworkability of the Declaration of Independence of Cyberspace. The problem with the computer network was almost certainly unintentional but the political incongruity is the basis of the book's humor: that having lost the concept of the state, its characters create little cargo cult states out of for-profit corporations. It's funny and it demonstrates a point: that's satire.

The problem, and sorry that once again my analysis cleaves so closely to the utterly conventional, is the ending. In an amazing twist, the ending is the problem here even though I actually liked the ending! I found it the strongest and most satisfying of all the Stephenson endings except maybe the ending to Quicksilver (Zodiac's ending was perfectly fine, but Zodiac has a pretty short reach for a Stephenson novel). The problem is that the rest of the book sets up high-stakes stuff that should be handled by the ending but ends up ignored, like the final mines in an abandoned game of Minesweeper.

To wit: Snow Crash posits a previously undiscovered facet of human nature which is interesting and disturbing (probably also totally implausible, I wouldn't know), but its last act focuses on blowing things up and exploring motivation and getting the main characters out of the scrapes they're in. Which is great but what about the aftermath of this disturbing revelation? It's as though a Lovecraft story ended with the guy barely getting away from Yog-Sothoth or whatever, and then going back to Massachussets and resuming his math fellowship at the university, shaken by his experience but perfectly sane. What about the stars, man? The wheeling, uncaring stars? It is not covered in this story.

So if I may add one more unwelcome two-cent piece to the teetering pile of Stephenson ending analysis, I'd say you've got your choice of two Stephenson endings: "something new and amazing is about to enter the world, but the book is over now", and "something new and amazing has entered the world, but it shouldn't have any ongoing repercussions and fortunately none of the main characters were hurt". With The System of the World you get both endings simultaneously, which if you ask me is real value.

This theory is IMO the first to explain how these endings that so many people complain about, especially endings of the first type, can hold a visceral appeal to the author himself. Infinite Jest has a similar ending (and also similar satire; I read my old Snow Crash rant and it's like someone complaining that Subsidized Time won't work or raise enough money). It sets up the main characters to collide in a climactic scene, but omits the climactic scene. However it does start out with a scene taking place after the climactic scene, just to prove the author isn't cheating, which I think saved David Foster Wallace a lot of fanboy grief.

[Comments] (2) How I Spent My Summer Vacation: Just a list of things I want to talk about, so I don't forget. More information in additional NYCB entries available on request. Also available not on request but it'll take longer.

I think that covers everything.

: Continuing the trend of Ka-Ping Yee coming up with stuff that's obviously a total ripoff of my stuff, yet cooler, is Regender, which eats gender the way the Eater of Meaning eats... meaning. I especially like what it did to my Etiquette entry:

"If a man has a title of his own, he should be addressed as Dr. Michael Wilma." Even if that's not his name.

Update: I also like what it did to the part of this entry where I quote its output.

: A clickolinko mention made me go check out Brandon Bird again (I thought I bruised him before, but my archives say no). He does really good pop paintings in a variety of styles. And he keeps putting them out; the best of the new crop is The Death of Jennifer Sisko, which I would love a print of (see also previous, more understated, DS9-themed work The Lesson of the Geese). If I could afford it I'd commission Brandon Bird to do my "First pirate on the moon" painting, but as it is I'm stuck haggling with Kevin's cheapskate artist friend.

: Thank you, Lazyweb, for coming up with stuff I really had no interest in writing or even using, yet felt that it should exist: Dancing Monkeys analyzes MP3 files and generates Dance Dance Revolution step files for them. The end.

[Comments] (2) They Want The Crust From Your Sandwich: A bunch of old Audubon paintings (lithographs?) of birds at the online edition of Birds of America. Our vacation saw an insane amount of dinosaur-throwback behavior on the part of birds, though maybe we were just looking for it.

Also, continuing the trend of "museums try to get you to change your terminology", the Museum of the Rockies tried to get us to call birds "avian dinosaurs" and regular dinosaurs "non-avian dinosaurs". This may have made sense at one time but the time was 65 million years ago. If that terminology catches on, I demand to be referred to as a "mammalian cynodont", or "Roy Dalton Richardson Leonard Dalton Richardson".

: I wrote a review of Clara's Grand Tour. I tried to make it interesting but it was kind of a drag to write. Then on top of that, it got published under Sumana's name instead of mine. That's the way the rhinocerous-shaped cookie crumbles.

[Comments] (8) Unicode Roguelikes: Recently I saw signs that the bounty of Unicode characters is about to break into the world of roguelike games. Exhibit 1: Jean-Paul Calderone's primitive roguelike-looking game which endlessly recreates the boring "maze" levels of Nethack, but with Unicode monsters like the fearsome FISHEYE and VERY MUCH LESS-THAN. I tell ya, with Unicode you don't even have to come up with monster names. Just use the real character names.

More interesting (in fact, insanely addictive) as a game is chessrogue, in which the monsters move (and, if you have a Unicode terminal, look) like chess pieces. It actually feels a lot more like those "escape the robots" games than a Roguelike. Anyway, in chessrogue you have the Mega-Man like ability to acquire the powers of the pieces you capture. Unfortunately this is nothing beside your amazing power to screw up and get eaten by a pawn just when everything was going so well. There are no hit points or combat, no "The pawn hits!". You just get captured, like in chess, and the game is over.

When will Unicode start showing up in more Roguelikes? Some might say that the plethora of Unicode characters would make games hard to navigate, but I say bah. Lots of people play Roguelikes with little 16x16 bitmaps instead of ASCII characters. Now, there are 256^256 possible 256-color 16x16 bitmaps, a number so large that NYCB style guide forbids it from being spelled out here, but there are only 95,156 graphical Unicode characters. So it should actually be much easier to play a Roguelike with Unicode characters than with bitmaps.

After all this Unicode mania I started thinking about Unicode art. Surely this medium would be the annointed, universally accessible successor to ASCII art. But the Unicode art gallery has only three things in it, none of them very impressive. Is it the very limitations of the ASCII form that keep its practitioners penned within its 95 printable characters? Will the same prove true for Roguelikes?

[Comments] (1) : I am getting over a cold. But, a couple days ago I went to a party at Marc Canter's house and I hung out with Phillip Pearson, and it was really fun. We did the geeks-meeting thing where we talk about our projects and obsessions, and the people-from-different-countries-meeting thing where we compare and contrast our countries. It brought up a funny Canada anecdote which I should share with you, my readers (you'll get these anecdotes out of me eventually).

At the Tyrell Museum they had one of those stretched-penny machines to which my mother is addicted. It was imported from the US, and the coin mechanism had been modified to accept Canadian quarters. But it had not been modified to smash Canadian pennies! Because 1) that would be too hard, and 2) it is apparently illegal to smash Canadian pennies in Canada, unlike with American pennies where it just looks illegal because of the strenous disclaimers that tell you it is in fact legal.

So how does this machine work? Well, the museum keeps around a little dish of American pennies just so you can smash them into souvenirs. This kind defeats the purpose of these machines in the first place, since the idea is that you can get a souvenir out of stuff already in your pocket.

Battle of the Zoos: Is the Oakland zoo better than than the San Francisco zoo? I've never been to the former.

[Comments] (2) Talking Shop: del.icio.us has a recommendation engine now. Looking at the results it gives, I think I can guess at its inner workings. It feels a lot like the "related pages" you can get from a Google search, which makes sense because it's got a lot of the same constraints: it needs to give recommendations given a URL or a small number of URLs, and it doesn't have a way of keeping any recommendation feedback. Like the Google recommendations, it could use a good dose of the Indie Rock Peter Principle; many results it gives me just because they've been bookmarked by thousands of people and are somewhere near this URL in the graph. The IRPP can be applied without introducing a per-user scaling factor, unlike a lot of other ways of improving recommendations.

I just know I'm gonna turn into one of those crotchety computer geezers who had an idea back in 1972 and spends their whole life complaining that nobody Gets It.

[Comments] (1) : CherryPy for CGI Programmers, my third DeveloperWorks article, is published. I didn't get a chance to go through it for last-minute errors because I was coughing up blood--the blood of being incredibly lazy! So now I'm afraid to look at it.

Incidentally, if you want to make money writing, articles are where the money is at, not books. I made about 75% of my Python book advance writing those three articles, and it took me about 10% of the time. Plus my book advance still only exists in potentia, whereas I've already gotten and spent my article money.

Not feelin' good. Not gonna take it out on you.

[Comments] (3) March of the Penguins: This is a great movie. Very beautiful. However I think the narration anthropomorphized the penguins too much.

: Rubyful Soup is now usable. I did a lot more work adopting it to the Ruby idioms, but more importantly I hacked the REXML parser to ignore the most common case of bletchitude (wrong tag closing order).

: What is going on with Holy Shallot? It looks like a diagram of food affinity, something I've been working on in the background for a while.

: Mike Popovic wrote a poem with a mola mola and a calypso beat.

The Futurist Cookbook: I found this at the Fort Mason bookstore, which was lucky because I thought I'd have to special order it for an exorbitant fee. It's a combination art manifesto and cookbook. There are a bunch of rants against pasta, and then some sample dinners which are actually short-short stories, and then just when you think there will be no recipes there are recipes for the rest of the book.

After reading this book the main thing about Futurism I find interesting is the obsession with airplanes. People call themselves aeropainters and aeropoets. The Futurist Cookbook tells you to make aerofood, and to bake bread into the shape of airplanes, and names the dishes of a dinner after the stages of an airplane flight ("Taste Buds Take Off", anyone?). It reminded me a lot of contemporary artists who are obsessed with the Internet. The airplane stuff was kind of cargo cult and distracting from the real point of Futurism, which is actually good because as far as I can tell the real point is fascism. Good aesthetics (modulo airplane obsession), lousy politics.

My mother read the cookbook while she was here and deemed it "crazy". It is pretty crazy, but it seems to mark the first time food was treated primarily as an artistic statement (it's hard for me to pin down exactly what happened here for the first time because of all the stuff that went on in antiquity and medieval times, but it seems like something happened here for the first time). There were some recipes with great names like "Network in the Sky" (possibly interoperating with the Mashed Potato Cloud), and a recipe for risotto balls that sounds really good. Also it had the following anecdote:

The time set for sitting down at table had already passed and no one said anything about getting thie Lucullan feast underway. I got up to ...

— Look, my dear friend, in being late even you are passéists; I thought the Futurists, if only to do something new, would have started early but instead there's the usual boring wait just like at all the banquets in this bourgeois world.

He looks at me and smiles ironically — to eat in the future ... what's more Futurist than that?

[Comments] (2) Desk Set: Sumana borrowed this movie from the library. It's pretty funny and it has great corporate set design and booze-drenched office Christmas parties like The Apartment. The acting is good; you don't get good snort-laughing from today's top actresses the way you got with Katherine Hepburn. The whole story is an object lesson in not making really stupid design decisions, which got kind of frustrating. The romance seems kind of tacked on. Sumana watched the DVD commentary and reported that in the original play, there was no romance and it was a Man in the White Suit sort of comedy.

Incidentally, has anyone noticed that Kate Mulgrew really likes to play characters also named Kate? She's playing Katherine Hepburn live at some local theater, she played Kathryn Janeway of course, she played a Kate Columbo in an old mystery series, and I think there was another mystery series that only had a pilot where she played another Kate. It is odd.

[Comments] (1) Semiotics: Riana started a weblog about Search Engine Marketing, which I think is the flip side of the Search Engine Optimization business.

Speaking of marketing, to raise some extra scratch I've been forced to accept advertising in the Starslip Crisis RSS feed. Some might say, "Hey, shouldn't Kris be getting the money from that?", but those people don't recall that time in college when I lent Kris an infinite amount of money.

Friday Catt Blogging: "...and then the catt was lockt in the chamber, and kept a great mewing, and leapt upon the bed, which made me I could not sleep a great while."

Take That: "Intelligence is whatever humans can do but machines cannot."

[Comments] (1) And That's How You Narrate A Documentary: I may have been too hard on the narration of March of the Penguins. I'm slowly making my way through a Discovery Channel documentary I Tivoed and its narration is just ridiculous, full of bombast and unnecessary verbiage and what Mark Twain called the right word's second cousin. In fact that's why I Tivoed it, because I couldn't resist the title "What Killed The Mega Beasts?"

Outside of this documentary, mega beasts are known as megafauna, but clunky CGI renditions of the wolly mammoth and the buckeye giant beaver demand a clunky partial translation into English. Everything must be MEGA in this world of 64-ounce colas and ever-larger computers. Uh, computer monitors.

Quotes from the program so far, from memory:

I love how often a line of narration in this documentary has the structure of a joke, and is funny, but is not actually a joke.

Coming Soon: Hunt the Wumpus: The Movie

: I got phishing spam from "Wells Falgo". I think I am being spammed by the lisping kid from "The Music Man".

[Comments] (4) The Five Obstructions: I'd never heard of this movie or the other one but Sumana rented it and it was pretty good. A filmmaker holds his idol captive and compels him to do remakes of his 1967 film The Perfect Human, subject to arbitrary and ridiculous restrictions. It's got a real Bond villain feel to it in parts.

Most of the remakes are good (esp. the first one, which has the most arbitrary restrictions) but like all remakes not as good as the original, which is an extra on the DVD and is really amazing. You know who would really enjoy The Perfect Human is Kris. Kris, check it out and see if I lie.

[Comments] (6) Oakland Zoo: To answer my own question from earlier I went to the Oakland Zoo with Rachel. The SF zoo has more animals, but in general the animals at the Oakland zoo have better habitats, and it's sunnier. The primate cages at the Oakland zoo are much bigger and have more stuff. I wouldn't want to live in them, but I would if I were a squirrel monkey. (Last time I went to the SF zoo they were doing something to the monkey cages, so hopefully those will be better soon.) The fancy new habitats in SF (the savannah and the lemur habitat) are much better than their counterparts in Oakland.

Animal battle: the Oakland zoo has bats, elephants, alligators, and enormous tortoises. The SF zoo has kangaroos, gorillas, lemurs, and an anteater. The Oakland zoo has a really heavy emphasis on Africa and (to a lesser extent) southeast Asia; the SF zoo has animals from all over.

I don't think I'd ever seen a bat close up before; they're really odd creatures. I had seen approximately 12 million bats fly out of Carlsbad at eventime, but you don't get a good look at any particular bat when that happens. I bought a stuffed bat to hang from the ceiling along with my stuffed pterodactyl.

Number of dumb "Foo at the Zoo" jokes on a single notice board: 3. ("New", "Boo", and "Brew" (?!))

Primer: You can tell that this is one of those weeks when we borrow a bunch of movies from the library. I watched Primer by myself because Sumana doubted she would like it. I think she probably wouldn't have liked it. The plot is insanely complicated, which I found refreshing, but there's just one plot and on an emotional level it's pretty simple. There were enough technical twists to keep me interested, but I can see how someone else would just give up.

The DVD cover said the movie was rated PG-13 for "brief language", but then the DVD itself said the movie was rated R for the same reason, but if there was any "language" it was so "brief" that I didn't notice it. There's a lot of crosstalk in that movie.

Oh, at one point I paused the DVD and used the zoom feature to get a closer look at a detail. Then I forgot I'd done that and watched the rest of the movie in a zoomed state, never noticing that about 1/4 of the screen space was missing until the end when the credits were chopped off. It's got that kind of cinematography.

[Comments] (1) I Stole Zack's Stuff: Specifically, some books, and a tool chest. (Zack is moving to San Diego and doesn't want this stuff). We also played a fun Cheapass game called The Big Idea, which is kind of like Kevan's Prior Art-O-Matic... but with a card-matching interactive component! I triumphed with my "Beer Cow", a surefire hit at Midwestern university fraternity parties. It gives beer, and by the time it's empty, you're drunk enough to have a good time tipping it over.

[Comments] (1) : Rubyful Soup is basically ready. I just need to add in some of the other stuff of the Python version. The parser is now based on a port of Python's SGMLLib parser, which means the main problem (choking on bad XML) is now gone. In fact it handles bad XML better than the Python version.

I made deep-dish pizza in the cast-iron skillet and it was pretty good. I also made brownies with this egg/fat substitute made from prunes and they were quite acceptable, though not as good as other brownies I've made (Sumana disagrees; she says they're great). Also she says I should keep my cell phone on.

[Comments] (1) Two Makes A Genre: It's clobberin' time!

[Comments] (4) The Fall and Rise of Reginald Perrin: This is one of a block of British sitcoms that the San Mateo (?) public television station likes to show on Sundays. I really don't see what is great about the majority of British sitcoms shown on public television (eg. "As Time Goes By", which as far as I can tell doesn't even have any jokes in it) but this one is wonderful. It has a wide variety of types of humor, it's extremely plot-arc-driven, and it has a view of human nature that holds up well over the years. I recommend it.

[Comments] (2) : Ah, you're just in time to see me test my panspermia cannon. Stand back! Only seasoned professionals dare approach this potent geothermal-powered device! As a professional screenwriter and lifelong extropian I am uniquely qualified to build and operate and take the credit for this machine. Back, I say!

First, the apple test. Bang! As you can see, I have fulfilled mankind's eons-long dream of accelerating apples to escape velocity. With luck, that apple will land on a foreign planet and take root there. This device makes me the Johnny Appleseed of the cosmos!

Now, the plum. The cannon is now aimed directly at Mars. The Martian terraforming process begins now, with this plum! Bang!

What is it now? It seems my overzealous assistant, Behemoth Radix, has loaded the panspermia cannon with marshmallows. You fool! Marshmallows are not the seed of interplanetary life! Except perhaps in the ammonia clouds of certain gas giants... yes, yes. Behemoth, your progress astounds me. Let the cosmos be filled with gaseous marshmallow balloon-creatures! Bang!

What? Who dares disturb my demonstration export of picturesque Earth life to the universe? Ah, General, your question please. Yes, I suppose it could be used as a weapon, if the enemy lived on other planets, and if more than anything they hated having fresh fruit delivered through space to their door. I find your obsession with militarizing each of my inventions disturbing, to be honest. First it was my "fun bomb", which you thought could be modified to deploy munitions other than fun. Then, your ludicrous plan for my top-secret stealth glider. Frankly, your naivete astounds me. But keep those checks coming!

: Sumana started talking about a boring ergonomics lecture which was so boring that the Powerpoint slides had been printed out in advance and given as notes. Presentation slides do not serve the same purpose as notes, but they're close enough for these purposes I guess. Sumana had not seen this lecture but suspected that it was the kind of presentation where etymology was deployed as an offensive weapon.

"Ergonomics is a Latin word," said I, kicking off this putative lecture. "It derives from 'ergo', 'therefore', and 'nomics', 'self-modifying games'. Therefore, self-modifying games. You may ask yourself, what does any of this have to do with ergonomics as practiced today? And you may ask yourself, where is that large automobile? And you may say to yourself, this is not my beautiful house!" Etc.

Sumana asked me to write about this so there would be a NYCB entry today. I have been writing all day already and the world is coming to an end, so I'm not in a writing mood at this moment, but the writing is done now.

The Nation Demands More Stupid Fake Pothead Names: "Guido van Rollum"

[Nb. the old set is here]

: How to Make Hot Sauces. Includes inevitable "further dilution with vinegar".

[Comments] (6) Market Research: If I were to write even more about food than I already do, what kind of stuff would y'all be interested in?

[Comments] (5) Famous Last Wor...: I've heard about the "last, unfinished work" of various writers and composers. The piece they were working on when they died. But I've got a monotonically increasing number of "pieces" I'm working on, and I don't see that ever changing. When I die I'm going to leave behind dozens or hundreds of unfinished works. I just now noticed this discrepancy, which seems like a moderately huge one. Is this what actually happened for Bach, Schubert, et al.? Is the idea of the one unfinished work just a romanticization and simplification? Or am I just really disorganized and undisciplined?

Johnny the Renaissance Loser: Google Memewatch: "why can't johnny"

[Comments] (4) DSR: virgin in the web people

I think there needs to be a B-movie with that title. Do they even make B-movies anymore? It doesn't seem like it. The movie business has gotten too complicated and unmaneuverable, just like everything else.

Day of the Awesome APOD: B-movie title theme today apparently. Look what our space probes have revealed!

Attack of the the Moon Illusion: I had this stupid hypothesis about the cause of the famous moon illusion, but when I did a search for a page to which to link "moon illusion" I found The Moon Illusion Explained, which blew my hypothesis out of the water. That page posits a hypothesis that, while much more complicated, is also less vague and has facts to back it up. I find it satisfyingly analagous to explanations of the Monty Hall paradox, in the way it supposes your brain confuses two different concepts (in this case, linear size and angular size). Bizarre tidbit:

Interestingly, Ross and Plug (2002) cite many old reports that people (including some scientists) had said the moon looked only about 10 to 30 centimeters in diameter!

This gives me a great idea: the Special Edition Collector's Moon! This limited edition miniature silver-plated copy of the moon is the perfect tribute to your own haphazard spending habits. Act now, and 5% of the profits will join the other 95% of the profits in my checking account.

[Comments] (5) Word Problems That Turn Out Not To Be That Interesting II: I noticed that the word "begin" has letters that are pretty evenly spaced, or at least they look evenly spaced if you have teeth as bad as mine used to be. B is letter 2, E is letter 5 (+3), G is letter 7 (+2), I is letter 9 (+2), N is letter 14 (+5). I wondered if there were any words (of more than two letters) whose letters were precisely spaced. This is the kind of thing I think about, as you'll recall if you remember the days of The Arbitrary Text Code.

So I wrote a little Ruby script to run against the word list I use for the Eater of Meaning, and it turns out there are such words! But they all have only three letters. Here they are, minus a proper name ("Stu", skip=1).

I changed it to allow one index of slop and it found a bunch of four-letter words plus "accede" and "deeded". So not terribly interesting. I was hoping to get one really interesting solution like "nowhere/abjurer" or "terra/green" from the rot13 puzzle, so that I could say "what common English word..." like on Weekend Edition, but it is not to be. The vowels are spaced too close together. In the field of two-letter words, though, it is kind of interesting that "me" has skip=-8 and "mu" has skip=+8.

[Comments] (1) : The Unofficial LEGO Builder's Guide sounds like a lot of fun. But the shouting! I can't take it!



: If coffinfish are not enough for you, check out the Deep Ocean Photography Gallery.

[Comments] (7) : In Bakersfield for Susanna's birthday. (It's also Sumana's birthday! Happy birthday! Incidentally I saw a fan of Sumana's on the freeway: the license plate said I LUV CES). Tomorrow I go down to LA to hang out with Adam and Kris, and for the first time in about ten years, Gabriel Koerner, who the New York Times once called "Gabriel Koerner", and then referred to on subsequent reference as "Mr. Koerner". Don't thank them; they're just following their style guide.

Hey, you know how you're supposed to start stories in the middle? I thought I was starting my story in the middle, but it's actually pretty close to the end, and I never noticed this basic fact until today. I've never been a fan of stories told almost entirely in flashback, like "As he wrote the end of this sentence, he thought about what life had been like when he'd first started writing this sentence." Maybe real writers don't like them either but they just come up on you all sneaky-like.

I wonder what's the shortest possible story told mostly in flashback. There must be one that's only one or two words.

: Had a great time in LA. Saw Gabe (as he predicted, Lost won the Emmy, to which I say bah), saw Adam and Kim and Kris, saw Pete Peterson II and Ann. Fun was had by all, connections were made and remade, ridiculous music was composed. Kris and I came up with a story idea which Kris is going to write and submit to McSweeney's. I'm just posting this to force him to do it.


: Sumana was in the comic book store and I was browsing and being bored. I noticed a Transformers graphic novel so I flipped through it, and I saw a truly pathetic sight. A Transformer was sitting in a chair in front of a (Transformer-designed) computer terminal, using it the way a human would use it. He was having trouble because the monitor was busted or something. Just sad. Use a null modem, man! It really disrupts my suspension of disbelief when a putatively alien character acts just like a human, because their alienness is just window dressing and wasn't well thought-out.

: "MREs may not be tasty, but at least they are fun and entertaining when cooked the improper way!"

[Comments] (2) : Attention Conservation Notice: would you like me to work at some interesting company or on some interesting project you have going? Devour my resume and send me mail.

I need to change my life. My current situation is not too bad but it is frustratingly lopsided. Currently I work at a job that's pretty boring, but I'm only working at it 3 days a week and I'm spending the other 2 workdays writing a book, which is really fun. I don't spend a lot of money, so 3/5 of my full-time salary is enough for me to live on.

I want another job, preferably one at a startup, because those tend to be less boring. As it happens, I occasionally get contacted by people who want me to work at their startups, and I just got a good offer to work on a really cool project. Unfortunately, working at a startup would seriously disrupt my work on the book, which I am loath to do. Even more unfortunately, this particular startup lives on the east coast, where I don't really want to move.

It's a good offer but not a slam-dunk, so before deciding what to do about it I want to see if there are any interesting companies here in California (or somewhere else nearby, or that let you telecommute) that would like to hire someone with my skills. I'm doing this mainly through NYCB because for some reason a lot of cool people read this weblog, and in my experience jobs found through networking turn out much better for everyone than jobs found through Craigslist.

I have a couple alternatives. The first is to maintain the status quo, which is not terrible and which has inertia on its side. The second is to work on the book full-time to get it done faster, and start looking for a job once the book is finished. The third is to become an author, making a living from puny book royalties and lucrative consulting work. Probably within a week I'll decide among these four paths.

I put my resume up for those who are interested; send me an email if you have any ideas, or comment about the general path you think I should take. My fate is in your hands, loyal readers. Disloyal readers not eligible.

[Comments] (1) : Pictured Rocks not pictured.

: If you want straight talk about REST web services but you don't want to buy my book where I dish out the aforementioned talk for what seems like forever, you can't do better than John Cowan's slides from XML 2005. We use the same metaphors and everything.

[Comments] (1) It's A Caaaake!: Worked all day preparing Sumana's birthday party, which is now winding down. I made a Borg cube cake that looked pretty good, and a vegan pumpkin pie that I was suspicious of and somehow everyone else picked up on that suspicion and nobody touched it.

Kent Johnson found a huge performance bug in Beautiful Soup, so look for a new version of that this weekend.

Bagels: Also presented at Sumana's birthday party: bagels. Easy to make if you have some time. Better than other bagels.

Very I/O intensive day today as I did basically nothing but read and write. Tomorrow I will try really hard to catch up on Beautiful Soup work.

[Comments] (3) Is It Beautiful Soup Yet?: I guess it is. I thought I would just fix the performance problem, but then I started looking through the backlog and I couldn't stop myself and I spent 45 minutes fixing bugs. I held off on fixing some of my backlog because I don't trust myself to write test cases for them at the moment.

I finished my writing quota early and spent most of the rest of the day at the beach with Sumana, which was lots of fun: interesting rocks, and snowy plovers. On the way there Sumana came up with the term "Goohoo" to describe the Oxbridge-like brain sinks where about 80% of my CollabNet ex-coworkers work now.

[Comments] (1) ACK Comes Alive: Story from my Mulla Nasrudin book:

Every Friday morning, Nasrudin arrived in a market town with an excellent donkey, which he sold.

The price which he asked was always very small; far below the value of the animal.

One day a rich donkey-merchant approached him.

"I cannot understand how you do it, Nasrudin. I sell donkeys at the lowest possible price. My servants force farmers to give me fodder free. My slaves look after my donkeys without wages. And yet I cannot match your prices."

"Quite simple," said Nasrudin. "You steal fodder and labour. I merely steal donkeys."

[Comments] (1) Sea Animal Obsession Time: Add "bu" to mola and you get mobula.

[Comments] (2) Guess The Verb!: Search request: Can anybody about benjamin Franklin?

Guess the verb!

[Comments] (1) : The [branch of science] Photo of the Day Bandwagon rolls on with Botany Photo of the Day.

[Comments] (17) : If I were to have business cards made, what should I put on them? I was thinking some little template on the back that would be useful to people.

[Comments] (2) Cheese Smackdown: Best cheese yet: Humboldt Fog. It's goat cheese, it's blue cheese, and it's gushy Brie-like cheese. Once it was the king of cheese; now you eat it with humble pie.

: This collaborative programming contest is a good visualization of how improvements happen to software, but I think the lessons might be applicable to the advance of knowledge generally. The contest program sees two types of improvement: incremental improvements that only help a little, and ways of rethinking the problem. The latter might help a lot or might actually make things worse for a while, but it allows lots of new incremental improvements. You could map this pretty easily to a paradigm-shift model of science.

: Print out games and play them. Great time sink; like BoardGameGeek, a better time sink than actually playing all those games would be. Includes, to pick one at random S-P-O-N-G-E, which appeals to so many of my friends in so many ways.

[Comments] (1) : I did get stuff accomplished today, but not anything that's visible right now. I'm reading A Fire Upon the Deep, which is just awesome (not just because it preemptively steals many of my ideas). I read Vinge's The Peace War and I thought it was kind of dull but this is great stuff. I love the big ole space opera.

[Comments] (6) : Man, that was a weird Arrested Development.

: How do you get on this list of doomed engineers? Tragic character flaw? Ironic death? Sheer cruelty of fate?

[Comments] (1) Depressing WWII Propaganda Posters:

Suddenly Popular: This picture.

First, there was Section 31: Now, Section 8 terrorizes fanfic writers.



c) Stories that deal with the previously unestablished death of a Star Trek character, or that establish major facts about or make major changes in the life of a major character, for instance a story that establishes a long-lost sibling or reveals the hidden passion two characters feel for each other.

d) Stories that are based around common clichés, such as "hurt/comfort" where a character is injured and lovingly cared for, or "Mary Sue" stories where a new character comes on the ship and outdoes the crew.

From Sumana.

[Comments] (1) : Cedilla tries really hard to represent a Unicode text using the fonts you have available. Sort of a Unicode version of ASCII, Dammit.

: I made a big ol' challah for French toast tomorrow. It looks awesome! But how does it taste? I'll let history be the judge.

History: Yum! But a little dry.

Screw you, history!

[Comments] (2) : When is that baby due? Guesstimate with gnumed-pregcalc.

: "This day my oaths for drinking of wine and going to plays are out, and so I do resolve to take a liberty to-day, and then to fall to them again."

[Comments] (1) : Tivo recorded one of those programs full of snippets of artsy videos. One of them was really nice: sort of drifting around Paris while Claire de Lune played. Proving something or other about our age, it looked kind of like a drug commercial. It could have been sponsored by drug companies and called "Claritin de Lunestra".

[Comments] (2) It Exists!: Sometimes Sumana uses "it exists" to indicate indifference about something. But today I use it in celebration. We went to the new Cody's books, and they had Beginning Python! I finally got to see my book, and it was great to see stuff I wrote in print. The only downside is that my last hopes for the actual book cover being the non-freaky picture have been dashed.

I started writing some documentation for Rubyful Soup. Only about halfway done, but it's a good start. I've learned a lot about technical writing in the past couple months, as you can tell by comparing the documentation files for the two Soups.

[Comments] (3) Challah: I made a challah bread (originally intended for French toast) and people raved about it, asked if challah were my specialty, etc. I'm not sure how to deal with the quality of my cooking because it's not something I feel I'm especially good at. I keep thinking people are just being polite but the charade has been going on for long enough that the hypothesis starts taking on aspects of your more sinister conspiracy theories, with salivating lizard-men lurking in the shadows waiting to eat leftover risotto.

Sometimes I think about going to culinary school, but it would be a big waste of money because I doubt I could ever be happy making food for a living. However I am always on the lookout for ways to be a dilletante on the cheap, so I just bought a cooking school textbook for self-teaching. We'll see how it goes.

Forthcoming NYCB entries: big changes, Ruby stuff, fun with Amazon wish lists and AWS tomfoolery. I am basically just typing stuff because I don't want to go to sleep yet.

: Here's an excellent thesis on recommendation engines with overview and ideas for decentralizing the recommenders. It's got equations and everything. I'd pull a quote but it's in PDF and really who has the time? Life is too short to waste time justifying my decisions!

Link from waxy, which has seemingly picked up an interest in recommendation engines.

Rubyful Soup 1.0: It's got documentation, it's got some minor improvements, it's got the version number that means "at last, perfect!" in the open source world and "crappy rushed-to-market" everywhere else. Enjoy it! It will be there.

[Comments] (4) The Day Job: I've quit my job at CollabNet. My current plan is to finish this book first and then find a more interesting job. We'll see what develops!

: The Spam Stock Tracker takes a more long-term view of the same dataset used by the Stock Spam Effectiveness Monitor. It buys 1000 hypothetical shares of each new stock mentioned in spam, and tracks the performance indefinitely. Excellent. I also like the old-school way the author always refers to spam as "SPAM". Wait and See? SPAM Can't Wait. Found via O'Reilly Radar.

: This is an idea, not a serious suggestion. Consider a political system in which getting re-elected to an office requires a bigger percentage of the vote than being elected to that office for the first time. The nth time you stand for election you have to get over 50+k(n-1) percent of the vote, or you trigger some kind of instant runoff. This achieves some of the anti-corruption advantages of term limits while mitigating the anti-experience bias created by term limits.

: You know those old science fiction B-movies where "giant" lizards and dinosaurs wrestle with each other? They're always flipping each other over in their jaws. How did they film those scenes? The mandibular body slam is not a natural fighting technique of lizards, and it doesn't look very real (though realer than stop-motion), so it must be something that's easy to gimmick up with fake lizards. But I can't figure out what that gimmick might be. Do they have the lizards on sticks that they turn over? Gabe probably knows this one.

: Obvious omission from this list:

[Comments] (2) Fool! That's My Strawberry!: Going down south for a wedding. Not in the mood to do a bunch of driving but oh well. I leave you with this game, in which you drive around a badass motocross bike to... gather strawberries. Needs to be in a Game Roundup. There needs to be a Game Roundup, in fact.

[Comments] (4) : Back from SoCal. The wedding was great. We saw all of my immediate family as well. Two more days of work and then I'm a full-time writer!

I have a likely gig lined up at Broadband Mechanics after the book is done. But they keep getting business and they need more people now, especially Javascript ECMAScript DHTML AJAX hackers. If you're interested email Phillip.

[Comments] (3) Fun with Amazon Wish Lists I: For years I have been waiting for a web application that lets me keep track of my books. So far the best storage mechanism I've found is the Amazon wish list. It's not intended to keep track of books you already own, but it works fine for that purpose.

Unlike trendy repositories like LibraryThing and AllConsuming, Amazon wish lists are free and reasonably fast. I've tried local spreadsheets but wish lists are easier to keep updated, and you can do more stuff with them. Amazon gives each account multiple named wish lists, and it has a (read-only, blah) RESTish API. The features it doesn't have (tagging, mainly) I don't really need, though I would like to be able to comment on a book and retrieve my comment through the API.

Among the wish lists I'm using for nontraditional purposes are the requisite list of books I own, divided into books I've read and books I haven't. I'm starting to maintain a list of all the books I've read, though I started about 23 years too late. I have separate lists for my cookbooks and movies that Sumana and I plan to rent. Et cetera.

Amazon has a horrible interface for showing you your wish list. It's designed to make you buy things from the wish list, preferably things that show up on the first page of results. But its interface for finding something and adding it to a wish list is the easiest I've used. As for looking at the list that's why the Pocket Wisherman was invented (no, really, that's why). The only problem comes when I read a book and need to find it in one list to move it to another.

I have 2 or 3 books that don't have ISBNs and don't show up on Amazon. I don't know how to keep track of those. On the whole it works out pretty well. If you want to keep online lists of books or other cultural artifacts, and don't mind (or relish the thought of) writing the display code yourself, consider using an Amazon wish list. If you also keep a "real" wish list on Amazon, don't give any shipping information for your subsidiary lists. This will make it more difficult for people to use Amazon to buy you things from those lists.

Next time: exploiting price information. (I also cover this in more detail in the Python book.)

[Comments] (4) Fun With Amazon Wish Lists I.V: I should talk about the target audience for this series before more authors of online bookshelf programs leave comments in my entries. This series is not for bibliophiles per se; rather for bibliophiles who want a programmable API to their bibliophilia.

If you only want to make an annotated list of all your books then use LibraryThing. It's fast, easy to use, and the data is reliable. You can simulate multiple discrete lists by using tags. It costs $10, which is not much compared to other things you've paid for. You could also use All Consuming, which is free and does non-books, but was really slow when I tried to use it (which was a long time ago). You could also use one of the 200 bookshelf applications sure to show up on Ning. You could buy Delicious Library for your Mac, which uses a webcam as a barcode scanner. You could, in short, use whatever incarnation of this particular project tickles your fancy, because your fancy is not tickled by external APIs.

If you want to build a list of books and then use it as a data structure, then Amazon wish lists are the only game in town operating on a higher level than a Z39.50 binding: see for instance this NYCB from last year, before I got REST religion. Amazon provides some interesting data not available through other APIs, like prices and sales rank, but you can join on ISBN to get that data, so a lot of the things in the series will be applicable to people with Tyrannioware or other Z39.50 systems.

[Comments] (4) Overworked: How many "business hours" would you say are in a "business day"? I would say eight. But someone told me they would call me back in 24-48 business hours, which makes it sound like every hour in a business day is a business hour.

[Comments] (3) : Today Kevin told me that the noble gases can be coerced into forming compounds, mainly with fluorine. When this was discovered (1960s), Kevin's father wrote a paper on the subject called "How the Noble have Fallen". Just recently the noble gases have been bound to uranium. Stay tuned for action as the noble gases form compounds with more and more other elements!

Terror From Not Beyond Space: NEGADON: The Monster from Mars! Sure to be a hit.

As we know, Japanese robot technology is making great advances. Once a gigantic humanized robot was only an imaginary object, but it will be made in the future. We wonder whether it is in demand or not.

That reminds me, I need to finish the postmodern Godzilla fanfic I was going to serialize a million years ago... aw, who am I fooling?

[Comments] (3) Squid Ink: A while ago Sumana and I found out that the squid ink used to dye pasta is taken from the ink sacks of dead squids. Previously we had naively imagined that it was extracted like milk from a cow. Like you'd put a bunch of squid in a tank, and suddenly hold up a picture of a thresher shark. Oh no! Water full of squid ink. Move the squids to another tank and distill the inky water into squid ink for pasta. That doesn't really make sense if you think about it. There's no real point to putting squid ink in food except for aesthetics' sake, so we stopped eating stuff with squid ink.

I bring this up now because there's an Italian deli on Valencia I've always wanted to go into, and today we were there when it was open and we did go into it and they had little bags of squid ink for sale. We were on Valencia to have a dinner to celebrate my newfound unemployment. We ate at the fittingly-named Last Supper Club, which was tasty. Sumana liked it more than I did. I would probably have liked it more if we'd had a cheese course instead of dessert: I really had my eye on the gorgonzola fondue.

The first time we ate on Valencia it was at an Italian restaurant called Bistro Annex. I got suckered by the romantic candles on the tables. It was not good eats, though apparently it's a spin-off of Watercress, which we've been to and liked. Bistro Annex had subcontracted their desserts to a dessert company, and the dessert company had printed up a dessert menu that was a lot flashier than the main menu. It was, I realize, disturbingly like Brendan's restaurant that instead of having a kitchen just goes to other restaurants to fulfil your order.

Basically we should have gone to the Salvadorean restaurant next door. We still haven't been to that restaurant, but it probably would have been pretty good.

Anyway, I have just recently started to really observe restaurant kitchens. The neatest thing at Last Supper Cafe was how they cook the pasta. They have deep-fryer machines full of water which they occasionally top off from a pot set under a barely dripping tap. To cook a bunch of spaghetti they drop it into the basket of the deep fryer. When it's done they pull out the basket and reuse the boiling water. It's probably some specialized $600 pasta-boiling machine but it basically looks like a deep fryer full of water instead of oil.

Fun With Amazon Wish Lists II: A neat thing I saw today is a search engine for used computer-related books on Amazon. I love buying stuff from used bookstores, so it's no surprise that UsedPrice is my favorite field of the AWS Bag data structure. In this section I'll present a couple simple ideas for efficiently allocating your money by combining Amazon wish lists (or other lists of desirable ISBNs) with AWS' pricing information. These ideas go beyond the Pocket Wisherman, which is designed to help you finding stuff from your wish list in real-world locations.

In the web services portion of Beginning Python I demonstrate a web service client that goes through an Amazon wish list looking for bargains. A bargain is defined as an item available used through Amazon for some small fraction of its new price.

There are lots of bargains because many people think they can make money selling used books online for a penny and making it up in volume. Actually they think they can make it up by skimming money off the $3.50 shipping surcharge that Amazon charges the buyer. But they might as well be trying to make it up in volume, because $3.50 is not that much when you think of the labor involved in determining the book's condition, doing the data entry, then when someone buys the book finding it, packaging it, and shipping it out. That kind of low wage is usually associated with foolhardy professions like writing the books in the first place.

But people persist in listing books online at sub-yard-sale prices, and even when you tack on $3.50 for shipping you can find lots of good deals on books you wanted to buy anyway. The formula I would use today (slightly different from the one in the book) would be to add the UsedPrice for an item to the shipping cost (assumed $3.50), then consider the item a "bargain" if the total cost is 25% or less of Amazon's OurPrice.

Ideally you would have a script that generated an RSS feed containing all the current bargains on your wish list. I haven't written this useful program yet because my pressing concern right now is slowing down the rate at which I acquire books from my wish list.

Recently I was given an Amazon gift certificate. You can't use gift certificates on used items because you're not really buying from Amazon. The rational way to use them is on things that aren't available used, or that cost just as much used as new. In other words, anti-bargains. Tweak the threshold algorithm and by bargain finder script became an anti-bargain finder.

The anti-bargain finder relies on the assumption that used availability on Amazon is proportional to used availability in the real world. If there were some book that crowded used bookstores in the real world but wasn't being sold used on Amazon at all, it would be falsely flagged as an anti-bargain. This is unlikely to happen because so many of the used listings on Amazon come from real-world used bookstores in the first place.

I think I had another hack idea in this category but I can't remember it at the moment. These are pretty simple ideas but they can save you money.

[Comments] (1) Speaking of used books: We went to Borderlands yesterday as part of our Valencia walk and I ended up with three books. Two of them were from my wishlist but--I don't know why I keep buying the old novelizations of Infocom games when they're guaranteed to be juvenile disappointments. Just because George Effinger wrote one doesn't make them a legitimate art form. But yesterday I bought the Stationfall novelization. I don't know if I could even stand to be in the same room as a Planetfall novelization because the game was so great and the book is bound to be so awful. Well, I say that now, but if I ever actually see it I'll probably end up buying it. I should accrete all six and then purge them by giving them away as a prize for the IF competition.

Ruby Cookbook: Well, the contracts are sent in and Lucas announced it, so I too will announce it. The book I'm working on is the Ruby Cookbook for O'Reilly. I'm co-authoring it with Lucas Carlson. So far it's going really well. One thing I still need to get set up is the website where I solicit recipe ideas; I'll try to do that today. In the meantime you can send me mail if there's something you'd like to see in the Cookbook.

[Comments] (2) Game: Play a game of Twenty Questions. Then invert the answer to the first question and try to think of a different object that fits all the questions. Alternatives: invert the earliest answer you can, invert all the answers.

[Comments] (1) : What if J.G. Ballard ran the mid-20th-century game company L.G. Ballard?

[Comments] (3) If You Want To Contribute To The Ruby Cookbook: The Ruby Cookbook Official Unofficial Homepage has details.

Jake Berendes sent me an awesome stuffed mola mola today. By coincidence I sent him a less awesome thing today.

[Comments] (6) : Today I picked up Sumana's mother at the airport. We had a good time making lemon rice. She brought lots of ACK and other Indian comic books for Sumana, a tunic (!) for me, snacks for both of us.

Also today O'Reilly sent me a "new author" package with some books about writing and a T-shirt. Basically I think they are trying to make me feel like I'm a college freshman and they are my supportive parents. Every month they'll send me a box of cookies or something.

[Comments] (1) : I stuck some AdSense ads on the NYCB archives and other Crummy pages that I run (as opposed to other peoples' weblogs). I did this 1) as an experiment to see how much money I would get by selling out, 2) because I don't have a real job right now, but mainly 3) because I've been freeloading off of Kevin's hosting services for long enough and it's time he got a cut of the action, which means I must drum up some action for him to get a cut of.

My ideal audience for these ads are the people who come into my site on really weird search requests that I can't help them with. Often times someone will do a search for, say, a game called Rat Poker with colorful rats that you color coordinate. For the median person who comes into my site on that search request, Crummy is a smorgasbord of disappointment. My scintillating discussion of mola molas and scripting languages are ashes in their mouth. Assuming I'd ever talked about games in which you color-coordinate rats (the plague has never been so stylish!) it would have been a computer hippy Linux game reviewed in a Game Roundup, or some crusty old DOS game in the Da Warren archives.

But there's a slightly larger chance that some programmer has recently written a Flash game that's all about picking the right rat to go with your jacket, and is advertising it through AdSense. The search request person should have just clicked on the AdSense ad for Barbie Rat Shop in the first place. But if the same ad shows up on my page and they click on it, I get money.

I have tried to make these ads unobtrusive by picking the most boring color scheme on offer, in keeping with the philosophy of design simplicity that drives all of our efforts here at crummy.com. Let me know if they bother you nonetheless. They sort of bother me, mainly because I've already had to tell Google not to use my site to push ads for the PublishAmerica vanity press, but also because there's sleazy impossible-to-block-all-of-it "give us your personal information and receive a tasty herring!" stuff. What kind of way is that to make a living? Whatever happened to making money the old fashioned way, by putting ads on your website and writing about random crap?

[Comments] (2) Tasty Lemon Rice Recipe: From Sumana's mother, reprinted by popular demand. * marks stuff I didn't actually have in the kitchen.

Put in rice cooker.

Fry in skillet. When it starts popping, add:

Fry it up. Deglaze with

If you have timed everything correctly the rice in the cooker is now about 5 minutes from being done. Drain the excess water from it, and dump the rice into the skillet. Stir, cover, let sit until it's done.

Cleaning tip: chop the lemon rind into quarters and put one of the quarters into the rice cooker pot. Fill with water and turn on the rice cooker for 5 minutes. The turmeric mess will wipe away.

Today's Found Story: From "Once Upon a Time", which, incidentally, is dedicated to Gouverneur Morris (!). I call it "The Folly of Fanfic".

"Then, how did you suppose your sister was going to read it?"

Schnitzel was smiling to himself

"Schnitzel, you certainly are a magnificent liar"

"I think," said Ainsley, "they have lost their way"

"Was it you," demanded young Andrews, in a puzzled tone, "or your brother who tried to knife me?"

Mr. Thorndike stood irresolute, and then sank back into his chair

"Do I look as easy as that, or are you just naturally foolish?"

She was easily the prettiest and most striking-looking woman in the room


Sumana: Really makes you think, huh?
Leonard: Yes, but not about anything in particular.

[Comments] (2) Penguin Pictures: If I know one thing about you, random reader of my weblog, it's that you like cool things. It is my blessing... and my curse! For I must labor night and day (but mostly day) to find cool things for you. One such cool thing is the Flickr photo set of Antarctic M, who labors night and day (but mostly day, but for different reasons than I labor mostly day) to take incredible pictures of penguins and other austral phenomena. Through the power of WEB 2.0 she can actually put these pictures online, something never thought possible before the development of SOAP.

: I got a fancy Ruby gem set up on RubyForge, so now you can just gem install rubyful_soup and start screen-scraping the Rubyful Soup way. No dependency worries or anything. Plus, while I was figuring out how Ruby gems work, I wrote about five gem-related recipes for the Cookbook. I lauv zis cauntry!

[Comments] (3) Sumana's Mother's Sambar: I was a sous-chef for this operation so I don't precisely remember how you make it. This is my best guess.

Cook the dahl in water and turmeric in a pot. Add the vegetables and cook some more. (Throughout this adventure, add more water whenever neccessary.) Meanwhile, scrape out:

I scooped it out with a melon baller. Save half of it for the raitha. The other half goes into the blender and gets chopped into coconut flakes. Then to the blender add:

Blend into a paste. Scrape into the dahl and stir. Now the sambar is basically ready and just needs to cook some more. While it cooks make the raitha. To the leftover coconut add:

Stir to combine. Finish the sambar with about a tablespoon of brown sugar and 2 teaspoons of salt. Finish the raitha with 3/4 teaspoon of salt. Serve with rice.

I like putting the raitha on top of the sambar as a sauce. Sumana thinks this is really weird. But I used to put ranch dressing on top of pizza, and this is an analagous situation. To me, it is Sumana's habit of eating the raitha completely separately that is weird.

: Jason Scott, the chap who runs textfiles.com and who did a (presumably awesome) documentary on BBSes, is now doing a documentary on text adventures. This is so in tune with my demographic of one that both Mike and Brendan sent me this information. Brendan actually suspects that I am Jason Scott. Ha ha! Such an impossibility strikes me as humorous! Ha ha! Ha!

[Comments] (1) For Kris: The Back to the Future DeLorean rendered in Lego. From lonita_links.

I'm Hip, I'm With It: Takka takka takka takka. Beautiful Soup is mentioned in a podcast! Or, as we used to call it, an "MP3 file". Specifically, this MP3 file, about 17 minutes in. It also mentions a cool module called NLQ for doing natural language queries.

Incidentally, when I saw Austin Powers I did not get the Macarena reference at all. I only got it a couple days ago after Sumana painstakingly explained every aspect of the joke. I thought Dr. Evil was walking like a toy robot, making a sound a toy robot might make while walking. I actually like this explanation of his behavior a lot better.

[Comments] (1) More Mega Penguins: You know how Cory Doctorow subscribes to certain Flikr tags' RSS feeds and uses that to post pictures to BoogaBooga? I subscribe to the 'penguins' tag feed. Penguins!

Torosaurus, Torosaurus: Last night in a dream I discovered that if you have to sing a song from an Italian opera, but you don't know the words, you can just sing the names of dinosaurs and it will work out okay.

[Comments] (4) : Got a book deadline coming up. Looking pretty good.

: More book work. Today I was unable to avoid learning about continuations, a topic on which I was for years able to maintain total ignorance. I got my revenge, though, by writing about continuations as though they were a way of manufacturing Pez dispensers.

I also wrote a song. It's an "I Will Survive" type anthem to be sung by Godzilla, and it will go on the next album. I had to give Kevin's drum machine back, and still haven't figured out how to record on the computer, so who knows when that album will be forthcoming. My writing breaks are good opportunities to practice, though.

: I'm ahead of my self-imposed arbitrary schedule for the book but I don't want to use any of the slack time because then I won't have it. I guess that kind of makes sense because there might be an emergency in the future.

Anyway, today when I wasn't writing I spent a lot of time playing Angband spinoff #300, Troubles of Middle-Earth. As the name indicates it's sort of a Tolkien-themed Angband variant. Yes, Angband itself is supposed to be Tolkien-themed but it's just not enough for some people. This game lets you gallivant all around Middle-Earth and jumbles the three ages all together for your delectability.

There's also a bunch of weird stuff like Deathmolds. I don't think any of those supplemental volumes of Tolkien's obscure myths mention Deathmolds, or any kind of sentient molds for that matter. I think I'd have heard about that. This obsessive eclectiveness (really the defining feature of the roguelike genre) yields some weird features though. As usual with Angband clones, I was having a great time until my carefully constructed character was cloberred by something significantly more powerful than myself.

: "They say an axe murderer lived in this sentence once," says Giblets. "But he killed all references to himself."

Best self-reference I've seen in a long time.

: Sometimes, swirling patterns form in the Tar Pit From Hell.

[Comments] (1) : Argh. Spent all day working on a recipe about matrix multiplication. Like a party in an after school special, it started out with laughs, everyone having a good time, but then someone started passing around some linear programming and it all got kind of blurry. Next thing I knew I was lying optimally in a pool of my own vomit, clutching the memoized state of all subpools of the vomit. A lot of the fun in writing this book comes from relearning stuff you learned in college, but it's not so fun when it takes all day to get it right.

[Comments] (1) : Today I realized that I should probably rewrite one of my old songs because it mentions a file format that's obsolete, or at least not used for what it used to be. Then I started thinking about all those old file formats. Remember when files used to use different data serialization techniques, rather than just different XML tags? Seems like every application had its own three-letter extension, or a mysterious set of .DAT files. Am I the only one who feels nostalgia for these weird beasts?

You may have noticed that I try to avoid telling you about my dreams unless some aspect of the dream would be interesting if I'd thought of it while awake. There's no need to thank me for this, though large cash donations are always appreciated. Anyway, last night I dreamed I was reading a Terry Pratchett book and weird punctuation started creeping into the middle of the words. There'd be a string of periods or an exclamation mark where it didn't belong. More and more of these strange characters started showing up in the text, and then you turned the page and there was a two-page spread that looked like a screenshot from a roguelike game. In retrospect all the weird characters made sense within the roguelike game, and the screenshot accurately represented the state of the plot of that scene in the book.

It would be pretty neat if someone could actually do this for a nontrivial story, but it seems like a task similar to the map of Rome in Gigamesh that you see if you only look at the commas.

[Comments] (7) Wikipedia Says: Wikipedia says that, originally, movie copyright dates were written as Roman numbers so that the studios could release five-year-old movies in Lebanon or Peru, and the audiences there wouldn't have the fact that the movie was five years old jump right out at them. This is entirely consistent with the known behavior of the movie industry, but I'm suspicious of it because I can't find a non-Wikipedia source for it, and also it forces me to add another item to my previously simple heuristic for when to use Roman numbers.

  1. You are pretentious (Super Bowls, titles of movie sequels, dates carved into buildings, names of people).
  2. You are desperate for visually distinct ways of representing the counting numbers (outlines, page numbering for prefaces).
  3. You want to obfuscate a number (movie copyright dates).

Actually, Pete Peterson II makes me add another item, since he's not named that for pretentious reasons. Lousy heuristic! In a sinister twist of fate, it's now become as complicated as Roman numbers themselves!

[Comments] (1) Dr. Livingston, I Presume: We checked out the Tivo for the first time in over a week and watched the new House with Ron Livingston. That guy is so typecast. He can't not be his Office Space character.

Today it finally happened: I wrote a recipe that Lucas had already written. It's not horrible because the plan is that we go in and revise each other's recipes anyway. But now I have to figure out how to merge the two recipes.

Nothing else of interest is happening to me, except for the run-in with the pirate bird-people. Lots of stuff is happening to Sumana, though.

[Comments] (2) : Cleaning out the garden for planting. I think the garden is mainly just an way to fool myself into doing exercise by making myself think it's useful work. It doesn't produce all that much food. This year the total harvest was a bowl full of green beans, some garlic, and 4 pumpkins. Not a very good return on the work I put into it. The rhubarb plants and the artichoke plant are still alive, but not producing yet. But it beats lifting weights or jogging around for no reason.

The Quality of Service is not Strained: Doesn't QoS look like a Klingon word?

Update: "qoS" means "birthday". Qos enough.

: There's a new gem of Rubyful Soup over at Rubyforge, if you're in to that kind of thing. If you tried the gem before and it didn't work, try it again. Just KEEP TRYING IT.

[Comments] (1) : I'm reviewing the proposal for a new Python book, in exchange for a sum so modest it's actually called an "honorarium" to make me feel better about it. But it's a good-looking book that fills a niche (the niche being the scattershot organization and frequent out-of-dateness of the online documentation). And I'm now the kind of guy who accepts honoraria. Next stop: corruption!

What You Call Hell, He Calls Game Roundup: Frustrated that NYCB is not as interesting as it used to be what with all the book-writing, so I took time today to do an old-fashioned Game Roundup. But not so old-fashioned that instead of reviewing Linux games I'm going to be reviewing crappy old jigsaw puzzles and board games. Seriously, have you seen those first commercial games from the early 1900s? What was wrong with those people? They weren't stupid; games like chess and backgammon have been around for thousands of years. But when someone got the idea of printing games and selling them commercially, it was Chutes and Ladders all the time. Though most of the games sold today are not much better, so maybe I'm being unneccessarily hard on those turn-of-the-century fools.

Anyway, here we have five games. In the near past I also found a new (Java?) version of an old Ultima-type game called Ranadin. This was a really great game in its time, but I can't find the URL to the new version on the web or anywhere in my notes. All I have is this excellent quote from the intro: "The king announced victory and dispersed his army, leaving the true threat largely undisturbed to this day." Now, games.

: Hey, mom, here's a bunch of stuff about Richard Dadd.

Toot!: Today I wrote my 100th recipe for the Ruby Cookbook. For the sake of history, let it be known that it was the recipe "Performing DNS Lookups". Not sure why history cares, but there you are.

[Comments] (4) : Is it a good idea to make one of those English Christmas fruitcakes? They look really good, but they also look like they might explode at any minute.

Extremely Context-Dependant Funniez: Me on IM:

(16:24:11) yeah, deer
(16:24:13) yes, dear

: Thanks to clickolinko, I now know what would happen if Frank Chu collided with Frank Cho.

[Comments] (1) : I decided there was no point to keeping private my private outline for the Ruby Cookbook, so I put it online in color-coded form. Now you don't have to email me ahead of time and ask me what recipes are still available (though this would still be a good idea, so that I can mark recipes as reserved). Plus, you can get a visual feel for our progress on the book.

PS: the other day I wrote my first Mandelbrot set generator (for the recipe about complex numbers), which was really neat. Soon I'll have graduated to ASCII art drawings of Mr. Spock.

[Comments] (1) : Today: bunch of cooking day. I made a bunch of food for Sumana to take to work so she doesn't have to buy lunch. I also started making plum pudding, using this recipe which I realized too late is actually a recipe for an infinite number of puddings, not just one. So it better turn out well.

And I did Christmas shopping and played computer games. Tomorrow I'm going to work on my story if I know what's good for me, which I don't.

: Today I discovered that you can switch the tunes of "She Blinded me with Science" and Gary Numan's "Remember I Was Vapour".

Also, in honor of the end of Checkerboard Nightmare, our Filk Will Eat Itself Dept. has come up with yet another Checkerboard Nightmare Filk For The Lazy. Play TMBG's "Doctor Worm", and shout "Hot!" at the appropriate intervals to turn it into "Doctor Hot"! Annoy your friends! Stupefy your enemies (ie. those who, until you started this filk, were your friends)!

: Watching ATK there was an offhand remark that putting butter on your popcorn gives great flavor but makes it soggy. What about clarified butter? That's got all the water boiled off. My cursory web search doesn't see anyone making a clear statement that they tried this and it did or didn't work, so I'm going to try it and make such a statement.

Scot Free: Ebay has dropped the charges.

[Comments] (2) And for a Buck and a Quarter: In "Minnie the Moocher", did Minnie actually have a heart as big as a whale, or was her heart only as big as the heart of a whale? I know it's a metaphor; the question is, which metaphor?

More interesting stuff coming tomorrow or Friday, hopefully.

: Cute APOD today.

[Comments] (3) : Man, working from home is great. Also great is having a well-defined set of requirements and seeing yourself make incremental progress every day. I set up the Cookbook page so it accurately reflects the working outline (it's actually the canonical outline, as far as I'm concerned) and has statistics about the recipes in progress. As you can see we're closing in on completing the chapter on date and times. This is disproportionately exciting because our deadlines are hit or missed based on the completion of chapters, not recipes per se.

Aaaand... tomorrow I might have the new web toy ready for you to play with. The data gathering is really the most labor-intensive part of this one.

: Toy still not ready for prime time, but I did get the date/time chapter of the Ruby book finished, and I found this big ole transcript of Bucky Fuller rambling on, so no one can say I didn't get important things accomplished. I also prepared secret appetizers that went into freezer bags to be baked when my family comes up for Thanksgiving.

Collector's Edition: 3D Settlers of Catan set for $380. From an old email Rachel sent me that I happened to see just now.

Ghee Popcorn Success: The TiVo recorded The Apartment on PBS so we re-watched it tonight. Man, that movie is a lot darker than I remember. Anyway, I decided it would be a perfect time to test out my hypothesis of putting clarified butter on popcorn. It worked! Great butter flavor and it didn't make the popcorn soggy. Another great quick tip, not from America's Test Kitchen.

[Comments] (5) The Moon is a Harsh Mistress: I guess when you're a kid in a small town and you want good science fiction and there's no Internet, you're supposed to befriend an adult who knows about science fiction, and borrow it from them or get it via inter-library loan. But I didn't know of any such adults, or even about inter-library loan until it was almost too late, so when I was a kid there was not much science fiction for me to read.

There was an anemic selection of young adult science fiction at the middle school library. This selection was much bigger than it needed to be because only three of its books were worth reading: two whose titles I don't remember, and Robert Heinlein's classic juvenile novel Have Space Suit Will Travel. Man, that was a great book. So I started out very well-disposed towards Heinlein.

The Arvin library had about two bookshelves worth of science fiction, plus some in the paperback racks. It was mostly mediocre Star Trek novels, and now that I think about it, the remainder was also pretty mediocre, but I read it. I read some of Heinlein's later stuff like The Number of the Beast, which even at that age I could tell was lousy despite the gratuitous sex scenes added to throw me off the track.

My dad had a copy of Stranger in a Strange Land which I also read and found to be very boring. I later learned that it was a classic, so I read it again a couple years ago and found it to be very boring again. I realize this makes me an iconoclast. So I figured Heinlein's adult writing was a bust.

But for some reason (probably extreme low cost), I recently decided to buy a cheap copy of The Moon is a Harsh Mistress. I just read it and dang if that wasn't great. Good plot, funny humor, MacLeod-esque in its sardonic political one-liners. The computer science was abysmal but I didn't mind. I did mind the political hay made of the contigent fact that the computer science was so abysmal, but I say go with the flow. I think apart from Lem (who will probably forever be a special case) this is the earliest-published science fiction I've read that I didn't have to judge by the lowered set of expectations I usually use for old science fiction. Well, 1984 qualifies as well.

Also, while doing research for this entry I discovered Frank Key, who is kind of what you'd get if Olaf Stapledon wrote Fafblog.

The Unofficial LEGO Builder's Guide: Sorry to shout, old chap, but the author of The Unofficial LEGO Builder's Guide (which I am currently reading) spells LEGO in uppercase throughout the whole book. He also always says "LEGO pieces" or "LEGO elements" or "LEGO bricks" instead of "LEGOs", just like LEGO Corp's anti-trademark-dilution guide says you should. I guess you have to do that if you're writing a whole book but it looks weird. Anyway, I thought I'd ELOG these facts for you to OGLE.

Apart from this (which looks to happen less frequently in later chapters as it slowly sinks into the reader's head just what brand of click-bricks we're talking about here), the book is great. It's the book I always wanted to write, just as OOP from Microserfs was the computer program I always wanted to write (now we have LDraw).

There's also a sentence in the book which I wanted to share with you because it seemed tautological and funny, though I guess you can parse it to be non-tautological:

Although only a few elements fall into the standard cylinder or cone categories, what they lack in number they make up for in uniqueness.

[Comments] (2) PRESENTS: This is so awesome (sent to me by Ryan North himself): Chris Noessel's NewsRex takes stories off the news wire and formats them as episodes of Dinosaur Comics. Just one more step towards my proof that any form of communication can be represented as episodes of Dinosaur Comics.

[Comments] (3) Christmas List: By Susanna demand, for the people who give me Christmas presents. You'll notice there are actually durable goods on it this year (because I don't have much income at the moment), but I would still be fine with you giving money to charity in my name.

I am doing pretty well this year w/r/t acquiring and making awesome presents for people with not much money.

I Am A Platform: "atropine is a screen-scraping library built on top of BeautifulSoup"

[Comments] (2) : Family over for pre-Thanksgiving dinner, which was fun. I made fried polenta with blue cheese, which it's probably good that I don't make it a whole lot. We also had some molasses spice cookies I made which were really good.

Today I found out how to parse an ID3 tag out of an MP3 file, and I put that information into a Ruby Cookbook recipe on binary file manipulation. It's actually quite easy so long as you limit yourself to the original, 128-byte ID3 format and stay far away from the overdesigned ID3v2. The "2" stands for second system. Ooh, snap!

[Comments] (2) Peanut Brittle and Christmas List Addendum: Happy Thanksgiving!

Usually every year my grandmother makes peanut brittle for Christmas. This year she is passing on that because she's not been well, so when my mother came up for Thanksgiving she foisted a big bag of raw peanuts on me. I don't know if I'm supposed to make peanut brittle for everyone or if I'm the kind of person who people want to give raw peanuts to (Sumana's mother also foisted raw peanuts upon me when she came to visit). The bag weights about 2.5 pounds, which seems to make between 3 and 6 pounds of brittle. That seems like less than what my grandmother usually makes. I think she might use two or three of these bags. Anyway, I'll try a little batch and see how it goes.

Here are a couple more things I thought of to put on my Christmas wish list:

More as I think of them.

Finnegans Wharf: Man, I am never going to Fisherman's Wharf again if I can avoid it. We went there yesterday and it was overpopulated. However during that trip I got to hang out with my uncle Robert, which was nice. Sumana comes in and looks at the text box I'm writing and says that I shouldn't say I don't want to go there anymore, having only been during big tourist days. But during those visits I've now seen everything I want to see, so why go again? I don't eat seafood so that's not a reason.

We went to the Múséé Mécháníqúé. I have been thinking about the penny arcade (now quarter arcade) entertainments on display there, trying to take them in the context of their time, and it's not working very well. My closest frame of reference would be old video games (in fact, they had some old video games there). But most old video games are still fun, and they're fun multiple times. Whereas all but the most complex mechanical entertainments at the Múséé are only fun once, if that. Some of them were really boring and repetitive, not even interesting on a mechanical level; I say this as a person who likes watching model trains.

But unlike video games, penny arcade machines were probably something you'd only see once a year, at the fair or on a vacation. In that context it makes sense to pay a cent to see something once, even if it turned out to be a cheap thrill you wouldn't want to repeat.

I think the best pieces at the Múséé were the music boxes. There were three "execution" diorama machines and my mother watched all three of them. I guess the entertainment-crazed populace needed to be weaned off of live public executions somehow.

[Comments] (1) My Favorite Wife: This was a weird, weird movie. At almost any point it could have become a noir thriller: the main character would be forced by his own spinelessness to kill someone, and the noir would start. But since it's not a Coen brothers movie that didn't happen. Instead, the characters constructed big tissues of lies which were destroyed and constructed again. It starts out awful Marx Brothers and soft focus sentimentality (which I guess is just the other aspect of awful Marx Brothers; hey, remember those Marx Brothers movies near the end, hideous in form, where Harpo's character was actually named "Wacky"?) but as you get used to it it becomes a sort of relentless psychological slapstick that dies out at the end.

For the first third of the movie I was driven mad by the voice of the male lead. Who was it he sounded like? Then Sumana told me: he sounds like Tony Curtis' imitation of Cary Grant in Some Like it Hot. Because he is Cary Grant. I had never seen Cary Grant in a movie before, except when I was very young.

[Comments] (1) Fast Hot Chili: This recipe is derived from a really complicated recipe for a non-chili black bean soup from a Greens cookbook. I got rid of most of the complicated steps and now it's made almost entirely from things that come in cans. The other recipe is worth making but it's not hearty like a chili, and it's really inconvenient to make without a food mill.

Saute a diced onion and 1 t oregano in 2 T olive oil. Add 2 chipotle peppers with sauce and 2 chopped serrano peppers and 3 chopped cloves garlic and 28 ounces canned diced tomatoes with juice. Simmer this for a while.

Then prepare in a big pot: 2 cans drained kidney beans, 2 cans black beans with juice, 1 package fake ground beef, and 2 cups vegetable broth. You could substitute the kidney bean juice for the vegetable broth, but I've never trusted kidney bean juice. You could also omit the vegetable broth altogether. Heat this up a little so it'll be about the same temperature as the stuff in the skillet.

Then dump the skillet contents into the big pot and cook a little longer. Puree some of the chili and/or add crushed up tortilla chips to make it thicker. Eat with avocado/chopped tomatoes/sour cream/etc. This is pretty hot; the hotness dial is the serrano peppers if you want to change it.

[Comments] (5) : My grandmother, Rosalie Richardson, died early this morning. My mother has more. She'd just gotten out of the hospital healthy, so we all thought she'd be with us a lot longer. The funeral is on Thursday and it's going to be difficult. She was the grandparent to which I was closest.

Obituary: Emailed me from my aunt Pat.

Rosalie Benson Richardson, 74, passed away in Bakersfield, California on November 27, 2005.

Rosalie was born December 29, 1930 to George and Rachel Benson in Monet, Arkansas. Growing up Rosalie, her parents and five brothers and sisters divided their time between Arkansas, Missouri and California. It was in Orland, California where Rosalie met her true love, her husband, Dalton. Shortly after the birth of their second child, Rosalie and Dalton moved to the Orange County area where they began a farming career and had three more children. In 1965 Rosalie, Dalton and their children moved to Kern County and began farming in the Wheeler Ridge area. Rosalie loved living and working on the farm. In Wheeler Ridge, Rosalie continued to raise her children and worked in the farming office. On the farm Rosalie made a home where her children and later grandchildren loved to be and always felt welcome. In 1994 Rosalie and Dalton retired from farming and moved to Bakersfield.

Rosalie was an active member in Meridian Community Church. She found great joy in church activities and fellowship with other church members. Rosalie enjoyed decoupage and in recent years she rekindled an interest in quilting. Rosalie created many beautiful things and received great joy in giving them to family and friends. Rosalie loved Christmas; every year she would make peanut brittle for her friends and family. Rosalie had many fans of her famous peanut brittle. In her spare time Rosalie enjoyed doing jigsaw and crossword puzzles.

Rosalie loved her family unconditionally and enjoyed spending time with her children, grandchildren and great-grandchildren. Rosalie was a kind and loving person who always had a warm smile on her face. She touched the lives of all who had the pleasure of knowing her.

Rosalie was preceded in death by her husband, Dalton Richardson; sons, Roy Richardson and Larry Richardson; sister, Ellen Smith; brother, Mark Benson and daughter-in-law Helen Richardson.

Rosalie is survived by sister Lou Carter; bothers Carroll Benson and Harold Benson; daughter Patricia and husband Alan Dyer; sons, Donald Richardson and Garry and wife Joan Richardson; daughters-in-law Frances Whitney Richardson and Kathy Richardson; grandchildren, Shannon and husband Shaun, Brian and wife Tina, Leonard, Susanna and husband John, Kevin, Rachel, Kyle, Eric and Brett; great-grandchildren, Sydney, Sam, Joel and Leah.

Services for Rosalie Richardson will be at the South Kern District Cemetery in Arvin on Thursday, December 1, 2005 at 12:00 noon.

Donations may be made to the Dalton Richardson Memorial Agricultural Scholarship Fund at Arvin High School.

Cookbook Note: Almost done with the "files" chapter but not feeling great about it. Seems like too many retreads of stuff in the other cookbooks. I guess that's to be expected since file access is so generic, but if you have any ideas for new recipes let me know of them.

No Fun With Amazon Wish Lists: Marc Hedlund complains about major problems with Amazon wish lists. The first comment is from an ex-Amazon employee complaining about Amazon's top-down management style that means features never get implemented. I believe it.

Fortunately you can get around some of the problems by hacking together stuff using the web service APIs. They don't do nearly as much as I'd like, but Amazon wish lists with all their problems are still the only online book tracker that provides any web service API at all. Another comment in that weblog entry is the inevitable "we're doing it better with Rails and we need beta testers", which is worth a shot; as is (still) LibraryThing if you just want something that works. The Z39.50 gateway is looking better to me all the time; the software equivalent of beer goggles.

Book update: files chapter basically done.

"And Other": Macros and fonts for creating Feynman (and other) diagrams.

: Remember the Lego Fantasy Roleplaying Game? With a bunch more bricks you can get BrickQuest, the more-Nethack-like game of my dreams (dreams vary in quality, of course).

[Comments] (3) Peanut Brittle Again: I thought it would be a good idea to make peanut brittle for my family in memory of my grandmother. But it turns out that my cousin Brian has inherited the peanut brittle equipment and duties, so that isn't neccessary. But I have to get rid of these peanuts somehow, so I thought I'd make peanut brittle for my friends in the Bay Area. Send me email if you are interested and I'll let you know when you can come over and get some peanut brittle, or I can give it to you when next we meet. Now I just need to figure out how to make peanut brittle.

The Acts of the Muppets: On the satelite radio on the way to Bakersfield we heard the title song for Jesus Christ Superstar. I noted that it sounded like it was being played by Dr. Teeth and the Electric Mayhem. This opened up a fruitful discussion about a Muppet version of Jesus Christ Superstar. The problem is that Big Bird would have to play Jesus, for the same reasons he would have to play Gandalf in the Muppet Lord of the Rings, and I don't think Big Bird could carry a whole Andrew Lloyd Webber musical.

So I proposed that the Muppets could do the book of Acts instead. That's more of an ensemble piece, so it would work better. Plus that makes it possible for Kermit to play the part of Paul, which is excellent because the Muppet Panic was invented to depict the conversion of Paul.

[Comments] (3) Crazy Scrapbooking Idea #2: We went to a craft store the other day and I was looking at the aisles of scrapbooking stuff (when I was a kid there was no scrapbooking stuff at the craft store!) when I had an idea. The main problem with scrapbooks is that they're big bulky physical objects, and the cute stickers that go into them are incredibly expensive to buy or time-consuming to construct.

What if there were a DTP program for scrapbooking? Something like Kai's Power Tools that simulated the experience of real scrapbooking, except you ended up with a web page you could share, and you didn't have to buy those decorative scrapbooking accessories--you could use clip art. It would not be nearly as complicated as a normal DTP program.

Like my previous scrapbooking idea, this one is probably already implemented. But there's always the possibility that no one would actually want this, in which case the field is probably wide open.

: Sometimes I post here Project Gutenberg texts where you can get a story if you read the names of the illustrations. This list of illustrations forms a story because almost every sentence in the story has an illustration to go with it.

Really plays merry hell with the meter though.

[Comments] (2) Peanut Brittle: The Foisting: I made a batch of peanut brittle yesterday and it turned out pretty well. However I still have many peanuts left, and I have gotten no requests for peanut brittle except for the one from Susanna, who is already going to get peanut brittle from Brian. If this keeps up I will have to start foisting peanut brittle on people. Foist!

Christmas List Addendum #2: More things I thought of, in decreasing order of me actively wanting them rather than them just being nice to have. The top one is a lot more important now that I've finally set up recording on my computer. Last night I made up a song about House for Sumana and we recorded it w/Audacity, just like that.

[Comments] (5) Eggnog: A couple things about eggnog. I found out from John that the eggnog you buy at the store is supposed to be diluted. Specifically it's supposed to be diluted with booze, but you can dilute it with milk, so long as you dilute it with something. My whole life I've been drinking concentrated eggnog. This explains a lot about my relationship with eggnog.

Before I learned the truth about eggnog I was planning to make some homemade eggnog to see if that was any better (I still am, actually). One thing that occured to me when looking at the recipes is that the ingredients for eggnog are exactly the same as the ingredients for ice cream. So you could make the eggnog ice cream that John loves so much just by pouring eggnog into an ice cream maker. But then I saw an episode of Good Eats where the exact same thing happened, so I can't take the credit for that idea.

House Band: I redid the House song mentioned yesterday with a drum track, and got Sumana to lay down some backup vocals. Here it is: House, M.D.. Includes bonus Stacy's Mom backup vocals joke, because we're still in love with Stacy's Mom (I like songs where people try to justify their unethical or socially frowned-upon behavior, which actually explains this song too). It sounds better than any song I've produced to date, but don't let that fool you; it's actually sillier and more pointless than the majority of my songs.

Incidentally, the drum machine I'm using is Hydrogen, which is wonderful. All it's missing is a cursor that shows you what part of the song it's playing. Also it would be nice to have a little tool that shoves all your note events over one sixteenth note because you designed the whole measure a little bit off.

[Comments] (1) : The Brendan Leonard Show actually looks like what you'd get if Brendan and I had a TV show.

[Comments] (2) : Bizarrely, both my NYCB entries today are IMDB links. Read the Prairie Home Companion Movie and weep. Woody Harrelson? It's like the Jay and Silent Bob Strike Back of A Prairie Home Companion.

: This film has been modified from its original version. It has been formatted to fit your preconceptions.

: I think not enough people realize the genius of Kevan's Christmas cracker joke generator. It takes advantage of the fact that, while there are an infinite number of bad punny riddles, there are only a finite number of punchlines to such riddles. The infinite aspect of the jokes has been parameterized as user input.

The Jerk: Saw this from TiVo and it was really funny. But pretty obviously it had undergone severe cuts for television, unless the director was way ahead of his time in developing an Adult Swim-like style of split-second cuts right when a joke was about to happen. But man, what a funny movie, right down to the bits that weren't funny. They anticipated those SNL skits that go on way too long without being funny, even though "too long" here was only about a minute.

My "H" key stopped working, so I think it's time to sleep now.

Truth In Advertising: I misread "Is SRSM the Next Microcap Stock Opport unity?" as "Is SPAM the Next Microcap Stock Opport unity?"

[Comments] (5) : Now that I've gotten recording to work on my computer I'm having a rare old time actually doing recordings. So far I've recorded two new songs for my upcoming album, which I hope to release next month in time for the ten-year anniversary of the day I bought my first guitar and started learning to play. I'm not totally sure why I would want to advertise the fact that I've been playing guitar for ten years, given my current level of ability, but it seems like the kind of things real musicians do to prove how self-indulgent they are.

Should I release (drafts of) my songs as I complete them, or keep them hidden from you until everything's ready to be released? Also I need to pick a name for the album. This is my first serious musical release in five or six or eight years (depending on what you count as "serious") so I'm a little out of practice with the cover art and the naming and whatnot.

Quote: "These hypothetical scenarios are weird; you can go back in time and tell someone what job to take, but you can't say 'Hey! Stop 9/11 from happening!'"

[Comments] (1) The Ultimate Star Trek Slash Pairing Generator: I created a web toy that generates pairings for your romantic or erotic Star Trek fan fiction. No longer need fanfic authors fall back on the standard pairings in use since 1966. There are bold, new, arbitrarily complex romantic entanglements to be explored!

Sumana claims that people keep writing slashfic with the canonical pairings because they prefer those pairings. I think this just shows a failure of imagination. If I wrote Trek slash I would like an occasional challenge like trying to fit Phlox, Lore, and Yeoman Rand into the same story. At any rate, the generator comes up with some really funny pairings.

This is also my first Ruby CGI program. The code's pretty bad; I've decided I don't really like Ruby's HTML generator. It's very idiomatic, but it combines logic and presentation like... well, like the farewell embrace between Spock and Vic Fontaine that fateful day on Starbase 26.

Penguin Update: There have been some great penguin pictures from this person's Flickr feed, especially this penguin picture. Also, Pokey the Penguin is still updating occasionally, and it has an RSS feed, so if you haven't subscribed to it and have therefore forgotten all about Pokey the Penguin, I'm telling you to cut it out.

When I stop the drum machine: Does anyone else get into a fugue state programming a drum machine where it feels like you're playing Space Invaders or using the old TheDraw drawing program?

I like how Hydrogen makes you come up with names for your drum patterns. Never before have I had to name parts of songs. My names for the patterns of the song I'm working on:

I also find myself putting down dummy tracks that give a visual picture of the different parts of the song; otherwise I get confused and forget how long things take. Yes, I'm a worse percussionist than George Michael Bluth.

[Comments] (1) : Playground is a shared space for building things out of virtual click-bricks. Opens up lots of possibilities for games. Are there any networked games with Lego-like mechanics? I'll settle for LEGO-like mechanics.

[Comments] (5) Nitpick: "Primer really isn't a sci-fi film...what's happening with the characters emotionally is the focus of the film."

Why can't a piece of sci-fi explore peoples' emotional reactions to something that can't happen or has yet to happen? This seems like "it's a graphic novel, dammit!" territory.

[Comments] (3) I'll Clobber Your Heart With My Dancing: We watched Holiday Inn, another Tivoed classic. Pretty good; there are not enough movies where people start businesses. However, all the songs except "White Christmas" were forgettable. I'm not someone who goes around claiming that polygamous marriages will solve everyone's problems, but it really would have helped the characters in this movie.

There was an odd wartime newsreel type song for the Fourth of July, where the chorus sings "Freedom! Freedom! Here comes the Freedom Man!", and, yes, here he comes, the Freedom Man, to sing about freedom. "I'm singing a song about freedom," he sings. I think a lot of the problems in this country stem from the fact that freedom is no longer sold door-to-door.

Blackface. Argh. Every movie I've seen with Fred Astaire (a grand total, I believe, of two) also has hideous blackface. In this movie I suspect there was an actual blackface number which was cut for cable, but they couldn't cut it all because there's a touching scene where Bing Crosby proposes to his beau... while making her up in blackface! Gah!

Also we recently saw A Day at the Races, where the Marx Brothers put on blackface for no reason at all. Supposedly they did it to hide among genuine black people, but the authorities are fooled for precisely 0.0 seconds, so they could have just skipped it. The only interesting aspect of it is that Harpo only puts blackface on one side of his face, making him look like the racial allegory aliens from the original Star Trek.

: Kevin heard the songs I've been recording, and compares my music to Joan Jett's. That's nice of him to say, but I think he's only saying it because "Get Around" has the same meter as "I Love Rock and Roll".

Finished two songs and two recipes today!

: Feedburner's FeedFlare looks like the feed-annotation device I proposed early this year in the Ultra Gleeper post-partum entry "RSS aggregator as task aggregator". FeedFlare lets you munge the entries in your RSS feeds, adding arbitrary sidebars and tools to each. In the original entry I said:

It's a good idea though, until someone gets mad that you're changing their RSS feeds, which I estimate would take 16 seconds.

I was clearly a little off on my timing there, because it's been at least 18 seconds and I don't see anyone who's complained about this yet. I guess all the people who would get mad are still diverted by the spectacle of Greasemonkey modifying their web pages.

: "Halcyon days" explained. From Kevin.

Joke: Sumana is reading The Mythical Man-Month. This reminded me of a Segfault story I never finished, in which I alleged that most of the people who'd originally bought that book had confused it with a sensationalistic book of cryptozoology published at the same time: The Mythical Moth-Man.

Buzzword Namespaces: Wes Felter on CodeCon: "Unfortunately I don't have any decentralized scalable anonymous version-controlled power management code to present."

MIDI Madness: ASCII : Unicode :: General MIDI :: ?

Apparently nothing, but I did learn about the game MIDI Maze while trying to answer that question. Man, that's awesome: using MIDI as a networking technology. The equivalent today would be USB Maze or something.

Eggnog Transitive Closure: Here's another thing that has the same ingredients as eggnog: the batter in which you dip French toast.

[Comments] (1) The Story Of oooooo: Sumana and I once tried this experiment, except we were seeing how many "a"s we could put in "It's a faaaaaake!" before we stopped getting Google results. I think the answer was somewhere in the 50s.

[Comments] (5) Five Children and It: I forgot all about this book until it came up in the Gutenberg feed. The sequels are also in the foggy swamps of the public domain.

My mother read me this book, and at least one of the sequels, when I was young. Man, she must have read to me for years because we went through The Hobbit and Lord of the Rings, the Narnia books, these books, and who knows what others, all presumably before I started reading at that level myself.

Anyway, it's a really fun book, though looking at it now I see a Victorian subtext of "Don't go around wishing for things to be different than they are!" Well, it's not really fair to malign the Victorians for that subtext, since it's the subtext of any wishing story, from old genie folktales to contemporary time-travel movies. The only thing I can think of that doesn't have this subtext is the wishing in Nethack.

PS: There was also a similar book, a lot more recent, also British, which had some siblings finding a pink creature that had grown in toxic waste. I mainly remember it because the book mentioned the "loo", and for a long time afterwards I thought that bathrooms in England had a strange device called a "loo" that nobody else had. Has anyone else read this book?

: Today, nothing happened. Hey, them's the breaks.

: Okay, okay. Here's a cute elephant picture.

: Sumana wrote a weblog entry on my behalf. Here it is:

I like Python! Also, here is a picture of a penguin. A meta-penguin!

[Comments] (1) : Things did happen yesterday, but I couldn't write about them because my neighborhood had no power all day because of a big thunderstorm. Mike Popovic came over (he was briefly in town from Maine), and we had lunch (produced on my gas range), and talked for hours.

Tonight: random date night. Sumana and I walked down Valencia and went into, I believe, every bookstore that was open. We also ate dinner at a tapas restaurant which was not good enough to justify its price.

I like the tapas idea though, and I wonder if other types of cuisine might start having tapas-style restaurants, and if this would encourage experimentation. Though I know nothing about Spanish food except what I've eaten in tapas restaurants, so for all I know this has already happened, and the tapas I've been eating are fusion tapas.

[Comments] (1) The Invisible Weblog: You probably can't see this because Kevin's DNS server has croaked again, but nothing will stop me from writing in NYCB. Except laziness.

Speaking of which, it is time to really put the NYC in NYCB, because Sumana and I are moving to New York City. I am apprehensive about this move, but it will probably work out.

We are selling and giving away a lot of furniture and other stuff, so let me know if we have something you covet that you're willing to come and take. I'll be sending out an email with more details.

[Comments] (1) : Bounty County keeps track of open bounties for work to be done on free software projects. And by "free software projects" I mean GNOME.

: "That makes it official, when he was a baby he was the happiest on earth."

[Comments] (10) Anti-palindromes: What is the term for a sentence that reads as a completely different grammatical sentence if you reverse it? I've never heard of any such sentences, and I can't think of any, but they must exist. Seems like they'd be O(n2) times more difficult to construct than palindromes, because you have to combine the letters and then try to split them up again.

[Comments] (1) Awesome Josh: I never told you this (and apparently I forgot to tell Josh too). Back when I posted about opportunities in book-writing, Josh Myer took up the project I had announced. Recently he thanked me for the tip by paying me an "agent fee": a copy of Rules of Play, a book on game design. Awesome.

Also, hilarity occured in conjunction with the book delivery. It was delivered over Thanksgiving weekend, when we were all at the zoo with Riana. Now, Riana used to date Josh, so when I opened up the package and read the note inside her gast was flabbered. "You got a present from my ex?" she said. "He never sends me presents!" Man, you can't buy that kind of hilarity. At least not since my hilarity store went out of business.

Missing the Point: In Lego catalog: "Build your own custom model just like this one!"

[Comments] (3) Retief: To what extent do you think Keith Laumer's Retief stories are good clean biting social satire, and to what extent are they reactionary claptrap? The question comes to my mind as I prepare to save space by parting with my nearly-complete Retief collection. Also because there's a new, post-Laumer book in the franchise called Retief's Peace, which looks a little closer to the reactionary side. I still plan to read it eventually, despite Sumana's continuing amazement that I can stand to read Retief stories at all.

Meaningless Milestones: The Ruby Cookbook has over 200 recipes completed.

NYCB is eight years old!

: Today we visited Rachel and Jeremy and I tried my Christmas pudding out on them. They loved it, to the extent that they are going to deal out the rest of it at a Christmas dinner tomorrow. So I think my second pudding (yes! I made a SECOND PUDDING) will be well-recieved in Bakersfield.

Funny story: I also brought hard sauce for the pudding. Rachel put the sauce in the freezer during dinner, under the theory that hard sauce should be hard. As far as I know this is the only confusing food name for which the French are entirely blameless.

Useful tip: to make hard sauce, simply start making cookies and then don't finish.

[Comments] (2) : Having fun in Bakersfield where it is incredibly warm. The pudding did not go over as well with my family as I'd hoped; oh well. It was received okay.

Susanna and I have gradually taken over all the work that my mother used to do: filling stockings, cooking dinner, etc. The cooking is exhausting but the stocking-filling is really fun.

[Comments] (1) Apples to Apples Variant: This variant was discovered at a CollabNet retreat in 2004, but I remembered it last night and we played it. The variant is that you can't draw new cards until your entire hand is used up. As the game goes on, you have to get more and more imaginative about your cards' connections to the adjective cards, and it gets funnier and funnier.

You can also use this to wind down a standard game of Apples to Apples.

[Comments] (2) Apartment Criteria: Unless you live in NYC this is a boring entry. In fact, I find it a boring entry, but that might be because we haven't moved yet. In order to move we need to find an apartment, which means I must inflict upon you our list of criteria. Please send me mail if you know of an apartment that satisfies the following fitness function. We have other types of search going on in parallel with this one.

Apartment criteria listed in descending order of importance:
 Under $1800/mo
 2 bedrooms
 Brooklyn (Park Slope? Sunset Park?) or Astoria in Queens
 <= 5 minute walk from subway, 10 minute walk maximum
 <= 3 blocks to full service grocery store
 Low crime neighborhood
 Washer/dryer in building
 Low street noise at night, preferably during day also
 Big kitchen
 Well-lit by natural light
 Part of house rather than apartment building
 Gas range rather than electric
 <= 10 minute walk to restaurant clusters
 Known responsive landlord
 Little or no vermin problem
 On first floor of building

Things that are okay:
 1 bathroom
 Small apartment building (< 6 units)

: I just realized that How the Grinch Stole Christmas has basically the same plot as the book of Job.

: For probably the third time in my life, my dreams were accompanied by music that turned out, when I woke up, to be memorable and pretty good. This time it was a Sheryl Crow-type song which, though no Jake Berendes West Covina, was not bad at all. In retrospect, I think the song was about the singer's status as a character in my dream. I think that's a good meme-propagation technique if you're a singer-songwriter trying to make it big in my dreams.

Eventually I'll have enough remembered dream-songs that I can do a real analysis of the musical style and see how it differs from my normal style.

[Comments] (3) The Violence-Screen's All-Time Rocker-Shocker!: That's the heavily-hyphenated tagline for The Big Sleep, which we borrowed from Andrew and watched in our ongoing orgy of pre-move borrowed media consumption. I didn't even know there was such a thing as a "violence-screen", but they had all sorts of weird movie gimmicks back then.

We put the DVD in upside down and ended up watching the unreleased 1945 version of the movie, which included long dialogueless scenes which were presumably the ones not written by William Faulkner. Most memorable is the text adventure-like scene where Humphrey Bogart is snooping around a house, finds some keys, unlocks a desk with one of the keys, finds a box in one of the drawers of the desk, takes it out of the desk, unlocks the box with another one of the keys, and takes out a book of ciphers. Next scene: he's in his office trying to solve the ciphers! What's next, the Towers of Hanoi?

Afterwards we found out that we'd seen the 'wrong' version of the movie so we flipped the disc and saw some of the scenes that were added before the movie's 1946 release. They were better than the cut text adventure scene, but not by much since their only purpose was to save Lauren Bacall's career with crude sexual innuendo. (I am not making this up; that's more or less the reason given by the UCLA film professor who guided us through the 1946 scenes on one of the bonus features.)

There's a lot of stuff that happens in this movie, and Sumana kept getting tired so we had to take it in shifts. It was worth it, though. Strong characterization, great cinematography, nicely confusing plot. It also has good Marxesque comedy bits, like one where Lauren Bacall's need to call the police loses out to her insatiable desire to participate in telephone comedy routines.

No NYCB discussion of this movie would be complete without a comparison to The Big Lebowski. IMDB trivia claims that the latter movie actually has more in common with The Long Goodbye, which I haven't seen. But there's nearly a complete mapping from the characters in The Big Sleep to characters in The Big Lebowski, and some of the themes are similar, so I think the relationship is like that between O Brother, Where Art Thou? and the Odyssey.

I think The Big Lebowski is a better movie than The Big Sleep; it's not as complicated, per se, but it's more complex. It has more interesting things in it. Sumana became agitated when I made this statement, so I'll qualify it by saying that my judgement might be different if I'd seen the 1946 version first. Incidentally, I recently saw a tremendously patronizing Big Lebowski "Achiever's Edition" boxed set for sale and was very glad that no one got me that for Christmas.

Bonus: The Big Sleep includes a hot bookstore clerk who takes off her glasses and lets down her hair and -- bam! -- she's milquetoast and not that hot after all! How do they do that? Why do they do that?

Welcome To The... Oh, Forget It: TrueCrypt could be the cross-platform disk encryption software you've been looking for. Via yoz.

[Comments] (2) : I was going through this big list of DVD nerds' favorite DVD releases of 2005 and I saw a really nice-looking Japanese film called University of Laughs. It's kind of similar to The Five Obstructions, except that the obstructions are imposed on a playwright by a WWII government censor. The playwright keeps rewriting his play to satisfy the censor, who ends up using his power as a collaborative tool.

That's a funnier premise than The Five Obstructions, so I have high hopes for this movie. Plus it's got a great "Japanese comedy troupe" name (which is, within the movie, actually the name of a Japanese comedy troupe). It looks like I'd have to go to one of those importer web sites to get it, though.

Also, Kevan may be interested in the French film Les revenants (English title "They Came Back", which doesn't seem to be any kind of translation), assuming he hasn't seen it already.

[Comments] (4) The Juicer Is For Making Juice: Every year John Allison has his cartoon character Shelley Winters review the albums of the year. Every year I'm reminded of how much Shelley reminds me of my sister Susanna.

I have an awesome Christmas present still to give Susanna. Also a juicer.

[Comments] (2) Contents May Transitize In Transit: A bunch of these secondhand boxes I got for moving are from Alcoa, and all over them is written talk about closures. "Improper handling may result in damage to closures", "Closure temperature should be no less than 65 degrees F", et cetera. I couldn't figure this out, since closures are abstract concepts which don't need to be put into boxes.

Then I noticed that the company name on the boxes was Alcoa Closure Systems, and it dawned on me that the boxes themselves were the closures. "Closure" is just a fancy word for "box". All the warnings are regarding the operational tolerances of the boxes, and the contents be damned.

Plasma Fractal: "I think we can safely say that recursive algorithms will never go out of style!"

Some Kind of Chaat: Another recipe from Sumana's mother. I asked her what it was called and she said "snack". Pretty generic name for something I can't find on Google. Anyway, here it is.

Fry this all together on low heat. Mix in:

Stir for a while, turning the rice over and over, until all the rice is crispy and turmeric-colored. Store at room temperature.

You can just grab a handful of this and eat it whenever.

Update: Shweta (who got married on Friday) says it's called bhal puri. Also, it's 2006!



Unless otherwise noted, all content licensed by Leonard Richardson
under a Creative Commons License.