Thu May 01 2003 23:03 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.
Fri May 02 2003 10:58:
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 :).
Sat May 03 2003 01:46:
After much additional work, The Eater of Meaning is up. Enjoy its sudsy head, fine oak bouquet, and backbiting aftertaste.
Sat May 03 2003 11:25 Don't Start Collecting Things:
- Pictures of random old goods from the 1950s, to be auctioned.
- Covers of records of the cast-off sort I used to buy and keep around despite not having a record player.
- Bad covers of old comic books. Awful cover aside, "Chaplains At War" could be interesting; sort of a "Praise the Lord and Pass the Ammunition" thing. Probably wishful thinking. There's also the greatest comic book covers of all time, but who wants to read about the good and the beautiful? (link from Todd)
Sat May 03 2003 14:17 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."
Sun May 04 2003 10:31:
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.
Sun May 04 2003 12:46 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.)
Sun May 04 2003 14:48 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.
Mon May 05 2003 10:13 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).
Mon May 05 2003 14:58 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.
Mon May 05 2003 21:41 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.
Mon May 05 2003 15:33 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.
Tue May 06 2003 00:09 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).
Tue May 06 2003 13:21:
A glowing review of the Eater over at Maccessibility.
Tue May 06 2003 21:06 ┏━━━☎━┓:
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.
Wed May 07 2003 08:59 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.
Wed May 07 2003 09:53:
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."
Wed May 07 2003 23:04 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.
Wed May 07 2003 23:11:
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.
Wed May 07 2003 23:18 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.
Thu May 08 2003 09:43:
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.")
Thu May 08 2003 11:13 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.
Thu May 08 2003 16:17 That Explains It:
Kevin got spam that said:
Did you know the Government gives away money for almost any reason?
Thu May 08 2003 21:36:
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.
Thu May 08 2003 22:10:
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.
Fri May 09 2003 10:16 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.
Fri May 09 2003 12:09 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.
Fri May 09 2003 18:05 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.
Sat May 10 2003 10:43:
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.
Sun May 11 2003 19:37 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:
- They were generated by an easy-to-hack Python script, probably using some sort of templating language.
- They generate static HTML or run in some sort of non-CGI container so that CGIs aren't being run all the time when they don't have to be.
- If they generate static HTML, they link directly to images, not to an HTML file containing the image.
- They keep a sense of history. I order my galleries by year and then by date within the year, and sometimes within a big event like a vacation I split things up by day or theme, so I like a NewsBruiser-style access to the directory tree.
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.
Mon May 12 2003 08:58 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
- 1 box instant chocolate pudding
- 1 3/4 cups milk
- 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.
Mon May 12 2003 19:17 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.
- Angels from Another Pin linked to a great site about medieval writing. Includes explanations of what the ancients thought they were doing when they went through all that trouble to put into manuscripts stuff that now seems like fancy superfluous junk. I'm talking to you, illumination!
- Stormcaller.net has occasional roundups in categories "Science/Tech", "Geek", and "Stuff", which is partly stuff you've seen on BoingBoing, and partly stuff that could go on BoingBoing but hasn't. Highlights include a one-man cruise missile project, a UK-based site for less destructive tech status symbols, and the awesome, already-linked-everywhere to-scale renditions of fictional spaceships (the cool thing is not just that they're to scale but that they're all drawn in the same sort of semitechnical style, so you could see them all engaged in one enormous, canon-shattering space battle).
- relicious linked to Blogmatcher, which is like an automatic version of The Blog Twinning Project which uses some weird algorithm to decide that your weblog is like other weblogs that link to the same thing. (Incidentally, TBTP now pairs Crummy with The Cynic's Tea Party) I think that Blogmatcher should not consider my links to things which are themselves weblogs, but other than that it's useful (but doomed to be assimilated into Technorati and forgotten about).
Also from relicious I found an archive of Transformers. I'm not some kind of Transformers freak or anything, but I enjoyed the prototypes and the Transformers Knock-Offs page. The latter does not cover entire lines of Transformers knockoffs like the Gobots; it details actual copies of actual Transformers with pathetic filed-off serial numbers of names ("Ancient Animal?" Give me a break!). It also reminds me how pointless a lot of the later Transformers were. How was a Transformer that turned into a dinosaur supposed to fool anyone? "Oh, it's just an ordinary titanium Triceratops, nothing to worry--GAAH! IT TURNED INTO A ROBOT WITH A GUN!"
- I don't think 101-280 actually linked to TEoM, but they get an honorable mention for being named after the freeway junction I traverse every weekday going to work and back.
Mon May 12 2003 19:37:
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!
Mon May 12 2003 19:41:
From
The Volokh Conspiracy I found out that Salman Rushdie is probably the best-known author to have dabbled in Star Trek fan fiction.
Mon May 12 2003 21:30:
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.]
Mon May 12 2003 22:08:
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.
Mon May 12 2003 22:40:
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.
Mon May 12 2003 22:59 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.
Tue May 13 2003 12:24 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.
Tue May 13 2003 19:19:
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.
Tue May 13 2003 20:36 The Cautious Mad Scientist: Fifth In A Series:
"PERHAPS DESTROYING THEM ALL WOULD BE PREMATURE!"
Wed May 14 2003 12:44 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?
Wed May 14 2003 17:17 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.
Thu May 15 2003 21:33:
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?
Fri May 16 2003 13:03 Photo Wire Roundup:
(Haven't had one of these for a while)
Fri May 16 2003 23:04:
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.
Sat May 17 2003 23:33:
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.
Sun May 18 2003 19:45 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.
Mon May 19 2003 12:40:
Belated catchy yet inexplicably unusable alternate title for What Fools These Mortals: "God Mode".
Mon May 19 2003 18:45 Speaking Of Memes:
Leonard's Law Of Meetings: "An employee is a meeting's way of making more meetings."
Mon May 19 2003 20:57:
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.
Mon May 19 2003 22:05:
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!
Tue May 20 2003 15:32 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![!]).
Tue May 20 2003 21:18 Slogans For The '90s [sic]:
Live Fresh Or Die
Wed May 21 2003 14:10 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.
Wed May 21 2003 21:56:
Topher Tune's Times linked to some mighty trick photography (the mightiest and trickiest is the second photo).
Thu May 22 2003 11:00 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:
- You know that it has been through a factory at some point, and that it is not plain tap.
- prestige
- safety, quality of water (my hypothesis on why Russians want
their bottled water carbonated)
- Costs more (prestige).
- Flavors. Like an Italian soda without the calories.
- 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.
Fri May 23 2003 13:55:
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.
- Kick-spinning tripod of death
- Technology enabling "Post-Feudal Ninja Industrialists" to be the first movie filmed in NINJA-VISION!
- Neighbor to the Temple Mount
Fri May 23 2003 15:40 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.)
Fri May 23 2003 15:53 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.
Fri May 23 2003 23:10 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.
Sat May 24 2003 00:14:
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.
Sat May 24 2003 21:10 Broken Pirate Joke:
Q: How much does pirate corn cost?
A: A buck an arrr!
Sun May 25 2003 18:49 Economic Conundrums:
If there were a company called "Moral Hazard, Inc.", what would it do?
What would the game "Monopsony" be like?
Mon May 26 2003 14:13:
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.
Mon May 26 2003 16:29 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.
- BashDB is a debugger for the Bash shell.
- The Apache DoS Evasive Maneuvers Module has a cool Star Trek-ish name and also throttles requests that look to be part of a DoS attack. That same page has a Baysean anti-spam filter for download (what doesn't, these days?).
- ht://Check is a link checker that exposes its data store as a database so that you can do crazy things like make a list of all the links on your entire site. Inexplicably, its logo is Tux the penguin wearing a Harpo Marx wig. LinkChecker is a link checker written in Python which can output to SQL, so it sort of has the same functionality. I don't know which is better because my link checker steel cage is in the shop. Time for another patented Leonard's Prejudices Smackdown! I don't like Harpo much, so I say Python beats C++, and the title goes to LinkChecker.
- DBMonster puts loads of random data in a database for stress testing purposes. Rawr!
- I don't know why I didn't mention Spyce in my Python Template System Roundup; I knew about it, and it seems to work on Python 1.5 and it has a BSD-compatible license. It does templates with real embedded Python, and it has a cute logo.
- WebTK lets you pretend that a web interface is just a GUI interface with a very limited widget set and incredibly slow response time. Pretty cool.
- mod_design is a simple templating system in an Apache module.
- maxq is a really cool tool for doing functional testing of Web applications. A Tigris project.
Special Emacs Insert
Hey there, Emacs fans. Here are some Emacs packages and resources.
- When geek buzzwords collide, you get Emacs Wiki. Also check out EmacsWiki.org for an actual Emacs Wiki with lots of resources.
- EMacro provides a wealth of helpful Emacs macros. So does tiny-tools.
And now back to our show.
- I love maps! And Jim Richardson (no relation) has written a program that interfaces with the US Census' TIGER map server.
- FindBugs is like PyChecker (Google: "Did you mean paycheck?") for Java. Includes academic paper! Academic paper includes funny Shakesperean-sounding section title "Wait Not In Loop", and gossipy footnote "Sun's Hotspot Server VM really does perform this transformation."; also introduced me to the phrase "bug patterns".
- dbtoyfs lets you mount a relational database as a filesystem and browse its data in XML format.
- The Zero Install System, starring Zero Mostel. It's like Java WebStart, but it's not Java-specific. The FAQ sounds like the author is pretty pissed-off at people who won't recognize that TZIS just automates what people do with software anyway.
- cvsdelta provides a number of useful summarizing and project manipulation tools for CVS, tools which should be in CVS in the first place.
- My live-and-let-live philosophy prevents me from making snarky blanket statements like "'Biological applications' and 'PHP' are not phrases I'd ever anticipated encountering in the same sentence." but I'm going to sort of gesture meaningfully and reproachfully towards BioPHP. I must admit that their biology class diagram is awesome, though.
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!
- Do you crave the great taste of a window manager, in a regular X application? Try framer.
- Old Segfault stories come to life with the JarJar Classloader. It lets you include a prepackaged JAR file (like a library) in your application's JAR file, so you can just distribute one file.
And now back to our show again.
- WebLog is a Python library for parsing webserver logfiles. It's like the Perl script I hacked up a long time ago, but understandable.
- Beanshell is a scripting interface to Java objects, like Jython without the Python syntax. (Found via Kalyp, which will soon be reviewed in a Game Roundup).
- I love it! The Java Curses Library gives you a way to write text-based windowed applications in Java. (Also found via Kalyp).
- BFilter is a web proxy that gets rid of popup and banner ads. "But Mozilla already does that!", you say. True, but does Mozilla get rid of web bugs that you can't see? "Probably," you say, "since such web bugs are liable to be served from a server that also serves banner ads, which are blocked." But does Mozilla get rid of Flash ads? "It effectively does," you say, "if you install the Null Flash Plugin." But what if there were a server which served both banner ads, which you wanted to block, and non-banner graphics which you wanted to see? Mozilla's ad blocker would block all those graphics. "That seems pretty unlikely," you say, but your will is wavering. "Anyway, a proxy is easier to hack to do other things than Mozilla would be," I say. "Checkmate!" You see, we were playing chess the whole time! Each of your responses corresponded to a chess move, but you had no knowledge of this, which allowed me to beat you! I hate playing dirty with the narrative like this, but you see, I'm not terribly good at chess.
- Codestriker is a CGI for doing collaborative code review. It basically lets you annotate proposed and actual diffs. I deem Codestriker the champion of this Software Roundup, and as per newly initialized tradition I will write a poem about it.
"That patch is no good, you old bore!"
--Thus I kick off another flame war.
Codestriker allows
Me to comment and browse
But your code is as bad as before.
Mon May 26 2003 16:33 Game Roundup Is A Powerful Deceiver:
- Wolf Pacman is the Pacman clone that makes you realize that Pacman is just a Rocks 'n' Diamonds-like game. It does this by removing features that distinguish Pacman from Rocks 'n' Diamonds, like compact boards and enemies that chase you. One new feature in this game is that you can't stop. I can't stop! You bounce off walls like a Breakout ball. I'm pretty sure this is intentional. In the default theme, you are Tux the penguin, and the ghosts are little bitmaps of Bill Gates from xbill. (Incidentally, did you know there is a new xbill? Me neither. It still uses the Athena widget set, which was always my favorite thing about it.)
- Molecule Man is a maze game in which your character moves way too slow, but the graphics are great, quirky and cartoonish. Plus, the documentation is hilarious. "The multi-perspective 3d maze is hiding the very life pills that can bring you salvation... In this cruel world extra time can be bought - with cash!" You need to download some weird Borland developer libraries to run it, which control the frame of the game but not much about the actual game, such that the toolbar be all walkin' down the street like "La di da, I'm Windows XP", whereas the game window itself be all walkin' down the street like "I be kickin' it with the EGA old school," and what's up with that? Tip your waitresses!
- Speaking of isometric views, Pyplace is an isometrics library for use with pygame. It makes me want to write a game in which overbearingly superior beings of pure light visit old Roman ruins and dispense hokey cosmic wisdom despite there being no one there. I'm not sure how the gameplay would go.
- Speaking of pygame, pygsear has some very simple pygame games and demos to use as starting points.
- Stop me before I segue again! Stone's Throw is an Arkanoid clone in Java. "Why write yet another Arkanoid clone?", asks the author. This one has a physics engine that models the universe in which you and I live. But where's the escapism if the game is just like reality? Already as it is I throw a ball at disappearing bricks all day!
- Any Door Is Closed simulates the game you always wanted to play as a kid, where you divided people into two teams and you tried to lock each other into the rooms of an enormous house. This never worked in real life because there weren't enough kids, there weren't enough rooms in the house, the rooms weren't interconnected enough, the doors were openable from the inside, or there were present pesky grownups or safety inspectors who prohibited you from playing. ADIC gets rid of all of these problems.
- Onyx Ring has a good general-purpose Inform library (a supplement to the standard library) and an Inform guide. From Onyx Ring I also found Platypus, a replacement for the Inform standard library.
- SCAM is a sprite collision library. It's been discontinued, but the webpage is worth a visit due to the author's great design sensibilities; check out the logo, and the "happy face insanity" benchmark screenshot.
- In the misty shadowlands on the edge of the space of all games, lives the space of all puzzles. Now, Raymond Hettinger Productions brings you a puzzle-solving framework so generic they said it could not accurately represent puzzle state! But it can! Get it now! Includes representations of "boring jug filling puzzle" and "boring rowboat puzzle". A great example of my philosophy that computers should automate tasks humans (ie. me) find boring.
- Feuerkraft could be the top-view drive-around-in-a-tank-and-blow-things-up game you've been waiting for. "You can only drive
around in this demo and destroy a few buildings," says the README, but what else would you want to do? Perhaps if there were some way of destroying vehicles as well, such as other tanks, or airplanes on an airstrip. Or if it used XML somehow. Yes, yes, XML.
- Kalyp is a Roguelike written in Java. In this game, "[G]enerated items can be cursed" (be still, my heart!), but the great thing is that it's the first Roguelike I know about that has unit tests!
- Vertigo is a great Java applet game where you, a blob, inhabit a void full of blue tiles which you must paint purple as stars whiz past you like in Star Trek: The Motion Screensaver. The slightest false move, and you plummet into the void. Includes two-player deathmatch mode. Includes single-player deathmatch mode, in fact. Great gameplay, great mix of puzzle solving and reflex action, greatest bottomless pits in the history of gaming. I can't say enough good about this game, and it wins the coveted Palm d'Rassemblement De Jeu for this episode of Game Roundup. It also gets a poem (I honestly don't know if I'm going to keep doing this, but it's a good gimmick.):
An reddish and amorphous blob
Had the world's most dangerous job
"Meet our tile-painting needs
At superluminous speeds?
You're hired, reddish amorphous blob!"
Tue May 27 2003 10:39 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.
Tue May 27 2003 13:24 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?
Tue May 27 2003 22:56 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!
Wed May 28 2003 20:26 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!
Thu May 29 2003 08:07 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).
Thu May 29 2003 08:27 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.
Fri May 30 2003 16:24 Monstah!:
Check out the incredible two-headed tortoise (picture #2).
Figure 1: Relative Coolness Of Two-Headed Things
Thing | Coolness |
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.)
Sat May 31 2003 23:56:
Working on a thing. It's sort of cool, but not a very original idea. Should go to sleep.
[Main]  | Unless otherwise noted, all content licensed by Leonard Richardson under a Creative Commons License. |