July 2004

Saddam on trial


It occurs to me that Saddam Hussein can’t lose. Oh, he can lose the case, and maybe even his life, but in the Court of World Opinion, anything he says can and will be used against Bush.

Saddam says, “We had no WMDs,” and the press shouts “Bush lied!”

Saddam says, “Yes, we were continuing to develop WMDs to use and sell,” and the press orgasmically cries “Brainwashed by his American jailers!”

Okay, that’s the Western press; the Arab press is more likely to blame it on the Jews, Bush’s secret masters.

Michael Moore will blame it on the people who wrote critical reviews of his magnum opus, FearAndHate 911.

New toy: Motorola v600


Okay, I don’t really have much use for the camera side of my new cellphone; I’m a quality snob who thinks his 5 megapixel digicam is adequate for 4x6 snapshots and web galleries and nothing more, and I’m more interested in switching to larger film than to digital. Still, when you buy a new toy, in this case replacing my Ericsson T68 to get better reception and MP3 ringtones, you should at least try out the features.

How’s the camera? Functional for quick, on-the-spot documentation, but nothing more. For instance, when I was leaving the Reno Hilton (lame casino, skip the steakhouse, eat at Asiana) Wednesday morning, I spotted a big Harley parked on the sidewalk next to a large sign that boldly stated “No motorcycle parking on sidewalk.” That would have been worth a quick snap.

It takes 640x480 pictures, and claims to offer a 4x zoom. Zoom, my ass. This is pure marketing-speak. The viewfinder is what zooms; the resulting picture is either a 320x240 or 160x120 crop. Quality is nothing to write home about, but sufficient for amusement.

Other than that, the phone’s features are quite nice. It has the usual mix of vibrate, speakerphone, BlueTooth, GPRS, games, messaging, etc., and adds MP3 ringtones with quite reasonable fidelity. The reception is also living up to its promise so far, giving me a much stronger signal inside my house, where the Ericsson was prone to dropping calls unless I stood in the sweet spot facing the correct direction.

Motorola doesn’t support Macs for their phones, and Apple hasn’t added SyncML support to iSync, but they still work together over BlueTooth. You can copy phonebook entries, MP3s, and pictures back and forth, and with Ross Barkman’s modem scripts and configuration database, it was easy to set up GPRS and configure my PowerBook to use the phone for wireless Internet access.

And if you call me, everyone nearby will be blessed with the sound of The Carol of the Old Ones. I briefly considered the orgasm scene from When Harry Met Sally, a classic geek sound file, but I still remember what happened when we used it as the out-of-paper noise on our NeXT printer, and my boss tried to print a large document while carrying on a phone conversation with his very young daughter.

It’s easy to switch to a secondary ringtone, so I’m thinking the opening song from Hand Maid May would work nicely.

It's just so... French


This story leaves me gasping for breath:

Norwegian authorities have fined a French tour guide nearly $1,500 for shooting a curious polar bear in the foot.

Officials later had to kill the animal, part of a protected species, the newspaper Aftenposten said.

The drama took place last month when the tour guide and her group of six tourists were waiting for a boat to pick them up at Van Mijenfjord after a land excursion.

A male polar bear suddenly appeared and started roaming toward them. The guide urged her group to run toward a nearby wooden structure but the bear followed.

The guide feared she would not have time to reload after a warning shot, so she wounded the bear in the foot. He hobbled away. Officials said she should have used emergency flares or other devices available to her to scare off the bear.

She was fined $1,436.

I’m surprised she didn’t surrender. Okay, cheap shot. What I’m really surprised about is that the moron survived. Let’s have a pop quiz. You’ve just been confronted by a giant carnivore that does not appear actively hostile. Do you: A) kill the bear, B) back away slowly and calmly while preparing to kill the bear if it charges, C) fire a warning shot to scare the bear away, D) panic and run, E) shoot the bear in the foot, or F) both D and E.

