November 2006

iTunes in Japanese, you say?

But Brian, isn’t it always?

iTunes in Japanese

Oh, you meant the online store. Apparently it’s sending people all over the world today, and not just those who took the 7.0.2 update. I’d guess that their region-guessing heuristic goes by netblocks, and the database got corrupted somehow.

[I was tempted to title this entry 「また会う日まで」, in response to Brian’s Mr. Roboto quote, but it doesn’t really work, even though it’s the refrain in one of the songs pictured]

I admire their review system

Pete linked to this Aya Matsuura fansite in my comments. It’s nicely laid out, and seems to cover her career quite comprehensively. My favorite part is the DVD review section, which includes a 評価グラフ that rates each release by:

  • あやや度 - how much Aya?
  • ウキウキ度 - how cheerful is it?
  • ニヤニヤ度 - are there lots of smiles?
  • 泣ける度 - how sad is it?
  • 芸術度 - how artistic is it?

Being a purely subjective scale, many of them go beyond 100%. This one’s Ayaya-do is off the charts. I can’t imagine why…


Needs more sprinkle…

They’re off to a nice start, but I think some more of these slogans would be improved by replacing words with “sprinkle”.


This seems like a nice tool for syntax-coloring code. I rarely feel the need for this feature myself, but it’s nice when it works, and this one works a lot better than BBedit’s, although it shares a less-extreme version of the coloring bug I found when I was testing TextWrangler.

I don’t have nice things to say about the download/install process and documentation, though; it looks like the Python community is trying to come up with something similar to CPAN, but it doesn’t seem to be ready for general release yet.

I have dreaded the coming of this day…

No, not the Democrats briefly acquiring power in Congress. Something serious: a lightbulb burned out in my foyer. 25 feet above ground.

I own one of those telescoping lightbulb-changing poles, but I’ve never had much confidence in its ability to grab onto the bulb firmly, and I really don’t feel like cleaning up broken glass, so I guess it’s time to drag the big ladder inside and climb up there. I think I’ll change both bulbs while I’m up there, since the other one is sure to go soon.

Spam-guarding email addresses

I’ve been playing with jQuery recently. The major project I’m just about ready to roll out is a significant improvement to my pop-up furigana-izer. If native tooltips actually worked reliably in browsers, it would be fine, but they don’t, so I spent a day sorting out all of the issues, and while I was at it, I also added optional kana-to-romaji conversion.

I’ll probably roll that out this weekend, updating a bunch of my old Japanese entries to use it, but while I was finishing it up I had another idea: effective spam-protection for email addresses on my comment pages. The idea is simple. Replace all links that look like this: email with something like this: email, and use jQuery to reassemble the real address from a hash table when the page is loaded, inserting it into the HREF attribute.

A full working example looks like this:


Microsoft Streets & Trips 2007, with GPS

I picked up a copy of this a few days ago at the Microsoft company store ($65 for alumni, $99 at Amazon). I’ve enjoyed hating this software in the past, and I think I’ll enjoy hating this version as well.

The difference is that I’m hating it on my Mac with Parallels, and the USB GPS works fine.

What’s to hate? Pretty much their entire workflow. It’s capable of being used for in-car navigation on a laptop, with a full-screen mode and voice synthesis, but the designers have apparently never seen an in-car navigation system or hand-held GPS unit. I’m all in favor of having people park the car before fiddling with the routing system, but not for ten minutes at a time. I’m sure that eventually you can get good at quickly navigating the search and routing dialogs, but the workflow is built around creating a new document for each trip, and sharing “pushpins” between documents requires constant use of either import/export or “save as…”.

On the bright side, it only took me half an hour of googling to find the universal driver and Info.plist modifications required to get the GPS working as a native Mac serial device.

Dear anime producers, please license this

Wandering through Kinokuniya today, I saw something in the light novel section that stopped me in my tracks. Adjacent to the ten volumes of キノの旅 was 学園キノ:

Gakuen Kino

I found a blog with a larger photo. I couldn’t resist buying it, so I’ll see if I can get a decent shot of the interior color illustrations. For those fond of Kino’s Journey, I’ll mention that the first chapter is titled “Here comes KINO”, and the last is “Last Man Standing Got Milk”. Don’t ask me about the story; light novels usually have some furigana, but even for the kanji I know I have to look up a lot of words.

Apparently the author also has another series called アリソン, about a young woman with a Broomhandle Mauser and an early-20th-century fighter plane of some sort.

[Update: Just noticed the text on the little wrapper: この作品は「キノの旅」なんかじゃない。, roughly “this book is nothing like Kino’s Journey”]

Sony Reader: call me when it’s ready

I finally stopped in at a Sony store and checked out the Reader. The display is wonderful for reading (although I’d like to see kanji with furigana), the form factor is just right, and I estimate the battery would last through five complete novels worth of page-turning, but the control layout is clumsy, the UI is a mess, and it’s slooooooooow.

