March 2008

Amazon S3 results

11 weeks ago, I started hosting my pictures on Amazon S3. All of the vacation stuff, and everything I’ve posted since then, adds up to a grand total of $0.40 in bandwidth fees. And the pages load a lot faster than if they were competing for my carefully-throttled bandwidth.

The Munitions archives would still be potentially very expensive to host there, but for normal stuff, this is a big win.

Dear Hello!Project Costume Designers,

Please stop.


Amazon: more fun in Japanese

Today’s discoveries:

What’s the connection? “People who bought these items also bought the Queen’s Blade panty-fighter books”… :-)

Summer anime: Sekirei

ANN has reported that Sekirei will be animated this summer.

By coincidence, volume 1 of the manga arrived at my house a few days ago. I was putting in a large order with Amazon Japan, it popped up as a recommendation, and looked like an amusing ecchi fan-service comic, so I threw it in. Sadly, it’s aimed at a slightly older audience than usual, so there’s no furigana, which will significantly slow down my reading.

So, bearing in mind that I can’t just skim through it and get the gist of the plot, I would describe it as “the bastard child of DearS and Ikkitousen”. I’m not sure which parent it got the brains from, though.

Note: the heroine is Rushuna-scaled, enjoys bathing, and repels fog and other obscuring effects.

R+V: how will it end?

[Update: I just skimmed through the raw of episode 10 on youtube. They found an unanticipated way to trim Rubi’s story, and solved the continuity problem by quickly moving on to the next scene. The fight apparently used up the last of their budget, however. Wow, I’ve never seen character art and animation go downhill that fast. I notice that they worked Rubi’s song into it successfully, though.]

Continuing from where I left off, the last three episode titles have been revealed. It looks like:

  • 11: New school term: chapter 8
  • 12: Public Safety Commission: chapter 9
  • 13: Tsukune: chapter 10

So, 3.5 chapters of Rubi’s story will get crammed into episode 10, and whatever doesn’t fit will spill over into 11 along with however they resolve the continuity break at the end of episode 9. They’ll swipe the ending from chapter 19 to bring Rubi back in at the end of episode 13, which will put them on track to start a second series at episode 20 or 29.

Furigana: just another crutch

If you start studying Japanese, one of the first —and best— pieces of advice you’ll see is “avoid romanization”. The stated reason is simple: almost everything you see written in the roman alphabet is intended for non-Japanese readers, so learning to read romaji saves you some frustration up front, but cuts you off from anything that wasn’t specifically converted for Westerners.

There’s more to it than that, though, but there are plenty of anti-romaji rants out there. Today, I’m going to whine about furigana, small-print phonetic spellings of kanji commonly used in print, and almost completely unsupported on the web. They look something like this (CSS replaced with a GIF, because IE 7 is still broken):

fuigana example

The advantage is obvious: if you can read hiragana, you don’t necessarily have to look up unfamiliar kanji, and even if you do, you don’t have to identify radicals and count strokes. They’re also “real Japanese”; books and comics meant for children and younger teens are full of them, and even adult-oriented material needs them occasionally, to deal with unusual readings and rare kanji. They also get used to add emphasis and subtext.

Some of the disadvantages are also obvious:

  • They have to be added by hand.
  • They increase the required whitespace between lines of text.
  • If multiple words on the same line have furigana, without careful placement they may overlap.
  • If the original text is small, the furigana have to be tiny. This is particularly bad with manga, which are reduced 50% or more when reprinted.

One less-obvious disadvantage that’s been biting me recently is that someone who is accustomed to reading furigana will look at them first, even when he knows the associated kanji. I’ve studied over 1,000 kanji (and written out over 2,000), and if I retained them all, I’d be able to puzzle out the vast majority of the Japanese text I see, and quickly build my vocabulary by reading.

In reality, on a good day I recognize about 800 of them, and often don’t remember all the common readings, because I read the furigana first. I’ve gotten very, very good at reading even fairly small furigana, and can skim through a fully-glossed text quite quickly. The Ask graded readers I mentioned a while back are excellent, and I’m enjoying levels 3 and 4, but I’m reading kanji-with-furigana, not kanji.

Some textbooks try to keep you from falling into this trap by only using furigana the first time a word is used in a page or section (it’s also a lot cheaper…). Unfortunately, this only works when you’re reading the text in order, and really sucks when the teacher asks a student to read something aloud. Better books will use furigana for all new kanji, but expect you to be able to read words from previous lessons. My class didn’t use one of those; ours basically assumed that kanji would magically imprint themselves into your brain without any work on their part.