Perhaps the most curious line from the story is this one: The guide feared she would not have time to reload after a warning shot. So, she either had the wrong weapon for bear country or simply wasn’t competent with the right one, and because of this, she chose to wound a goddamn polar bear. Forget fining the nitwit, just ship her to grizzly country and let Ma Nature finish her off.

What's Left if you're not all Right


Another attempt to define where people sit on the political spectrum. Some of the questions are written in a way that makes an honest answer impossible, and like a lot of broken surveys they don’t offer a “neutral” response, but the results are still amusing.

more...

KonfabuDashboard


After hearing all the whining about another example of how Apple is killing off third-party developers by “shamelessly copying Konfabulator” (which can fairly be described as Super Desk Accessory Toolkit, an update of the classic Mac OS utilities), I decided to take a look at this amazing product that I’d somehow overlooked.

Um, where’s the fire? I just went through the gallery of Konfabulator widgets, and far too many of them are like these two:

ugly clipboard manageryour IP address as a bar code

A small handful of them were useful, but while some of Apple’s sample gadgets from the Tiger beta are badly designed, at least they’re good for something. In fifteen minutes of browsing, I couldn’t find a single Konfabulator widget that was interesting enough to encourage me to buy and install their application. Indeed, the trite “get the original Dashboard now” page at their site showcases a bunch of gaudy widgets that I simply don’t want on my computer.

There’s a fugly clock that slavishly emulates a low-resolution, low-legibility digital clock; another one that slavishly emulates the limitations of an old analog wristwatch; a color-coded pseudo-3D to-do list that’s covered with redundant buttons; a Google searchbar that looks like it’s supposed to be inserted somewhere; and a user-hostile iTunes controller (okay, Apple screwed that one up, too). And how do you gain access to these screen toys? Through a pull-down menu, just like the old Apple desk accessories.

Designing your own means learning to use their XML layout schema. Designing a Dashboard gadget, on the other hand, is as easy as laying out a web page, because it is a web page, rendered with the same engine as Safari. In fact, you can create it with your favorite text editor and graphics program, leveraging your knowledge of HTML and CSS.

Lileks on f911


I’m not generally a Read The Whole Thing kind of guy, but go read the whole thing.

Lots of good points, but I think this is my favorite:

Wait until France gets a hard shot in the nose. Wait until France reacts with some nasty work. They’ll get a golf-clap from the chattering class over here and a you-go-girl from Red America. France could nuke an Algerian terrorist camp and the rest of the world would tut-tut for a day, then ask if the missiles France used were for sale. And of course the answer would be oui.

Apple's Dashboard: sample gadget


I’m not really a programmer; I’ve been a Perl hacker since ’88, though, after discovering v1.010 and asking Larry Wall where the rest of the patches were (his reply: “wait a week for 2.0”). If I’m anything, I’m a toolsmith; I mostly write small programs to solve specific problems, and usually avoid touching large projects unless they’re horribly broken in a way that affects me, and no one else can be persuaded to fix them on my schedule.

So what does this have to do with learning Japanese? Everything. I’m in the early stages of a self-study course (the well-regarded Rosetta Stone software; “ask me how to defeat their must-insert-CD-to-run copy-protection”), and authorities agree that you must learn to read using the two phonetic alphabets, Hiragana (ひらがな, used for native Japanese words) and Katakana (カタカナ, used for foreign words). A course that’s taught using Rōmaji (phonetic transcriptions using roman characters) gives you habits that will have no value in real life; Rōmaji is not used for much in Japan.

So how do you learn two complete sets of 46 symbols plus their variations and combinations, as well as their correct pronunciations? Flashcards!

The best software I’ve found for this is a Classic-only Mac application called Kana Lab (link goes direct to download), which has a lot of options for introducing the character sets, and includes recordings of a native speaker pronouncing each one. I’ve also stumbled across a number of Java and JavaScript kana flashcards, but the only one that stood out was LanguageBug, which works on Java cellphones (including my new Motorola v600).

