<M <Y
Y> M>

Willpower Outage: This evening I worked on a little side project, the aim of which was to get me started writing unit tests. Things went pretty well until I reached the point where it was almost screenshot-worthy, then I threw my unit tests to the winds and started fixing things and adding tiny featurelets so I could show you something before I go to sleep. Here you go. I call it the Eater of Meaning.

: Karl Fogel on the Concorde retirement:

I was disappointed, because even though British and French taxpayers will no longer bleed billions of dollars per year, the rest of us lost a great shorthand for fallacious investments :).

: After much additional work, The Eater of Meaning is up. Enjoy its sudsy head, fine oak bouquet, and backbiting aftertaste.

Don't Start Collecting Things:

Usability Fun: (Oddly enough, not, I think, from Todd) A Heuristic Evaluation of the Usability of Infants, and some usability quotes. Includes a summary of what might be the fundamental problem of design: "We have our mouths full of users."

: Attention Tonight's Episode fans: Monday kicks off Tonight's Episode Sweeps Week, five days of sensationalist TEs designed to boost flagging ratings, courtesy of Jason Robbins. Jason also sent me an email titled "off the hook for spam":

Today I got the following spam:

Subject: Unless you have a PhD, READ THIS E-MAIL h zt b

Oh Kay.

Antislavery Song Misses The Point:

John Brown's body lies a-moulderin' in the grave
John Brown's body lies a-moulderin' in the grave
John Brown's body lies a-moulderin' in the grave
A-moulderin' in the grave

Chorus:

Moulderin', moulderin', moulderin' moulderin'
Moulderin', moulderin', moulderin' moulderin'
(etc.)

The Roundup of Eater of Meaning: Kevan and Seth enjoy EoM, and now it's even better. I implemented Kevan's suggestion for an Eater that changes a word to a different word that starts with the same three letters; this makes the text look less purely random and look more like something out of a dream. "I've done it for years with song lyrics, in my head," says Kevan (I quote that herebecause I need to reference it in a future NYCB entry no another topic). Seth just says, "The Eater of Meaning is _so_ great!"

TEoM reminds me of the Troll Book Club order forms I got once a month or so in grade school. My friends and I had great fun erasing or crossing out letters to turn "time" into "tie", etc. and making hash out of the descriptions of Caldecott winners. There is no EoM mode to do this, but I might write one and recapture those halcyon days.

They Have Blogs: He's a Python programmer. She's... also a Python programmer. They have blogs! Also available as one huge barely-differentiated group weblog.

(PS: format taken from They Have Blogs, a web toy of about a year ago).

But It's Transgressive! Yeah, Transgressive.: Rob Walker on Carrot Top:

Perhaps the real message of his work, then, is a critique that makes a mockery not just of the entertainment industry, but of the very notion of meritocracy in America—his success being the most damning evidence to date that the marketplace of talent is a sham.

Another Day, Another Eater of Meaning: 1.2 is up, thanks to some help from Todd and some good old-fashioned elbowgrase (sryy for typos, mt elbowf are slipoery),. It now correctly handles previously troublesome sites like oblomovka.com, zeldman.com, sites with meta redirects, sites with self-closing tags, sites with frames, etc. etc. There's also a new eater which turns a page into lorem ipsum. (Obligatory "meta overload" link)

Crud, it just got linked on MetaFilter. I was going to talk about unit tests but I should work on a cache instead.

Update: OK, much better.

PS: the name "Eater of Meaning" comes from a song I wrote called "Eaters of Meaning". I've had that song stuck in my head for the past 3 days.

The Unit Price: So, with that spot of unpleasantness out of the way, we're free to talk about the really exciting thing: unit tests! I wrote the Eater because I like writing that sort of thing, but also to get into the habit of writing unit tests. Here are my observations on the process:

Before you write code, you're supposed to write unit tests. It turns out I can bring myself to do this most of the time, but I do it grudgingly because I don't like writing the infrastructure for a new type of test. The way I generally do it is to write the tests but leave the expected value for the assertions blank (unless the expected value is really easy to figure out, or is actually defined and not just the result of applying some transform to some data I just made up). Then I write the code and all the assertions fail. I use the code I wrote to figure out what the asserted values should be, fixing bugs as I do, and paste in the final, correct values for later use.

Where unit tests are really great is when you find a bug in your code. If you've put in the work to write that infrastructure for that sort of bug, it's easy to record your finding of the bug in a way that will automatically notify you if it ever shows up again. This is lesson one: unit tests give you a place to codify the results of the debugging process. By putting in some incremental effort you can ensure that you're notified should the bug you're fixing ever recur. Usually it doesn't recur, but your real worry is not the bug recurring; it's the bug recurring without your knowledge. With unit tests, you know.