So, I need to read to master more kanji, but I need furigana to read, which keeps me from mastering more kanji. The best option I’ve found for breaking out of this little catch-22 is the Unicom JLPT Level 2 prep book for the reading section, which includes 30 essays arranged by increasing difficulty, each one printed with and without furigana. I’m also planning to resume my old habit of writing out everything I read, which is tedious, but extremely helpful.

[the other three JLPT2 books in this series are also good, but I’m less interested in them right now. I’ll probably start using them around July.]

Pop-up furigana test

When I first decided to hack furigana for the web, I simply used HTML tooltips, with a bit of CSS to highlight the glossed word. It mostly worked, but the presentation was iffy, and by default IE didn’t use a Unicode font for tooltips. I also knocked together a script to simplify the process of marking up a lot of text; that one needs some more work, still.

My second try used the popular jquery JavaScript library, which abstracted away most of the browser dependencies, and left the HTML clean. I liked the results, but I got sidetracked before I managed to clean up the code. Also, at the time I was reluctant to add the overhead of even a relatively compact JS library to every page.

After my recent discovery that IE7 is still hosed for basic CSS, I broke down and cleaned up my JS code, and I’m going to start using it. Here’s the first test: 漢字には全てふりがなが付いています

The big feature of this version is that if JavaScript is turned off in the browser, the pop-up furigana still display as tooltips. One known bug is that they appear in the wrong place if the window has been scrolled horizontally.

[Update: hmm, the offset function in the new version of the jquery dimensions plug-in isn’t calculating the correct bounding box for the base text in IE 6. I’ll have to look at that. However, the ifixpng plug-in does finally make my site logo work in IE6.]

[Update: I’m behind the times. offset() has been rolled into the core jquery library, and it’s fine; the problem was that IE6 doesn’t bother calculating changes to a hidden DIV. If I show it and then update its position, it works fine.]

Dear Hello!Project Costume Designers,

Pretty girls are not summer-camp crafts projects.


Okay, maybe the Japanese are the sane ones…

After all, these people were mainstream American entertainers.


Aperture 2: smells like boosters

Sad, really. Amazon finally delivers my Aperture 2.0 upgrade, and my first thought upon opening the package is, “wow, this manual smells like a freshly-opened Magic: The Gathering booster pack”. Not those cheap, modern, anyone-can-get-some boosters. The good stuff, from the old days, when people would line up around the block to buy a case, then get back in line to buy another one.

Oh, and I didn’t expect it to work, but no, it doesn’t support my old Minolta A2 in its new tethered mode. That was my second thought.

Dear Hello!Project Costume Designers,

Yuuko’s outfit is simple, and her hair is for once a color found in nature. Okay, she’s wearing a nightie, but that’s not a bad thing. But when I look at Nacchi, I just have to ask, DEAR GOD WHAT HAVE YOU DONE?!?


The slender way to booze

A frequent annoyance for manga and anime fans is the inevitable loss of information in translation. Little things like the use of -san, -chan, -sama, -dono, et al can be simply left in or explained once, and if you’re watching the subtitled version, you can pick them out of the original dialogue.

Often, though, cultural context means that a single line of dialogue can’t be fully understood without half a page of explanation, but sometimes it can’t, or shouldn’t, be explained. One of the dumbest things I’ve seen a fansub group do was fill the entire screen with a detailed explanation of a very small joke that added almost nothing to the story.

What we see a lot of today, though, especially with the insane pace of manga translation, is information lost because the translators didn’t have the context themselves; either they’re not native speakers who grew up in Japan (as pointed out in this Amazon review), or they’re not reading an entire story before translating a chapter (too many to list…).

So, here’s my tiny joke of the day, courtesy of a manga volume I spotted in Kinokuniya: ほそ道. It’s the story of a salaryman who loves to drink; I can’t tell you any more about the story, because it’s entirely lacking in furigana, and I didn’t buy it anyway. It’s popular enough to have 22 volumes out, though.

Anyone familiar with classic Japanese literature will get the title immediately, and wonder just where the author is going to go with it. “Sake no hoso-michi” translates literally as “the narrow road of sake”, but it’s really a reference to “Oku no hoso-michi”, a very famous book written by the haiku poet Bashō.