When the misconceptions about Apple’s upcoming Dashboard feature in OS X 10.4 were cleared up (sorry, Konfabulator, it will kill your product not by being a clone, but simply by being better), I acquired a copy of the beta (why, yes, I am a paid-up member of the Apple Developer Connection) and took a look, with the goal of building a functional, flexible flashcard gadget.

Unfortunately, I’ve spent the past few years stubbornly refusing to learn JavaScript and how it’s used to manipulate HTML using the DOM, so I had to go through a little remedial course. I stopped at a Barnes & Noble on Sunday afternoon and picked up the O’Reilly JavaScript Pocket Reference and started hacking out a DHTML flashcard set, using Safari 1.2 under Panther as the platform.

Note: TextEdit and Safari do not a great DHTML IDE make. It worked, but it wasn’t fast or pretty, especially for someone who was new to JavaScript and still making stupid coding errors.

I got it working Tuesday morning, finished off the configuration form Wednesday afternoon, and squashed a few annoying bugs Wednesday night. Somewhere in there I went to work. If you’re running Safari, you can try it out here; I’ve made no attempt to cater to non-W3C DOM models, so it won’t work in Explorer or Mozilla.

There’s a lot more it could do, but right now you can select which character sets to compare, which subsets of them to include in the quiz, and you can make your guesses either by clicking with the mouse or pressing the 1-4 keys on the keyboard. I’ve deliberately kept the visual design simple, not just because I’m not a graphic designer, but also to show how Apple’s use of DHTML as the basis for gadgets makes it possible for any experienced web designer to come in and supply the chrome.

So what does it take to turn my little DHTML web page into a Dashboard gadget?

more...

Your brother is dead, but you're a moron


An Australian surfer died recently after being mauled by a shark. So what’s his brother’s reponse?

"I don't believe that the shark should be killed just for the sake of what's happened in this situation. I don't believe that Brad can be revenged by killing a shark."

Hate to break it to you, Steve, but the local authorities aren’t planning to kill it for “revenge.” They’re planning to kill it (if, and only if, they can conclusively identify the shark responsible) because carnivores that attack humans tend to repeat the act in the future, having discovered that humans are not only easy prey, but pretty darn tasty. Our place at the top of the food chain is not a result of animals recognizing our natural superiority; indeed, as ably chronicled in The Man-Eaters of Tsavo and other books, there are always a few predators who violently disagree with our position on that subject. I think that it’s in our best interests as a species to continue to press our claim.

I should note that the head curator at the Aquarium of Western Australia isn’t much brighter:

"If you hunt him, so what? A day later another one cannot come and kill someone else?"

Why I just deleted Konfabulator


It lasted about fifteen minutes on my laptop. Why? First, because the supplied widgets were primarily designed to be pretty. The weather and calendar widgets are translucent; you can’t make them not be translucent, even if you have wallpaper on your screen that makes them unreadable. The (thankfully not translucent) to-do list doesn’t allow you to edit in-place; anything you want to do with a to-do item involves popping up a bog-standard Mac dialog box and clicking “Okay”, which pretty much renders it useless as a “quick! write that down!” tool or organizing tool. Most of the other standard widgets are similarly long on chrome and short on function, to the point that I have trouble remembering them mere minutes after trying them out.

I was already underwhelmed by the contents of their user-submitted widget gallery, so I’m left with no possible reason to purchase this product, nor can I imagine it ever becoming a significant commercial success. This renders the whole “Apple stole our idea” and “Dashboard was designed to be a Konfabulator killer” claims completely moot. Konfabulator in its current form could never have made its way onto the desktops of a significant percentage of Mac users; it’s just not that interesting.

Will there be a lot of high-chrome, low-content Dashboard gadgets? Sure; as the man said, 90% of everything is crap. The difference is that you don’t need to learn a proprietary development environment to create gadgets for Dashboard. Hell, you don’t even need to learn JavaScript; Dashboard will cheerfully run Flash applications with a trivial DHTML wrapper. You can also embed Java applications, QuickTime videos, etc.

Konfabulator can’t do any of that.

