“If this power could be used for good, it wouldn’t be this power.”

— Teresa Nielsen Hayden

Um, how was that again?


"...it offers a nonpartisan analysis of the PR-driven deception that has come to define George W. Bush's presidency..."

Yup, that’s how you describe your new book when you want people to believe it’s (cough) fair and balanced.

If it saves twenty-five lives? Or is it fifteen? Or maybe none?


Okay, this story claims, without providing any of the details, that “safe gun storage” laws cut the teen suicide rates since their adoption in 1989. That is, the news report claims this, while the research paper (published in JAMA) simply says they may have cut suicide rates.

But by how much? First, they mention 300 less suicides between 1989 and 2001 for the 14-17 age group, and then they segue into a discussion of the number of suicides in the 14-20 age group. Sloppy reading on the reporter’s part, or is this a reflection of the actual research? And where are the rates that are mentioned in the headline? All I see are raw numbers.

Looking for real data, I found that the with-gun suicide rate for teens age 14-19 (and for other groups) has been declining for a while, but it peaked in 1994, five years after the “safe storage” laws in question. Interestingly enough, suffocation seems to be taking up the slack, although it’s not enough to stop the overall decline. It is enough to possibly account for the “prevented” with-gun suicides…

Got sleeping pills? Need some?


The iTunes Music Store has put up free audiobooks of the DNC speeches. Knock yourself out.

No, really.

Why I prefer Perl to JavaScript, reason #3154


For amusement, I decided that my next Dashboard gadget should be a tool for looking up characters in KANJIDIC using Jack Halpern’s SKIP system.

SKIP is basically a hash-coding system for ideographs that doesn’t rely on extensive knowledge of how they’re constructed. Once you’ve figured out how to count strokes reliably, you simply break the character into two parts according to one of several patterns, and count the number of strokes in each part. It’s not quite that simple, but almost, and it’s a lot more novice-friendly than traditional lookup methods.

Downside? The simplicity of the system results in a large number of hash collisions (only 584 distinct SKIP codes for the 6,355 characters in KANJIDIC). In the print dictionaries the system was designed for, this is handled by grouping together entries that share the same first part. Conveniently, unicode sorting seems to produce much the same effect, although a program can’t identify the groups without additional information. A simple supplementary index can easily be constructed for the relatively few SKIP codes with an absurd collision count (1-3-8 is the biggest, at 161), so it’s feasible to create a DHTML form that lets you locate any unknown kanji by just selecting from a few pulldown menus.

For various reasons, it just wasn’t a good idea to attempt to parse KANJIDIC directly from JavaScript (among other things, everything is encoded in EUC-JP instead of UTF-8), so I quickly knocked together a Perl script that read the dictionary into a SKIP-indexed data structure, and wrote it back out as a JavaScript array initialization.

Which didn’t work the first time, because, unlike Perl, you can’t have trailing commas in array or object literals. That is, this is illegal:

var skipcode = [
  {
    s1:{
      s1:['儿','八',],
      s2:['小','巛','川',],
      s3:['心','水',],
      s4:['必','旧',],
      s7:['承',],
      s8:['胤',],
      s11:['順',],
    },
  },
];

Do you know how annoying it is to have to insert extra code for “add a comma unless you’re the last item at this level” when you’re pretty-printing a complex data structure? Yes, I’m sure there are all sorts of good reasons why you shouldn’t allow those commas to exist, but gosh-darnit, they’re convenient!

Smash fisks the Democrat platform


so you don’t have to. Great fun.

And, yes, I’m sure the Republican platform is at least as deserving, but this week it should be the Democrat’s turn, especially with the not-quite-front-page news about that suspected al-Qaeda operative sneaking into the US from Mexico.

Hey, didn’t Gray Davis, our man for giving driver’s licenses to illegal aliens, just speak at the Democratic convention?

Cup Noodle Curry: surprisingly tasty


Bought this stuff on a whim at Mitsuwa Marketplace, and it’s pretty good. 420 calories, for those who follow such things, and I’m sure it has enough sodium to choke a food-faddist, but it’s quite edible. Available online from Asian Munchies.

Cup Noodle Curry

Silly anime soundtrack feature


So I’m ripping the soundtrack album for Hand Maid May, and it’s got 62 tracks on it. Tracks 26 to 35 are short in-character messages by the lead voice actress, which isn’t unusual (I’ve been threatening for some time to put the answering-machine message from the Mahoromatic soundtrack on my voice mail), but tracks 36 to 60 consist of her speaking the complete set of Japanese phonemes, so you can create a “voice collage” that personalizes those messages. That’s new.

I was mostly just amused by it, and then I realized that I now had high-quality recordings of a native speaker pronouncing each phoneme, just the thing for language drills. Obviously I can’t distribute the results, and the truth is that I’m past the need for that particular drill, but I think I’ll build it anyway.

I will not, however, create a voice collage of May telling me goodnight…

Tough cops


Two police officers sent out to help stranded motorists deal with a flash flood were stuck by lightning. How did they respond? They got up off the ground and continued with the job, later driving themselves to a hospital to be checked out.

Tip for the day: never argue with a cop in eastern New Mexico.

“Need a clue, take a clue,
 got a clue, leave a clue”