Needs more punk

The phrase “voted best punk band by Shoujo Beat” pretty much sums up this song by Ketchup Mania. I think it’s a bad sign when you can listen to punk rock and visualize the anime series that it would make a good opening-credits song for.

[Update: animated music video for another Ketchup Mania song.]

“Cake or Death”, revisited

Another random discovery in Kinokuniya: 死神チョコレートパフェ. Three light novels, adapted into a manga series. I have no idea what it’s about, and yet, I do.

The first light novel looks like this.

Dear Junjun,

Love the outfit, but… bananas?


This picture was really interesting…

…until I realized they were riding a bicycle.

Free Kanji fonts!

Safari 3.1 has added CSS downloadable font support, so I went looking for some decent fonts with less ambiguous availability than the often-linked hgrskp.ttf. To my surprise and delight, I found that Epson hosts a free download of a nice collection of fonts, including a Kaisho, a Kyoukasho, a Gyosho, a Mincho, and a Maru.

The only thing wrong with them is that the embedded font names are not encoded in Unicode (probably Shift-JIS), so the names show up as garbage in font menus. Easy fix with a font editor.

[Note: kanji fonts are in the neighborhood of 50 times larger than a standard font, and you really, really don’t want to embed them into a web page except as a test. There’s a reason Adobe PDF uses font subsetting, and I suspect people will insist on similar tools for web fonts, even the standard ones. Also, Safari 3.1 doesn’t cache downloaded fonts at all…]

Holiday Inn Express

Over the past few years, the best hotel experiences I’ve had have come from Holiday Inn Express. Well-appointed rooms, comfortable beds with pillows in an assortment of firmnesses, towels that haven’t had all the softness laundered out of them, a desk I can work at, decent cable tv and a DVD player, and solid, free high-speed Internet access. Some of them also have a decent free breakfast.

Last weekend, I decided to spend Saturday up in San Francisco, before heading to a friend’s house in Campbell on Sunday, so I booked a room in Redwood City for two nights. I’ve stayed in that particular HIE before, and gotten good service.

Unfortunately, Saturday morning, there was no hot water anywhere in the hotel. They were sorry about it, and had it fixed by mid-day, but by that time I was already up in SF, enjoying the taiko drumming in SF Japantown (part of a film and cultural festival I hadn’t known about). [side note: pretty girls banging on big drums appeals to me…]

Last night, my mailbox contained a Starbucks gift card, the hotel manager’s business card, and a humble apology for their failure to provide perfect service.

[oh, and the Holiday Inn membership rewards system feeds directly into the JAL membership rewards system, building up miles for a seat upgrade on a future trip to Japan]

When is data not data?

When it follows a commented-out line that ends in a backslash.

[this tip brought to you by OpenBSD’s ipsec.conf file, which considers the remaining partial record syntactically valid, triggering no warnings]

Oh, dear ghod, no

Just got an invite in the email:

What's Pulse?
It's the first networking tool to span professional and personal life.

Blech. No thank you.

Dear Ai Suma,

You’re a fresh, pretty young girl, and I’m sure you have a bright career ahead of you in the idol business.

Ai Suma, Hello!Project Kansai

Seriously, if you weren’t still on the dangerous side of sixteen, you’d already be breaking my heart.

Ai Suma, Hello!Project Kansai

However, there’s something very important that you need to know about your career: you work for Hello!Project, and where other talent agencies are content with using up fresh, pretty young girls as if they were tissue paper, H!P takes a more comprehensive approach to destroying souls. Just ask fellow member Risa Niigaki:


The return of Sqyntz

The best damn sour candy in the world disappeared from every store in my area quite a while ago. Then their web site went offline. Last week, on a whim, I googled, and found that their online store was back. There are a number of error pages where they’ve deleted part of their product line but left the links in place, so I’m guessing they’re adjusting to the consequences of expanding their line without adequate distribution.

Naturally I ordered 5 display cases, for a total of 30 tins of concentrated, sugar-free joy. That should last me a few weeks, unless I share (“Hi, David!”).

Note: ordered on the 19th, arrived with free shipping on the 22nd. Good thing they didn’t show up in the morning, or I’d have had to share them with my friends. :-)

Autumn-colored canal in Kyoto

(all vacation entries)

I was playing with the new version of Aperture today, flipping through the pictures from my Japan trip, and noticed something unusual. See if you can spot it.