If, for instance, I wanted to build a nice kana/kanji chart around this remarkable collection of QuickTime videos that demonstrate the correct stroke order for the entire hiragana and katakana syllabaries as well as all 1,945 Jōyō kanji, I could (and likely will, if only for my personal use), because a Dashboard gadget is just a web page, and web pages can have embedded QuickTime videos.

The closest thing they’ve got over in Konfab-land is the new Kanji-A-Day widget, which uses /usr/bin/curl to scrape a Japanese web site and import its content into a (cough) pretty window. Maybe that’s the one that will justify the $25 they want for the product…

Reason's "Ten Reasons To Fire George W. Bush"


Just for fun, and coming off of a weekend surrounded by true-red Lefties, I decided to see how Reason’s reasons affected my voting decision.

more...

Reporting with a straight face...


…here’s CNN:

Al Jazeera unveils code of ethics

CNN: all the news we like, we print


CNN has two stories today (here and here) on the Butler report of the investigation into British intelligence related to the war in Iraq. Neither story, not even the one headlined “Summary of conclusions,” includes any reference to yellowcake. Why not? Maybe it’s because the report said this:

We conclude that, on the basis of the intelligence assessments at the time, covering both Niger and the Democratic Republic of Congo, the statements on Iraqi attempts to buy uranium from Africa in the Government’s dossier, and by the Prime Minister in the House of Commons, were well-founded. By extension, we conclude also that the statement in President Bush’s State of the Union Address of 28 January 2003 that: "The British Government has learned that Saddam Hussein recently sought significant quantities of uranium from Africa." was well-founded.

But you can’t have people finding out that Bush’s famous “sixteen words” were true, or they might not vote for Kerry.

Keep your powder dry...


…and away from your ex-wife. 18 grains of Unique in a pistol cartridge; shiver.

The author also admits that he missed several clear warning signs that should have prevented the accident, even setting aside the mystery of how the wrong powder got into the clearly labeled container.

Elton John: censorship in the US is soooo much worse now than in the Sixties


Dear Elton, with reference to your recent statement that, unlike in the Sixties where people like Pete Seeger were out there speaking truth to power, entertainers today are “frightened by the administration’s bullying tactics,” I call to your attention the documentary Smothered — The Censorship Struggles of the Smothers Brothers Comedy Hour.

Note that unlike current entertainers such as Michael Moore, the producers of this enlightening film actually made an honest documentary.

By the way, where do you buy your drugs, or is this the result of giving them up?

"There was a moment about a year ago when you couldn't say a word about anything in this country for fear of your career being shot down by people saying you are un-American."

No wonder BabelFish has problems with Japanese...


I mentioned in a recent comment thread that I had developed some sympathy for BabelFish’s entertaining but mostly useless translations from Japanese to English.

It started with Mahoromatic, a manga and anime series that I’m generally quite fond of. The official web site for the anime includes a lot of merchandise, and I was interested in finding out more about some of the stuff that hasn’t been officially imported to the US market. So I asked BabelFish to translate the pages, expecting to be able to make at least a little sense of the results.

It was worse than I expected, and it took me a while to figure out why. At the time, the translation engine left intact everything it had been unable to convert to English, which gave me some important clues. It was also possible to paste Unicode text into the translation window and get direct translations, which helped me narrow down the problems. [Sadly, both of these features disappeared a few months ago, making BabelFish a lot less useful.]

The clues started with the name of the show and its main character, both of which are written in hiragana on the site. BabelFish reliably converted まほろまてぃっく (Mahoromatic) to “ま top wait the ぃっく” and まほろ (Mahoro) to “ま top”. The one that really got me, though, was the live concert DVD, whose title went from 「まほろまてぃっく らいぶ!&Music Clips」 to “ま top wait the ぃっく leprosy ぶ! & in the midst of Music Clips”.

With apologies to Vernor Vinge, it was a case of “leprosy as the key insight”. It was so absurd, so out of place, that it had to be important. Fortunately, the little kana “turds” that BabelFish left behind told me exactly which hiragana characters it had translated as leprosy: らい (rai).