Sometimes when I refactor code I worry that some portion of the code I never exercise has broken due to refactoring. This is the worst thing about Python: unless you're using Leo (which I'm still not, despite my earlier touting of it), when you refactor the code the indentation changes, and when that happens you have to redo the indentation because the automatic indenter never works right, and all sorts of problems can crop up.[0] Unit tests find the problems, and if there are any you fix them and that's that. Lesson two: with unit tests, instead of worrying about code you broke while refactoring, your mind is free to worry about less rational things, like bloodthirsty packs of feral hamsters roaming the streets.

I have unit tests for all my Eaters, and some decent coverage for the HTML parser, but nothing yet for the user interface (even though I wrote the user interface to be drivable from Python code) or the thing that grabs URLs. This is because of lesson three: the closer a piece of code is to an actual user, a piece of hardware, or data from the outside world, the more aggravating it is to write unit tests for it. I am convinced this demonstrates a close affinity between unit tests and Lisp.

The big wrapper lesson is that unit tests are a way of creating a grammar with which to describe the behavior of the system so that you can offload to the computer the task of checking that behavior. Unit tests are easier to write when the elements of the grammar have simple APIs that you control, and harder to write when the elements are complex things with outside dependencies, like URLs and mouse movements. Even if you only write unit tests for the simple stuff, it means your agonizing over the more complicated stuff will be untroubled by the suspicion that the problem is something lower-level and simple (of course, then it turns out to actually be something lower-level and simple, and the code says "Gotcha!" like Lucky Ducky and struts off, but I can't help you there).

[0] Eventually I'm going to write my own autoindenting Emacs hook which operates on the very simple principle of moving the cursor line to where autoindent takes it, then moving every child line left or right the same number of spaces. I don't know why other indenters have these fancy algorithms that don't work, when that algorithm works fine. With my algorithm you have to go down arbitrarily many lines before moving the first line, to see how many lines are underneath the first one, then go back up to the top and go through all those lines again, but on the plus side it actually works.

Divide And Cucumber: For those bored to tears by my previous entry, I present Square Foot Gardening! (Gather 'round as I actually remember where I got a link; I got it indirectly from Unqualified Offerings, which also has a good original poem today). It's like regular gardening, except you recursively divide your garden into a myriad of tiny square plots and plant one thing in each plot. You can stagger your planting by time so that you have four fresh potatoes every week. You can weed one square at a time and keep a running total of your average time per square and estimated time to completion, thus distracting you from the dull monotony of weeding. Many leading scienticians believe that if you didn't have a lot of squares, you could weed one square every day and actually turn weeding into some sort of semi-pleasant ritual.

I sent the link to my mother and asked if the Square Foot Gardening guru was for real or some sort of gardening crackpot. She said "His book and methods are the ones I go by. Have for years." That settles it--he's a crackpot! When I was a kid I was always having to dig plots in my mother's garden or weed or rototill, or mow the lawn or wash the windows or some such thing. This fellow's claims of an end to workaday drudgery and washday blues are clearly nothing but hogwash oil!

Actually, I am (mostly) kidding. My mother doesn't do the grids but she does plant in wooden boxes, which now that I think about it makes things a lot more manageable than just planting things willy-nilly or in enormous garden-spanning rows. I think that if she planted grids it would become proportionately easier to manage. And it would look a lot cooler (but the boxes would be harder to move).

: A glowing review of the Eater over at Maccessibility.

┏━━━☎━┓: A few years ago I developed an interest in Unicode, and went over to unicode.org to see what I could see in the way of actual Unicode characters. I couldn't see very much, and I assumed they were trying to get you to buy the Unicode book I've never encountered anywhere. Since then applications that support Unicode have actually started existing, and unicode.org has bowed to the collective will of snoopy people like myself and put up little graphical Unicode character charts in PDF form. There's also a character name index, allowing you to answer burning questions like "Are there Unicode characters corresponding to the phases of the moon?" (Answer: yes, but only first and last quarter. I guess for a half moon you'd use one of the half-filled circles from Geometric Shapes ◖ ◗, and for a full moon the white circle from same ○, or a happy face ☺).

Of course, time has once again left unicode.org in the dust, as there are now websites that show you Unicode characters in your web browser. Take heart, though: I don't yet have a font for Byzantine Musical Symbols, so for that it's gotta be the PDF.

Cornbread!: It's well known that cornbread is the greatest thing ever. But exactly what makes it so great has eluded mankind for ages. Now, I believe I have the answer: it's corn, but it's also bread. I'm not sure why this trivial answer has eluded mankind for ages, but that's mankind for you.

: More Salam Pax. "Some idiots started firing their Kalashnikovs and guns and made my paranoid aunt totally believe that the American troops are in the street."

Tonight's Episodes: Tonight's Enterprise should have been called "Continuity Must Die!". And West Wing I didn't care about much. There's only so many times they can play the "this time, it's one of their own" card before it gets old. It's always one of their own. I wouldn't be one of their own if you paid me.

: From Russia, that land of enchantmentinfringement, comes Screenplays For You, a site with... a bunch of movie screenplays. No longer need you do a Google search on a remembered phrase to find a copy of a screenplay. Includes "From Dusk Til Down" [imdb: typo], and a new Charlie Kaufman project called Eternal Sunshine of the Spotless Mind, which sounds like the title of a North Korean propaganda flick.

Update: Josh sent me a screenplay site in the good old U.S. of A.

One Last Thing Before I Quit: The Eater is at 1.3. Includes caching; better knowledge about what should be proxied; and three new eaters, including the obsessive-compulsive sort-the-letters-in-each-word eater, and a spooky new get-rid-of-all-content eater. I think I'm done with this for a while.

: Bizarre new jellyfish discovered. I actually got a preview of this jellyfish back in 2000; the professor of my Oceans class must have known the research team, because we got to watch a spooky, gruesome video in which a ROV was approached by an enormous jellyfish and ended up slicing off one of its arms into a sample tank. ("But the biologists... have collected tissue samples of the bell and the thick arms of one specimen.")

Hey, Future Leonard: Need to retroactively change a CVS commit message? Take a tip from Dan Rall:

cvs admin -m "#.##:`cat /path/to/new/commit/message`" path/to/affected/file

Where #.## is the version number for the file.

If you need to retroactively change a CVS commit message for a commit that affected more than one file, you are doomed to repeat that action for every file. A little utility script would be useful here.

That Explains It: Kevin got spam that said:

Did you know the Government gives away money for almost any reason?

: Broke my internal promise and worked more on the Eater tonight; I wrote an extension to the WordReplacingEater that lets you copy the content from one URL into the layout of another URL, but I don't think it's good enough to put up yet, and I need to make some dinner.

: Many years ago, I drew a calculus comic called The Adventures Of e. The derivative of The Adventures Of e is surely The Trouble With Otis, an algebra comic. Like The Adventures Of e, The Trouble With Otis has a not-as-funny sequel. Only now do I realize that the world of these comics is strangely roguelike, with characters and symbols moving around and talking.

Ehxcellent: The ten minutes I spent tweaking the Eater's definition of "word" so that the NTK line art would show up correctly, has paid off.

In Russian Federation, The North Pole Assesses Your Mineral Reserves!: Some Russian scientists are working on a floating polar station called North Pole-32 (the previous 31 were built during the Soviet era, and must have been where scientists were sent if they kept making trouble even in Siberia). The floating is not being done by some fancy tricked-out icebreaker ship or something; the camp is set up on an old-fashioned ice floe.

The best part, in that "'the best part' that's not actually the best part" sort of way, is that the expedition leader is named Artur Chilingarov, and his penchant for firing his pistol into the air could signal his future metamorphosis into a Bond villain. Unfortunately, his goal is insufficiently sinister:

"Let people dream not only of being managers, let's have as many people as possible becoming polar explorers," he said.

PS: for the "triumph of capitalism" file: not only has Pravda found its true calling as a Sun-type tabloid, but it now has a Cafepress store.

PPS: bonus links I was unable to fit in here anywhere: Polar Philately, a collection of postmarks from the north and south poles; and The Antarctican, a newsletter from Antarctica.

The Poisoned Feed: I buckled to popular demand (well, demand from Aaron SwatchSwartz, who's pretty popular), and created an RSS feed for Tonight's Episode.

: Kevin and I are on call all of today for an upgrade, so I'm going to his house and we're going to have an on call party. At any moment, we could be called upon to eat food or whoop it up.

Photo Gallery Program Roundup: Photo gallery generation programs are one of those classes of application where it's easier to write your own that does what you want than to use anyone else's, or at least that's what you think before you start writing your own. However, I am making a good faith effort to resist this impulse, so I've been looking at photo gallery generation programs written by others. I do this because I'm getting tired of the drab Apache directory lists that currently adorn my picture galleries, and I'd like something nicer-looking, with thumbnails.

Earlier, I mentioned that a program called Curator was the best of the lot, but after I wrote that the pangs of conscience began to eat at me. Had I really evaluated every damn image gallery program that fit my arbitrary requirements? Hadn't I just looked through Freshmeat and picked the first one that looked good? And what of Marsha? Will she love again? Etc.

So you know where I'm coming from, I will reprise my award-losing technique for reducing a cluttered field of programs to a manageable number, and present the criteria by which I decided which programs to even look at. I like image galleries with the following properties:

None of the programs I've reviewed do exactly what I want them to do, and in the rough-and-tumble world of photo album generators the approved way of doing configuration is to hack the generator. This brings up an interesting point about reviewing such software: it what point does it become fair for me to complain about the lack of a feature, when I could just add the feature? Obviously there's some cutoff point, or I would dump plaudits upon an empty file. I have chosen to review the default behavior, and talk about how easy it seems to make the program do what I want.

To complete this review I need your help. You, the NYCB reader, are also the consumer of my photo albums (there's also the people who come in through Google image search, but they're only going to look at one picture, which Google already found for them, so I don't need to make things easy for them). So let me know what you want my image galleries to look like.

  • curator is the defending champion. It's easy to hack and the galleries use CSS, have navigation, and look nice. It has per-image pages, but they look pretty good, and have navigation with cool thumbnails of the previous and next pictures.

    Curator has a comment file, in the form of a per-file attribute file. You can group files from different directories and it will generate an album for each group. I don't think I have the patience required to exercise that feature (all pictures of Rachel? All pictures of me making a stupid face? All pictures of dinosaurs?)

    Curator also has some completely ridiculous features, like two global indexes, available from every page, containing a thumbnail of every single picture on my site! That's pretty near 2000 pictures, daylight savings.

    Summary: Curator's navigation and presentation is great, but it's difficult for me to add a caption to a picture, which is a feature I think I'd use if I had it.

  • MT2 has the clever idea that a large photo album should be spread out over multiple Web pages. It's plugin-based for easier hacking. There are plugins that links directly to pictures and has no navigation, and a plugin that links to per-picture pages and has a "back" link.

    It's got a simple per-directory caption file, and also a per-directory group file that's easy to use and lets you override the regular ordering of pictures (which I currently control by putting numeric prefixes on the filenames).

    MT2 has a thumbnailless view, which I don't think I need. The only navigation was the ability to go down the hierarchy or to go one step up. I didn't like any of the default plugins, although dropshadow was okay. plainhtml was way too plain and ate up vertical space like nobody's business. brushedmetal was just tacky. I would go with something like dropshadow.

    The major things I'd like that I'm not sure I can implement in MT2 are navigation: full access to the hierarchy from every page, and (unless I link directly to images) being able to move from one image to the next or previous image. The per-directory comments file is great.

  • YAG is very bare-bones. It assumes that you only have one directory full of images, so it's got no navigation at all in its galleries. It generates a page for each image, and it has themes with a templating system. It doesn't have any way of captioning images.
  • Photoshrink also assumes that every image gallery is an island. It does image pages and has a per-image captioning file. It's themable with plugin Python classes. It's also got a mod_python interface that lets you generate pages from the web. Here's a site running Photoshrink.
  • Pyrite Template is a little templating system which has a bloxsom-type blog mode and a photo album mode. The photo album mode makes an album out of the pictures you specify on the command line, so there's no inter-album navigation going on there. There's also no intra-album navigation on the image pages, unless you use the frame-based index generator, which might actually be a good idea. Its themes are done with plugin Python classes and HTML/YAPTU templates. I had to hack Pyrite Template a fair bit to get it to work.
  • Apache::Gallery is written in Perl. but Pete Peterson II specifically told me to take a look at it. [UPDATE: He actually told me to take a look at a completely different program called Gallery. See correction.] I haven't actually installed it because I'm getting tired of doing this roundup and I don't want to have to figure out mod_perl right now when I can just go to Pete's installation and make comments based on what I see there.

    Apache::Gallery actually constructs the galleries dynamically, rather than generating HTML ahead of time. It lets you nest albums, so I assume it would accept my chronological nesting of albums. It has a mess of tiny NewsBruiser-esque templates in a templates/ directory, which are given life by some sinister force deep within the handler() subroutine. You can give a caption to an image or album, and random users can also submit their wiseacre comments to images. The navigation is good.

    As far as I know, of all the reviewed image gallery generators, only Apache::Gallery currently hosts a picture of Seth, but I have the power to change that. Will I use it responsibly, or plunge the world into chaos? I haven't decided yet.

  • Leonard's Advice/Food Column:

    Dear Leonard,

    I really like shredded coconut, but I feel strange eating it. It's as though it's fish-flake food for humans and there are powerful aliens sitting on their perches in another dimension watching me eat it. Can you help?

    Signed,
    Observed in Omaha

    Dear Observed:

    The aliens will lose interest if you stop eating the shredded coconut in big handfuls directly from the bag, and include it as an ingredient in food where they can't see it. Try my

    Chocolate Pudding a la Way Too Much Shredded Coconut

    Prepare the pudding as per the instructions on the box, but use less milk than it calls for. Instead of remaining milk, substitute coconut. Chill and serve. Serves n.

    It's Payback Time!: TEoM was linked to by a lot of weblogs. Here are some of the ones I liked, with links to the cool stuff I found via them that made me like them.

    : Let's talk about Mr. T. Better yet, let's just link to one of the many Paint Shop Pro-created skits starring Mr. T. In this episode, Mr. T discusses the ins and outs of weather forecasting. "We let computers hack at this stuff," says Mr. T, and you believe him. Britney's Guide to Semiconductor Physics just wishes it had these production values!

    : From The Volokh Conspiracy I found out that Salman Rushdie is probably the best-known author to have dabbled in Star Trek fan fiction.

    : Here's a great article on the implementation of VisiCalc (the first spreadsheet), article written by Bob Frankston, one of the original authors of VisiCalc. This article reveals all: as inevitably happens, they shipped the prototype.

    The other primary author of Visicalc, Dan Bricklin, has on his website a wealth of VisiCalc reference material, including a less technical history with photos, all with a really cool navigation system that makes it feel like the future. Dan has his own weblog, and he and Bob collaborate with some other folks on the popular SATN.org weblog, where they talk about telecommunications, copyright, and other curmudgeonly topics.

    [Note: this entry inaugurates "Heroes of the Elder Age", the new series of Crummy trading cards and weblog entries (trading cards not available). HotEA honors the authors of cool old pieces of software and does a sort of "where are they now" showcasing of their current web sites. There was a previous entry in this series, on Jeff Lee, one of the authors of Q*Bert, but the series hadn't been titled yet, so it doesn't count as inaugural.]

    : Everyone is linking to A Review of Contemporary Science Fiction (and for good reason), but I found another good, longer-term overview called A History of the History of the Future (my overview of modern science fiction, soon due out in paperback, will be called "A Retroactive History of the History of the Future: A Retrospective"). Includes the obvious-in-hindsight observation:

    This may be due to the collapse of Communism in the real world: hive minds can now be considered more objectively, rather than as crude political symbols.

    It's true; I always thought of hive minds as swarming embodiments of "Much like in your Earth Soviet Russia" didacticism, but that was all in the old stuff: starting with the Borg, that didn't really make sense.

    : Unused angle on a story about New Hampshire's Old Man of the Mountain (R.I.P.): what if the other state quarter symbols start disappearing under mysterious circumstances? How will humankind react to the news that we're living in a bizarre, geological-scale Agatha Christie novel? Keep a close eye on the Delaware river, the Charter Oak, the Maryland statehouse, the Statue of Liberty, the Wright Brothers' plane in the Air and Space museum, the Pell Bridge, Camel's Hump Mountain, Federal Hill, the entire Louisiana Purchase and city of Chicago, Pemaquid Point Light (be vigilant, Mike), and the Gateway Arch. Coming soon: my overactive imagination has to worry about still more things, including the possibility that the sun itself might vanish.

    Department Of Corrections Department: I got a bunch of emails saying that zork.net and tastytronic net have photo albums run by Gallery, not Apache:Gallery . So I reviewed a completely different program with almost exactly the same name! Gallery is written in PHP, which brings up the old chestnut: "Against which programming language is Leonard more prejudiced: PHP or Perl?" It's a tough call, but I think I'll have to go with Perl. So, Gallery: it's written in PHP, but at least it's not written in Perl! Actual, trying-not-to-be-biased review of Gallery coming eventually.

    Look On My Quarters, Ye Mighty, And Despair: Pete Peterson II writes:

    Leonard, I think you've stumbled onto something diabolical... the Charter Oak fell in a storm and died...

    ... in 1856.

    I think you might be on to something.

    We're doomed.

    : If it's enormous word lists you crave, try YAWL, a word list about 5 times the size of the one that comes with Red Hat. YAWL comes with Scrabble cheating help anagram and multi-word anagram finder multi, which according to the README "can provide some cheap thrills when a party gets dull." Maybe you should just adjourn the party early.

    More similar word lists at wordlist.sourceforge.net, including a list with part-of-speech data which made me waste time this evening writing an eater that replaces a word with another word of the same part of speech. It's not up yet because I'm not yet sure how good it is.

    The Cautious Mad Scientist: Fifth In A Series:

    "PERHAPS DESTROYING THEM ALL WOULD BE PREMATURE!"

    : I like this sort of thing: Walking directions to Mordor. (from cl)

    Woohoo! La Deuxieme Partie: I'm going to give my configuration framework talk at EuroPython! It's in Charleroi, Belgium, and it looks like the easiest way to get there is to fly into Brussels and take the train. Charleroi is in the south of Belgium, so I should brush up my French (call me provincial, but I'm not going to learn DutchFlemish for a one-week trip to the part of Belgium where they don't speak DutchFlemish). What's the best way to regain lost fluency in a language?

    Here There Be Spoilers: Read from Quicksilver, if you dare. (I don't.)

    Get A Life!: An international team of losers has wasted countless man-hours drafting imaginary maps for a made-up planet. Thousands of population centers and geographical features have been named; elaborate cultures and complex political boundary rules devised; and no place on the planet has been neglected, from the polar regions to enormous cities right down to tiny islands ("BAY OF WRECKS (very dangerous)"). Ancient maps have been forged, as have all sorts of thematic and demographic maps. I don't know why I keep making stuff up the way I do. What I should have said is that there are lots of great maps of Earth at UT Austin's Perry-Castañeda collection.

    : Eating at "Fondue Fred" in Berkeley, with Sumana, Adam, and friends. The fondue is pretty good. Above Fondue Fred in this little shopping center is a little cafe that has hung up a New Zealand flag and serves Kiwi Pub Pies (today's special: curried vegetable). There are antique electric mixers all over the cafe; Joe, are there mixers in New Zealand pubs or is this a quirk of the cafe owner?

    Photo Wire Roundup: (Haven't had one of these for a while)

    WE 0WNZ J00CHE: Connect the dots:

    1. 20030512: N. Korea claims new drink for techies
    2. 20030516: N. Korea training hackers, Seoul says

    : Because today is apparently North Korea day here at NYCB, let me share an observation I made during my recent map obsession, on a nice map site I found via m14m. Among many other interesting maps, the Library of Congress has a very detailed 1969 map of the Korean DMZ and surrounding environment. It turns out there's a city called P'yonggang just on the north side of the DMZ, which makes me think it's some kind of decoy city.

    "Success! We've taken the capital!"

    "Wait, let me see that map. We went northeast? This is P'yonggang!"

    Fortunately, it turns out countermeasures have been in place for years.

    : I had a blast at Seth's party. Among other things, I got one of the new BBCs (check out the new BBC logo!), and I met Riana. Riana, Seth, and I told lots of pirate jokes. Here are three of Seth's:

    Q: Where do they keep the pirate Constitution?
    A: In the National Arrrrchives.
    Q: How do they protect the pirate Constitution from deterioration?
    A: Arrrrgon.
    Q: What's a pirate's favorite web portal?
    A: Yoho!.

    And two of mine:

    Q: What was an evolutionary precursor to the modern pirate?
    A: yo-ho-homo erectus.
    Q: What is a pirate's favorite physical constant?
    A: Plank's Constant.

    (Apparently I can't remember any of Riana's pirate jokes.)

    Also, when I came in, Zack mistook me for Cory Doctorow. Cory did not show up, leaving the nagging question in the back of my mind: could I have succesfully impersonated Cory Doctorow for the duration of the party? Maybe there's a story on the possibility.

    I showed Seth and Nick Moffitt my new game, and they laughed uproariously. Hopefully I'll finish the game tomorrow, and then you too can laugh uproariously or not get it.

    Thou art arrogant, mortal!: A million years ago, I made an offhand comment about the theology of Nethack. The thing I was thinking of was the weird conception Nethack has of atheism, which it doesn't distinguish from theism that doesn't want any divine intervention. But another part of it is a gameplay problem common to adventure games: your character has a powerful backer who has a lot invested in your success, yet who sometimes acts against that interest in the name of a less compelling interest, like greed or aggravation.

    The stereotypical example of this is the shopkeeper who wrings his hands and says "You must save Freedonia!" and then tries to nickel-and-dime you on the beef jerky you're trying to buy so you can freaking save Freedonia! I've often felt Nethack deities were acting the same way: look, do you want me to get the Amulet of Yendor or not? Then give me a hand, stop me from turning to stone!

    That's why I wrote this songgame: What Fools These Mortals. It lets you simulate being the deity in a game of Nethack. The unexpected thing was, while writing the game, I actually figured out why the Nethack gods are so capricious: it's a lot more fun to smite the player than to help them out, and they're probably just going to die anyway, so why not? This also explains the attitude of the shopkeeper: he's seen heroes come and go, and if he gave beef jerky discounts to everyone he'd go out of business (I don't know why the shopkeeper's financial affairs are persistent across games, when nothing else is, but maybe not all the heroes are you).

    Anyway, try out the game; it's got some fun stuff. The code is a mess, but it should be easy to hack if you're so inclined.

    : Belated catchy yet inexplicably unusable alternate title for What Fools These Mortals: "God Mode".

    Non-Meme Watch: "you found * way to go *"

    Speaking Of Memes: Leonard's Law Of Meetings: "An employee is a meeting's way of making more meetings."

    : A little while back I set up a CVS repository on the machine that hosts Crummy. Today I spent some time importing stuff and setting up ViewCVS, and the result is Leonard's Repository Of Fun. There's also anonymous CVS access; directions are on the RoF page. So far I've put up codebases for the following programs:

    More coming soon (don't worry, I won't list here every single one I add). I put some work into importing old backup codebases I had for my IF games, so if you're interested you can poke around in the history and find old design docs, like the stream-of-consciousness trancript which was the first thing I ever wrote for Guess The Verb!.

    Also, please let me know if I've made some horrible CVS-hosting mistake.

    : First, let me shill again for pyblagg, which helps me find so much cool stuff that I don't even care that I'm hopelessly behind on Software Roundup. First, a 1998 paper called on reuse called The Selfish Class, which tickles my buttons (the low-key version of "pushes my buttons"). I'm not sure how much of it is an eloquent statement of things I already knew and how much of it is actual new ideas that just sound very familiar; it seems each section starts with the latter and concludes with the former.

    Then there's the awesome ezPyCrypto, a GPLed (so beware)library which makes it incredibly easy to do crypto in Python. Encrypt everything, just because you can! Encrypt your own source code in some sort of obfuscation/trusted computing thing! Encrypt the very name of your program! Encrypt your cat!

    World Famous Seth David Schoen: Seth will be on The Linux Show!! tonight. Don't forget, that's The Linux Show!!. You can get The Linux Show!! in RealAudio or streaming OGG format. I won't be listening to Seth on The Linux Show!! live, because I'll be having dinner with Sumana to celebrate her new job (Hooray![!]).

    Slogans For The '90s [sic]: Live Fresh Or Die

    Story Won't Die, Sources Say: Nathaniel sent me a link to The curse of the quarter. Things were going so well, until The curse of the quarter. Questionable bonus: it's no longer an unused angle.

    : Topher Tune's Times linked to some mighty trick photography (the mightiest and trickiest is the second photo).

    Sparkling Water Symposium: Kevin got me started on drinking sparkling water. I don't know why I do this. I think sparkling water tastes awful, yet I'm drinking it. I asked Kevin, why does he drink this water that tastes so awful. Kevin said, "It's an adult beverage." Adult beverage, my eye. That's just a code phrase for "it tastes awful". What is the actual appeal of sparkling water?

    Update: Sumana's suggestions, in helpful outline form:

    1. You know that it has been through a factory at some point, and that it is not plain tap.
      1. prestige
      2. safety, quality of water (my hypothesis on why Russians want their bottled water carbonated)
    2. Costs more (prestige).
    3. Flavors. Like an Italian soda without the calories.
    4. More "festive" so teetotalers can fit in at a party.

    Update #2: A. Cairns writes on the topic "Why I drink sparkling water":

    It's like drinking deadly, alkaline poison -- without all the messy dying!

    It calms my fears of mortality.

    : Sumana pointed out that there is such a thing as a Ninja Camera Mount. Let's pretend it's not what it is, and explore some alternative possibilities.

    1. Kick-spinning tripod of death
    2. Technology enabling "Post-Feudal Ninja Industrialists" to be the first movie filmed in NINJA-VISION!
    3. Neighbor to the Temple Mount

    From Mars With Love: Mark Welch announced the First Picture of Earth from Mars. Take that, Mars!, uh, Earth!, wait, who is the scapegoat here? (cf.)

    Very Special Episode: A guy installed NewsBruiser and had all kinds of problems setting it up on his machine. I kept answering his questions and feeling bad, but in his most recent email he says "BTW, for what I am doing I still like NB the best," and it was the best Christmas ever.

    Question: I thought the term for a modifying filter (a filter which may remove data from a stream, like a regular filter, but may also pass data through in modified form) was "milter", but it looks like that is only used for a modifying filter whose job it is to modify or block email messages. What's the generic term for a modifying filter as opposed to a straining one? I need this for NewsBruiser.

    : So, I added a rudimentary plugin system to NewsBruiser. The minimal example plugin is a Gary-esque thing that automatically links any bare URLs you type (I can't demonstrate because I don't have it turned on here, but it turns http://www.crummy.com/ into http://www.crummy.com/). More plugin madness is surely on the way, including the migration of existing NewsBruiser features into plugins.

    Broken Pirate Joke:

    Q: How much does pirate corn cost?
    A: A buck an arrr!

    Economic Conundrums: If there were a company called "Moral Hazard, Inc.", what would it do?

    What would the game "Monopsony" be like?

    : This is more a VH1 Behind the Music type thing than a proper HotEA entry, but this history of the Commander Keen series of games is very comprehensive, and has lots of quotes and reminiscences by the authors.

    Mother Of All Software Roundups: This is going to be a huge roundup. Beware! I'm not even all the way caught up on the links I've been keeping, but I'm going to hang out with Sumana in a bit. Also a big Game Roundup following close on this entry's heels.

    Special Emacs Insert

    Hey there, Emacs fans. Here are some Emacs packages and resources.

    And now back to our show.

    Special Meta Insert

    Today we have two applications which put a thing in another thing of the same type. These were the days of the Special Meta Insert, when nested things ran arbitrarily free. Come back with us now to that lawless time--hey, my Palm Pilot!

    And now back to our show again.

    Game Roundup Is A Powerful Deceiver:

    Leonard, What Is The Best Pasta In The World?: The best pasta in the world is cavatappi (Italian for "corkscrew", apparently). It has a great texture that holds sauce well, and unlike some pastas it has its own taste, slightly nutty, so it's not just a vehicle for sauce. It also looks cool.

    The second best pasta in the world might be ziti, but I'm not sure.

    X-Men Question: I don't know anything about the X-Men or comics in general, so I want to know from you how the X-Men feel about people, like polydactyls or albinos, who are mutants but whose mutations don't confer upon them any special abilities. Do they "count" as mutants? Are they despised? Protected? Not worth caring about? How do normal humans in the X-Men universe feel about them? Is the whole idea unexplored territory because it's too boring to make it into a comic book?

    What Is A Wolphin?: Is it some sort of furry thing? No, it's a whale/dolphin hybrid. "Such a hybrid is impossible!", you might be tempted to say; well, Kekaimalu is here to demonstrate your incorrectness!

    PS: Danny speaks the truth.

    Sumana - protocol heb ei gofrestru: Mozilla messages, localized to Welsh. From Sumana.

    Aiee!: Nick Moffitt writes:

    You obviously didn't grow up in the Pacific NorthWest. A killer whale is not a whale. It is actually the largest member of the dolphin family. I still maintain that there is no such thing as a whale/dolphin hybrid, and challenge you to prove me wrong.

    Lousy killer whales! I knew there was a reason why I didn't like them! They're actually dolphins in disguise!

    Wolphin Of Shame: From Brendan:

    The father of Kekaimalu, the wholphin, is NOT a killer whale (orcinus orca), he's a FALSE killer whale (pseudorca crassidens)! That doesn't actually make a difference, since they're both dolphins, but I thought I'd chip in.

    I saw this but originally thought a false killer whale was some weird type of whale I'd never heard of. But of course it's not any kind of whale at all. Now I'm on a dolphin witch hunt! Belugas, narwhals, pilot whales--they all look like dolphins! I have in my hand a list of 200 dolphins working for the State Department!

    I thought the whole thing was a hoax at first anyway-- that top picture looks suspiciously like the back dolphin image with the false killer whale's skin photoshopped on.

    Seems pretty unlikely that someone would make a hoax about a dolphin interbreeding with another dolphin. I find it believable, given the liger (which I know exists).

    Equal Time: Actually, here at Be we love dolphins. Here are some positive portrayals of dolphins in the media.

    There's also Waters thick with ravenous fish, which is non-dolphin-safe, but I like the headline.

    Monstah!: Check out the incredible two-headed tortoise (picture #2).

    Figure 1: Relative Coolness Of Two-Headed Things
    ThingCoolness
    Ettin
     
    Pushmi-pullyu
     
    Two-headed snake
     
    Two-headed tortoise
     

    (Inevitable reader response:)

    Dear Sir,

    It seems clear you've never spent any time in South Africa. The Wellington Garden Weasel, it is true, bears a strong resemblance to a two-headed tortoise. However, the secondary "head" is merely the weasel's fifth leg, which can be shed like a lizard's tail in a bid to escape from predators. The similarity between the weasel and many famous tortoises has led some zoologists to compromise by placing it with lampreys in the family Petromyzontidae.

    Hoping this finds you,
    Yours etc.,
    Brigadier General Macro Kowalski, O.B.E. (Ret.)

    Love The Domain Name, Dahling: foolofatook.com

    : Working on a thing. It's sort of cool, but not a very original idea. Should go to sleep.

    <M <Y
    Y> M>

    [Main]

    Unless otherwise noted, all content licensed by Leonard Richardson
    under a Creative Commons License.