Autumn colors spreading across a canal in the Gion district, Kyoto, Japan

Merosu, Serinuntiusu, and Dionisu-ou in Shirakusu

I’ve now read all ten of the books in level 3 of Ask’s graded readers, and six of the ten books in level 4. I’ve also discovered (by reading the front cover…) that they didn’t just record audio for some of the stories; they did it for everything, but the ones that were too long were left off the CD and put online as MP3 files. That gives me a total of eight hours of professionally-recorded audio of stories that I’ve read and understood.

Mostly understood, anyway. I had a little trouble with the basic premise of 野菊の墓, which is that Our Hero’s first love can never be his, because she’s two years his senior. It’s possible Ask’s version has been over-simplified a tad, so I’m going to attempt to read the real thing at Aozora Bunko, a free online library of Japanese literature.

Another one I had some trouble with was called 走れメロス, not so much because of the story as the basic problem of figuring out who the heck these people are in this tale of ancient Girishia. Quite literally, it’s all Greek to me.

One thing I found interesting at Aozora Bunko was their method of encoding furigana in a text file. A string of kanji characters is glossed by following it with hiragana surrounded by double angle brackets. If the glossed word immediately follows another kanji that isn’t covered by the furigana, a vertical-bar character is added to separate it.

So, the title of the first story would be rendered as 「野菊《のぎく》の墓《はか》」, and if I only wanted to add furigana to a single word in an all-kanji phrase, it would look like this: 「東京|特許《とっきょ》許可局」. They also include annotations of the form [#whatever] (mostly for rare kanji and special formatting). All of the characters are full-width forms that line up neatly with kanji, but aren’t otherwise used in Japanese prose. I don’t know if this is a common standard, but it seems to be sufficient for most uses.

Slight change to the site…

So, the downside to adding jquery to all my pages is that, with my carefully throttled bandwidth, it ended up adding significantly more time to the page load than you’d expect. This was recently explained very clearly over on Surfin’ Safari.

As a result, I moved all the JS libraries over to Amazon S3, where I’m already hosting my pictures. This turned out to be a bad idea, because while their service is very quick, every once in a while it fails to deliver a page. And if the jquery library doesn’t get loaded, my comment-spam trap becomes lethal.

The system I came up with a while ago, that has proven to be 100% effective, is to set the form-submission URL to “imacommentspammer”, and use JavaScript to replace it with the real URL once the page finishes loading. My log-scanning script checks the Apache logs for this and other “interesting” URLs, and immediately adds the associated IP address to the firewall’s block list. Spammers that scan the static HTML pages never see the correct URL, so into the trap they go.

The unfortunate side-effect was that if S3 failed to deliver the jquery library, any attempt to post a comment resulted in my site vanishing from your view of the Internet. That’s a little extreme even for me, so I added a second step: the form submit button is disabled in the HTML, and enabled by the same script that fixes the URL.

[I noticed this because the script tried to ban me; fortunately, I have a whitelist for just such occasions.]

I know what you’re thinking, Aya, …

… “why oh why didn’t I take the blue pill?“.


With little effort, one can manage to enumerate no less than three levels

In deference to Brian’s delicate sensibilities, I will not use the phrase “…on SO many levels”.


…and three weeks later, we celebrate my other birthday

When I was reading the star-crossed-puppy-love story 野菊の墓, I found myself wondering if the editors at Ask had over-simplified the main conflict, since it boiled down to “you two can never, ever marry, because she’s two years older”. Skimming through the original version (a much slower read, even though it’s easier to look up vocabulary with cut-and-paste), it looks like that really is the reason the whole village is upset about their budding romance, to the point that she’s forced into an unhappy marriage with someone else. Pause for mild culture shock.

One thing that caught my eye, though, was this passage:


Roughly: “Having just finished elementary school, I was 15, or if you counted months, 13 and some change; Tamiko was 17, but since she was born late, she had just turned 15.” [note the use of Aozora Bunko’s 《》 convention for furigana, in this case glossing the character for “evening” with the word for “late”]

The Ask version just gave their ages as 13 and 15, respectively, but clearly there was something going on in the original. I noted the multiple ages as something to look into later, and then spotted the answer by accident while flipping through my collection of reference books: 数え年. In the kazoedoshi system, you’re 1 at birth, and gain a year on New Year’s Day. These days, the most visible use of this system is probably the Shichi-Go-San festival.

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