Waking it from sleep is quick, but obviously uses a trickle of power. A cold boot took nearly two minutes, and every UI operation takes nearly a second. Not just “navigate to sub-menu, redrawing entire screen”, but “move the pointer down from option 1 to option 2”. The real reason it has ten numbered buttons across the bottom of the screen is so you can avoid the ten second delay of moving the pointer from choice 1 to choice 10.

I love the screen, though. I didn’t have the patience to find out if you can shut off full justification for books, which looks awful in portrait mode, especially if you increase the font size. I also didn’t spend enough time with it to find out if you can reprogram one of those buttons to switch between portait and landscape modes; doing it through the menus involves six full-page redraws, so it’s not something you want to do often. And, of course, there’s no support for searching, which makes it useless for any kind of reference material.

In a few years, these things should be incredible, and worthwhile at twice the price. Today, not so much. Some of the limitations are technical (I suspect that moving the navigation pointer requires a full redraw), but the controls and UI are Sony’s fault.

On second thought, forget Sony. “Dear Apple…”


The names given to Japanese bands are often peculiar. The folks at Hello!Project have a good track record in this regard, with their 2005 “shuffle” projects having the names セクシーオトナジャン, エレジーズ, and プリプリピンク.

Despite the use of katakana in the names, only one of these is a true loanword, “Elegies”. The other two translate to, respectively, “Sexy Grownups?” and either “Angry Pink” or “Stinky Pink”. They may not be angry, and they probably smell nice, but they’re definitely pink.

But that’s not the puripuri I’m writing about today. I tripped across a completely different use of the word this morning at Kinokuniya. PuriPuri – The Premature Priest:

PuriPuri: The Premature Priest

Five volumes (so far!) of Catholic-school fan service. I don’t see a catgirl, but there’s a meganekko witch on the cover of volume two, and volume three apparently features The Three MusketeersLust-a-teers.

The artist’s official web site includes this nice sample from the volume three cover.

Truth in advertising

Spotted this at Border’s today. I like products that match their descriptions…

Lighted Magnifier

The name is effective, though. When I pointed it out to Jeff so he could laugh at it too, the woman in line behind him asked to see it, and ended up buying one.

It’s probably nice, but I think the Zelco Lumifier is better for carrying around. It’s my furigana tool.

Reading for comprehension

It’s not a bad collection of sci-fi babes, but I’m not the only one who choked on this line about Heinlein’s Starship Troopers:

One of the main plot points of Heinlein’s original novel was that all the experienced officers were killed off, leaving only the kids in charge.

What are they teaching kids in school these days?

JMdict + XML::Twig + DBD::SQLite = ?

In theory, I’m still working at Digeo. In practice, not so much. As we wind our way closer to the layoff date, I have less and less actual work to do, and more and more “anticipating the future failures of our replacements”. On the bright side, I’ve had a lot of time to study Japanese and prepare for Level 3 of the JLPT, which is next weekend.

I’m easily sidetracked, though, and the latest side project is importing the freely-distributed JMdict/EDICT and KANJIDIC dictionaries into a database and wrapping it with Perl, so that I can more easily incorporate them into my PDF-generating scripts.

Unfortunately, all of the tree-based XML parsing libraries for Perl create massive memory structures (I killed the script after it got past a gig), and the stream-based ones don’t make a lot of sense to me. XML::Twig’s documentation is oriented toward transforming XML rather than importing it, but it’s capable of doing the right thing without writing ridiculously unPerly code:

my $twig = new XML::Twig(
        twig_handlers => { entry => \&parse_entry });
sub parse_entry {
        my $ref = $_[1]->simplify;
        print "Entry ID=",$ref->{ent_seq},"\n";

SQLite was the obvious choice for a back-end database. It’s fast, free, stable, serverless, and Apple’s supporting it as part of Core Data.

Putting it all together meant finally learning how to read XML DTDs, getting a crash course in SQL database design to lay out the tables in a sensible way, and writing useful and efficient queries. I’m still working on that last part, but I’ve gotten far enough that my lookup tool has basic functionality: given a complete or partial search term in kanji, kana, or English, it returns the key parts of the matching entries. Getting all of the available data assembled requires both joins and multiple queries, which is tedious to sort out.

I started with JMdict, which is a lot bigger and more complicated, so importing KANJIDIC2 is going to be easy when I get around to it. That won’t be this week, though, because the JLPT comes but once a year, and finals week comes right after.

[side note: turning off auto-commit and manually committing after every 500th entry cut the import time by 2/3]

Well, now, there’s a bit of a surprise

From the nice folks at the National Weather Service, via the new Dashboard widget:

259 PM PST FRI NOV 24 2006 ...Frost advisory in effect from 2 AM to 8 AM PST Saturday... The National Weather Service in San Francisco has issued a frost advisory...which is in effect from 2 AM to 8 AM PST Saturday. Further drying was expecrienced today as dew points continued to drop across much of the Salinas Valley. Relatively clear skies tonight combined with low dew points will allow overnight lows to tumble into the upper 20s and lower 30s. Areas of frost will likely develop as several hours of near freezing temperatures are experienced. A frost advisory means that frost is possible. Sensitive outdoor plants may be killed if left uncovered.

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