But rai doesn’t mean leprosy. Raibyou (らいびょう or 癩病) does, but on its own, rai is one of “since”, “defeat”, or the English loanword “lie” (which should properly be written in katakana, as ライ). So where did it come from? Rai is the pronunciation of the kanji 癩, which means leprosy. Except that it doesn’t, quite.

Here’s where it gets complicated. Every kanji character has one or more meanings and pronunciations. Some came along for the ride when the character was borrowed from China (the ON-reading), others are native inventions (the KUN-reading), but neither is necessarily a Japanese word. There are plenty of words that consist of a single kanji, such as 犬 (inu, “dog”), but not all single kanji are words.

Our friend rai is one of the latter. It has only a single ON-reading, which means leprosy, but the Japanese word for leprosy is formed by appending another kanji, 病 (byou, “sick”). So while rai really does mean leprosy, it’s not the word for leprosy. BabelFish, convinced that anything written in hiragana must be a native Japanese word, is simply trying too hard.

So what was it supposed to be? That little leftover kana at the end (ぶ) was “bu”, making the complete word “raibu”. Say it out loud, remembering that the Japanese have trouble pronouncing “l” and “v”, and it becomes “live”. The correct translation of the title should be “Mahoromatic Live! & Music Clips”; neither of the words in hiragana should be translated, because they’re not Japanese words.

In fairness to BabelFish, the folks responsible for Mahoromatic have played a dirty trick on it. It’s actually a pretty good rule of thumb that something written in hiragana is Japanese and something written in katakana is not, and, sure enough, if you feed in ライブ instead of らいぶ, it will correctly come back as “live”.

I fell for this, too, when I tried to figure out the full title of the Mahoromatic adventure game 「まほろまてぃっく☆あどべんちゃ」. The part after the star (adobencha) is written in hiragana, so I tried to interpret it as Japanese. I knew I’d gotten it wrong when I came up with “conveniently leftover tea”, but I didn’t realize I’d been BabelFished until I said it out loud.

Isn’t Japanese fun? My latest surprise came when my Rosetta Stone self-study course threw up the word ビーだま (biidama, “marble” (the toy kind)). I thought it was a typo at first, this word that was half-katakana, half-hiragana, but switching the software over to the full kanji mode converted it to ビー玉, and, sure enough, that’s what it looked like in my dictionary.

A little digging with JEdict provided the answer. Back in the days when the Portuguese started trading with Japan, their word vidro (“windowpane”) was adopted as the generic word for glass, becoming biidoro (ビードロ). The native word for sphere is dama (だま or 玉). Mash them together, and you’ve got a “glass sphere”, or a marble. Don’t go looking for other words based on biidoro, though, because it fell out of fashion a few centuries back; modern loanwords are based on garasu.

Life with the Motorola V600


I like my new cellphone. The reception is much better than my old one, the MP3 ringtones are cool, and the built-in camera is… okay, the camera is pretty lame.

My biggest annoyance? Several times now, when setting a ringtone or alarm sound, I’ve paused on an entry in the list, and the phone starts playing it, and won’t stop until it’s finished! When this happens with a four-minute-long MP3 file, it’s a real pain in the ass. Even turning the phone off won’t work, because the music player refuses to shut down when the rest of the phone does, continuing until its buffer is flushed, which takes a while.

Not so bad when it’s, say, Cantina Band or The Shoggoth Song, but quite disturbing when it’s the orgasm scene from When Harry Met Sally.

I bet she voted for Gore


"She said someone should shoot you for defending the officer and lying to the public [and] that I should be hanging from a tree"

What was this caller angry about? The fact that agents of the Florida Fish and Wildlife Conservation Commission shot and killed a runaway tiger. Apparently, she’s not the only Gore fan in the area, as the agency has received at least five death threats for their actions.

Because, as we all know, tigers are our friends, and want nothing more than peaceful coexistence with their human neighbors. Really, they’re just overgrown kittycats who would never dream of harming a human being. Just ask Roy.

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.

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…

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

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?

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!

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