Saturday, November 30 2002


Is there a reason I should care what scripting language your site is implemented in this week?

Is there a reason I should care what variable names your script uses this week?

Is there a reason I should care what directory you store your script in this week?

Is there a reason why I should see any implementation details at all, or be forced to try to cut and paste a 494-byte URL when I want to recommend your site to a friend?

And should it be harder to make a sensible URL than a ludicrous one?

(Continued on Page 101)

Sunday, December 1 2002

Does CSS stand for Can’t See Shit?

I like CSS. I’m thinking seriously of ditching HTML tables in favor of pure CSS page layout. Unfortunately, it feels like almost every site that pushes CSS fills the page with tiny little fonts, and most of them use absurdly wide text columns with no leading. A List Apart uses decent leading and keeps the column width under control, but their “bigger text” stylesheet only produces a significant change if the user has already overridden their browser’s defaults.

(Continued on Page 102)

Tuesday, December 3 2002

More font madness

So I went to Apple’s support site to search the knowledge base, and couldn’t read a damn thing. My eyes were a bit tired, and the search results were displayed in 9.5pt Arial. Of the many preferences you can set when you log in with your Apple ID, legibility isn’t one of them. Gosh, I wonder what would happen if I searched for “Universal Access?”

(Continued on Page 103)

Sunday, December 8 2002

Good article, bad HTML

David Brin usually writes interesting stuff (although I was horribly disappointed by his most recent Uplift novel). This article is no exception. Unfortunately, it looks hideous. Not only is the entire thing deliberately set in Helvetica Bold, it has medium-blue text on a light-gray background, no leading, and the lines are fully justified (something that’s rarely appropriate on the web).

For more fun, the text is broken up into pseudo-paragraphs by pairs of <br> tags, something I haven’t seen done in years. The only nice thing I can say about the article, apart from the content, is that the lines would be a comfortable length for reading if he’d used either a few points of leading or a non-bold font.

Friday, December 27 2002

Baby’s First Perl Module

My blushes. I’ve been hacking in Perl since version 2.0 was released. In some ways, it’s my native programming language. It’s certainly the one I use the most, and the tool I reach for first when I need to solve a problem.

But I haven’t kept up. Until quite recently, I was really still writing Perl3 with some Perl4 features, and regarded many of the Perl5-isms with horror. It felt like the Uh-Oh programmers had crufted up my favorite toy, and it didn’t help that the largest example of the “New Perl” that I had to deal with was massive, sluggish, and an unbelievable memory hog (over 9,000 lines of Perl plus an 8,000 line C++ library, and it uses up 3 Gigabytes of physical memory and 3 dedicated CPUs for its 25-hour runtime (“Hi, Andrew!”)).

(Continued on Page 99)

Friday, January 3 2003

Need a cookie? Take a cookie.

So, I just got another notice about a sleazy bastard printing out my photographs and selling them on eBay. Joy. This is the sort of behavior that led me to stop posting large JPEGs a while back.

(Continued on Page 37)

Friday, July 11 2003

“Hey, is this thing on?”

So, after months of benign neglect and minor catastrophes, I’m updating my web sites again. We got the old server back intact, I’ve upgraded the machine to OpenBSD 3.3, and I’ve moved this page into Movable Type. I’m even reasonably happy with the layout.

I’ve got lots of abandoned projects to resurrect, the most popular of which is of course my photo archive. I think I still get at least 20,000 hits a day from people who want it back, but the hate mail has tapered off.

Sunday, July 13 2003


Simple little MT plugin, created as a generalized alternative to FlipFlop.

Given a list of keywords to be substituted into the template, each call to <MTRoundRobin> returns a different item from the list, in order, wrapping back around to the beginning when it hits the end. Examples follow.

(Continued on Page 93)


Teresa Nielsen Hayden of Making Light has a charming way of dealing with obnoxious commenters: she disemvowels them. This seems to be far more effective than simply trying to delete their comments or ban their IP addresses. She apparently does it by hand, in BBEdit. Bryant liked the idea enough to make a plugin that automatically strips the vowels out of comments coming from a specific set of IP addresses.

I don’t have any comments to deal with at the moment, but the concept amused me, and I wanted to start tinkering with the guts of MT, so I quickly knocked together a plugin that allows you to mark individual entries for disemvoweling. While I was at it, I included another way to molest obnoxious comments.

(Continued on Page 94)

Monday, July 14 2003

By their threats shall ye know them

Hey, what’s a web site without fraudulent threats of legal action? There’s a guy out there who has bullied and blustered his way into a business running pay web sites for Playboy models under various names, primarily “Alpha Interactive” (no links provided; after all, my goal here is to convince you to spend your money elsewhere).

This is old news, but I couldn’t resist the urge to yank his chain by reposting his threats and explaining his motive in making them.

(Continued on Page 132)

Monday, July 21 2003

Sanitizing Apache with PF

About 45 minutes elapsed between the moment that I first turned this server on and the arrival of the first virus/worm/hacker probes. It was obvious that most of them were looking for Windows-based web servers, so they were harmless to me.

Still, I like to review the logs occasionally, and the sheer volume of this crap was getting annoying. Later, when I raised from the dead, I discovered that it was getting more than 30,000 hits a day for a file containing the word “ok”. Worst of all, as I prepare to restore my photo archives, I know that I can’t afford to pay for the bandwidth while they’re slurped up by every search engine, cache site, obsessive collector, Usenet reposter, and eBay scammer on the planet.

Enter PF, the OpenBSD packet filter.

(Continued on Page 149)

Thursday, July 24 2003

Color combinations for web sites

I’ve stumbled across two interesting tools recently. The first is the Mac application ColorDesigner, which generates random color combinations with lots of tweakable knobs. The second is Cal Henderson’s online color-blindness simulator, designed to show you how your choice of text and background colors will appear to someone with color-deficient vision.

I decided to try to merge the two together into a single web page, using Mason and Cal’s Graphics::ColorDeficiency Perl module. It’s not done yet, but it’s already fun to play with: random web colors.

Right now, the randomizer is hardcoded, but as soon as I get a chance, I’ll be adding a form to expose all of the parameters.

Monday, July 28 2003

HTML forms suck

It didn’t shock me to discover this, but it was one of those things about the web that I hadn’t really played with seriously. Then I started trying to expose all of the parameters for my random web colors page, so people could tinker with the color-generation rules.

Not only did the form add 24K to the page size, it increased the rendering time by about an order of magnitude.

(Continued on Page 1489)

Wednesday, July 30 2003

Munitions go boom

Well, actually it’s just the DNS server, which I have no control over. It looks like the caches started timing out around midnight. IP address for is

Thursday, July 31 2003

Who thought this was a good idea?

I like Dean Martin. I picked up one of his albums on the iTunes Music Store recently, and I’m glad to see that Capitol Records is actively promoting him once again. But what eagle-eyed halfwit thought that “light gray on white” was an appropriate color scheme for body text, especially at a size as small as 9px?

I apologize in advance to anyone who follows that link. Especially anyone old enough to remember Dino.

Friday, September 5 2003

Yeah, what he said


Not the bits about Sony, although I agree on that as well. I haven’t much liked them since they discontinued my favorite portable CD player (the one that had every function clearly separated onto different buttons).

No, skip down about halfway. Look for the word “Metafilter”. I grovel in praise of his ability to sum up what it is that I hate about that site. I visit often to find amusing links, but the moment I spot one of their typically rabid Leftie front-pagers, MEGO. There’s no point in replying, because it’s crystal clear that they simply wouldn’t comprehend that a reasonable person could legitimately disagree. You must be a troll, a freeper, or some other convenient label; you can’t actually be serious.


  1. MEGO - My Eyes Glaze Over
  2. Freeper - as far as I can tell, this means “anyone to the Right of Michael Moore”

Saturday, September 6 2003

False alarm (whew!)

Bad: checking your server logs in the morning and finding 6000 refers from Fark.

Good: discovering it’s because someone in their forums deep-linked to a picture of a pretty girl, not because your entire photo library has just been Farked.

[it wouldn’t increase my hosting bill, but it would certainly slow things down for people; my bandwidth throttling is already holding the traffic at one-eighth of its old average]

Wednesday, November 12 2003

I hadn’t thought of that

While looking at my server stats, I noticed Babelfish showing up in the referrer logs. What was so interesting that someone wanted to translate it into their native language for better comprehension? The Bloomin’ Onion recipe.

Now I’m going to spend the rest of the night wondering if we’ve poisoned someone with a literal translation.

Wednesday, January 14 2004

Sampling Windows trends

My pictures site gets about 28,000 page requests per day (way down from the days when my bandwidth was unlimited). 87% comes from Windows and 5% comes from Mac users, which sounds about right. Less than half of one percent comes from Linux users, which narrowly beats out the “known robots” column, but loses by a factor of two to Windows 95. This also sounds about right.

WebTV comes in at just under half the size of Linux, which is a surprising showing for a product that only has about 650,000 subscribers left.

Windows XP beats out other flavors, but it’s still used by only 54% of my Windows-based viewers. 98, 2000, and ME get 22%, 15%, and 7% respectively.

One page-hit a day comes from someone claiming to run Windows 3.1. I disbelieve.

Saturday, January 24 2004

Advice for desperate comment spammers

Not only is it painfully obvious when you come by to try to bump the page-rank for German credit “repair” agencies by manually spamming my comments, but it’s pointless, because my comment pages don’t show the MTCommentURL field.

If you put the URL in the body, it will actually work (for a few more minutes, at least), but then it will be even more obvious what sort of cretinous lowlife you are, and make it even easier to delete your spam.

Why don’t you go join that asshat who tried to kill himself by eating everything on the menu at McDonald’s for thirty days? You’ve already got the public vomiting down pat, so the weight gain and failing health should be a snap.

Sunday, January 25 2004

Variant Nigerian scam email

This one’s new: it’s targeted by last name, claiming that someone sharing your last name died in Nigeria, leaving $6 million in a bank account. The fraudster presents himself as an accountant at the bank holding the money, and offers to split the take with you if you’ll pretend to be the next of kin. The cool thing is that he sent it to an address that has never received a non-spam message, clearly establishing that he bought a low-quality mailing list instead of scraping web sites.

Best line: “I guarantee that this will be executed under a legitimate arrangement that will protect you. From any breach of the law”

Actual clever wrinkle: the email address you’re supposed to contact is at the official-sounding “”. This is apparently a service of the legitimate site, a web portal for legal professionals. This may backfire on my new friend…

(Continued on Page 1731)

Wednesday, February 18 2004

Morons with Flash

Happened to stumble across Siobhan Donaghy’s web site. It opened a new window that used Flash to pretend to be a music magazine. I cannot imagine a less useful metaphor for navigating a web site, especially since it is completely unreadable without extensive use of the supplied zoom button and jump-scroll arrows.

It is the stupidest site design I’ve ever seen. Slow to load, hard to read, hard to navigate, effectively impossible to link to or quote from, and actively hostile to large and/or high-resolution displays. It is a remarkable exercise in “polishing a turd.”

It will probably win an award, which the designer will cherish forever and leverage to justify even greater sins.

Monday, March 8 2004

No comment

There’s this moron who thinks he has something to say, and he insists on saying it in my comments section under a variety of aliases. So I’ve turned off all comments for a while.

Update: Truth is, I was headed to Vegas for a week, and I didn’t want to leave the little twerp with a private playground while I was offline, especially since he enjoyed ineptly pretending to be me by responding to his own comments. I’ll turn them back on now that I’m home.

Monday, March 22 2004

“Ron Dollar”, please go away

Dear child,

You’re not clever, you’re not funny, you’re certainly not my friend, and you have nothing interesting to say. Stop spamming my comments.

And, by the way, it took me about five seconds to wipe out your latest “contributions”, so you’re not even a real annoyance, just a bug on the windshield.

Oh, and if anyone else reading this wants a good laugh, it took this wannabe-troll three hours to come up with 18 lame comments. All wiped out with one line of SQL code and a quick rebuild.

(oops, miscounted the first time; I counted all the POST events, forgetting the mandatory preview I turned on a while back. I had to go by the logs, since I’d already nuked the actual comments. :-))

(which, by the way, is done with: delete from mt_comment where comment_ip = “nnn.nnn.nnn.nnn” and now() - comment_created_on < 1;)

(oh, and for more amusement, I’ve added each of his IP addresses to my badlife PF blacklist, so he can’t even see the site until he reconnects and gets another one. If he keeps it up, I’ll just block the entire subnet for a while; it’s not like I have so many readers that I actually care about the loss of a few random Class C networks for a few days.)

(and if he ever did rise to the level of an actual annoyance, my badlife system can trivially be extended to automatically add his IP addresses to the blacklist without human intervention; I did most of the work a long time ago to deal with mass downloads of my picture site…)

Friday, April 2 2004

Spotted a bunch of referrer entries from this site, which appears to be a search engine. What made them stick out was their absurdity:

A quick look at their web site told me all I’ll ever need to know about them:

Achieve superior monetization for your site with our customized solutions.

Wednesday, April 7 2004

iTunes Music Recommendation service

This is a new “if you like X, try Y” service set up as a student project at University of Illinois (Champaign-Urbana). Does it work better than Goombah? Dunno yet; so far I haven’t been able to get it to work. I can upload my iTunes database, but it fails trying to download recommendations (probably due to being Farked, Slashdotted, BoingBoinged, Lileksed, Instapunted, or some other combination of high-profile links).

I can think of two reasons why it’s a better bet, though: first, it looks like they’re doing the work on the server side, rather than chewing up hours of CPU time on your computer, and second, Goombah hasn’t updated their client or database in months.

Ah, just got through, and discovered one disadvantage to server-side processing:

Your music database is being processed. This window will show your recommendations once they’ve been computed.
Notice: The server is a little backed up, hence the long wait. Once the server gets caught up the wait will be ALOT shorter, until then I would recommend that you don’t hit the resend button.
Your estimated wait for results is 8 hours, 44 minutes, 40 seconds. You may quit and log back in at anytime to check on the status of your recommendations.
(Continued on Page 1874)

Friday, April 16 2004

Survey spam: nice try, Satmetrix

Found this one in my Quarantine folder (“things that make it past my spam filters but come from people I’ve never corresponded with”). It claims to be a survey conducted for Yahoo! over a recent Customer Care case, and even includes a case number.

The tip-off? It was sent to the phony email address I publish on the home page of this site, which changes every month. So, not only have I never used this address to send email to anyone, but it’s addressed to last month’s address. Satmetrix appears to be legit, but a quick Google turned up several examples of them sending this exact same message to mailing lists (over at least a year and a half).

It looks like Yahoo! is forwarding viruses, spam, and other forged email to them as legitimate customer care cases, and they’re not detecting it, which significantly reduces the value of their service and likely puts them both in violation of various spam laws.

(Continued on Page 1892)

It smells like… victory

Last July, I knocked together a small perl script to monitor my Apache logs for virus probes, rude robots, and other annoyances, and automatically add their IP addresses to my firewall’s block list.

Today I spotted a very unusual entry at the bottom of my referrer report. I was morbidly curious what someone at a commercial web site devoted to she-males would be linking to, but it turns out the answer is “nothing”. Someone in China was running a robot that pretended to be a Windows 98 box while recursively downloading my site, no doubt to encourage My Loyal Readers (all six of them) to visit this fascinating site.

Unfortunately for my hopeful new friend, his robot tripped my log monitor and triggered a block, preventing him from getting more than a few hits. Even more unfortunately, I don’t display recent referrers anywhere on this site, so I’m the only person who knows what site he’s being paid to direct traffic to.

And I’m not going to tell. But it’s registered to someone named Dmitri Kukushkin in Delaware, who owns at least one other fetish domain.

Sunday, April 18 2004

Test, ignore

Hmmm, looks like updating OpenBSD may have broken MT posting through Ecto.

Ah, I think it’s just a version mismatch in the chroot environment.

Sigh, that solved most of it, but not all. It looks like I’m going to have to reinstall a bunch of Perl modules, and then rsync them into the chroot.

No, wait, it seems Ecto allowed me to insert an invisible character into a blog entry, that it subsequently refused to translate into something that could be uploaded via XML-RPC. Blech.

[clarification: thanks to its NeXT roots, the standard OS X text widget supports a limited subset of Emacs editing keys. Unfortunately, while it lets you use Control-Q to insert literal ASCII characters, it doesn’t know how to display all of them. While typing my mini-review of the Forerunner 201, I somehow managed to type Control-Q Control-N, and Movable Type’s XML-RPC interface coughed up a giant furball when Ecto sent it this unescaped control character.]

Update: The response from Ecto support is “Should be fixed in next version.” Cool.

Update: And, indeed, it’s now fixed.

Tuesday, April 20 2004

Safari: righting wrongs

For some time now, I’ve been mildly annoyed by Safari’s “Open in tabs” option at the bottom of every menu entry in the Bookmarks Bar; it’s too easy to select by accident with certain pointing devices. This is second only to my annoyance that the Bookmarks Bar doesn’t obey the same UI rules as standard Mac pulldown menus.

Well, I’m still stuck with the second one, but I just discovered that someone on the development team recognized that it was a little too easy to wipe out all of your open tabs and replace them with thirty new ones. It’s not obvious, but immediately after selecting “Open in tabs”, the back button acts as an undo.

Monday, April 26 2004

Win a lottery without even playing!

The email of my dreams! A lottery you can win $500,000 in without ever buying a ticket! Even better, you don’t even have to know that it exists at all! Just post a comment to someone’s weblog and wait for the robots to come by and scrape your address! And it’s backed by Mr. Bill Gates himself, so it’s got to be real! Oh boy, am I lucky!

Oh, wait, it’s just spam…

(Continued on Page 1922)

Tuesday, May 18 2004

“In the past week…”

“…how many times have you accessed the Internet, other than for email?”

Yup, another phone survey, this time asking me about local newspapers, radio, television stations, restaurants, and shopping malls, and use of the Internet for shopping and information. I racked up a pretty impressive string of “no” answers for old media, along with a few “they have a shopping district there?”.

My answer to the title question? “Two, maybe three hundred.” Her stunned silence lasted so long that I didn’t have the heart to tell her that my answer would have been much higher if I’d used the definition of “accessed” they probably intended.

Thursday, July 8 2004

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?

(Continued on Page 2024)

Monday, July 19 2004

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.

Saturday, July 31 2004

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 = [

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!

Monday, August 30 2004

“Hey, where did the pictures go?”

I took the web site down for the night. We’re trying to diagnose an odd TCP error that keeps some people from seeing any of my sites, and the current suspect is the packet filter.

Of course, no packet filter means no bandwidth throttling, and no bandwidth throttling means that all those pictures of happy smiling Playboy models get downloaded a lot more. This gets expensive rather quickly…

Update: back now. Definitely something in either PF or my ruleset that’s interacting badly with Fedora’s latest update to TCP window scaling. The only thing I can think of is the scrub rule, so I’ve commented it out for now.

Friday, November 12 2004

My Evil Twin

I didn’t know I had one, but then he ordered some Mac stuff from a Yahoo store and accidentally entered my .Mac email address instead of his very similar one. Since the shipping and billing addresses were in Boca Raton, Florida, and I’m in California, this looked an awful lot like identity theft, which makes for a lovely way to spend a Friday evening. After calling all of my credit-card vendors to check for suspicious charges, changing several passwords, and other financial fire-drilling, I thought to look up the phone numbers from the invoice with anywho. Sure enough, there’s a Jay Greely in Boca Raton, and he lives at that address.

Who knew?

Update: Just talked to Jay’s wife, and it turns out that they bought their first Mac yesterday, and he apparently misremembered their shiny new .Mac email address.

Monday, November 15 2004

Comment spam

Someone finally got around to automating a comment-spamming tool that evaded my trivial protections (rename MT CGI scripts, force preview before post). Naturally, they decided to send six different comments to three or four different articles, about a dozen times each.

Sadly for them, they put their web site into the commenter’s URL field, which I don’t display, so their efforts were in vain. Even worse, from their point of view, they sent them all from the same IP address, which meant it took about thirty seconds to clean things up. And another five to ban their entire netblock at the firewall. I didn’t even need to rebuild, since the comment pages aren’t cached (another trivial change from the defaults).

I think for the next pass, I’ll change the comment URL from /mt/hasturhasturhastur to /murfle/gleep. The best defense against automation is diversity.

Friday, November 26 2004

Please, crash for me

I have never been more annoyed at an application’s failure to fail.

We have this service daemon that performs various actions on incoming images. Recently, it’s been crashing at random intervals, leaving behind a core file that tells us precisely what function it segfaulted in, but includes nothing to tell us where the image came from. All we know is that somewhere out on the Internet, there are JPEG images that crash our copy of the IJG JPEG library in jpeg_idct_ifast().

Since this was affecting customer performance, we really wanted to know, so we cranked up the logging on one of the affected thirty-two servers, to capture the incoming request URLs. And it hasn’t crashed since.

Four days of crashes every hour or so, and now nothing. The good news is that our customers are less unhappy. The bad news is that our developers don’t have a test case to code a fix against.

So now I’m trolling the web, looking for corrupt JPEGs. I strongly suspect that the images that caused our problem were intended to exploit holes in a certain other OS, but I can’t be sure until I find some and feed them to our server. Sigh.

Tuesday, April 12 2005

A for effort, guys, but…

…I don’t sit twenty feet away from my laptop, and the subject line gives it away as spam anyway: (Continued on Page 2279)

Monday, April 18 2005

Safari 1.3, two steps forward…

…half-step back. I’m a big fan of the increase-text-size button in Safari, so while I appreciate the definite improvements in the version included with the 10.3.9 update, I have some…issues:

Safari 1.3 Error

This anime review site displays just fine at the normal text-size setting, but Safari 1.3 persistently hoses the images if you’ve hit the increase-text-size button. Sometimes a forced redraw fixes it, sometimes I have to decrease text size and then increase it again.

Tuesday, June 7 2005

New cold-call tactic, or confused user?

Just got voicemail on my cellphone from someone I’ve never heard of, asking me for help connecting to her web site. She said that someone else I’ve never heard of referred her to me, because I helped that other person with her computer problems. She even gave me her home phone number, in the 651 area code. And she called me “John”, not “J”. Yeah, it smelled funny to me, too.

A reverse lookup through Google supports the claim that this is a real person, at a real street address in Hugo, Minnesota. The satellite image makes it look like either an apartment building or office complex; another quick search turns up the City of Hugo’s color-coded zoning map, which confirms it as “low-density multiple family residential”.

[side note: with my color vision, I had to rely on Apple’s bundled DigitalColor Meter app to figure this out]

It’s tempting to call back collect, just to see what happens, but I think I’ve wasted enough time on this already. I just thought it would be fun to see how well I could track her down. Her husband’s name is Ken, by the way.

Saturday, July 2 2005

Surfing Identity

So, nearly two weeks after I gave notice at my current job, I finally got the written offer letter and new-hire packet from the new one. I wasn’t terribly worried about the offer suddenly being withdrawn, leaving me out of work; anything that happened would be at best a temporary HR glitch, and I’m in excellent shape financially.

The worry came when I read the current version of the I-9 form and searched the house for acceptable documentation. I’ve never had a passport, and I couldn’t find either my Social Security card or a copy of my birth certificate. They’re both around here somewhere, but I haven’t needed them in 12 years, and my filing system is a touch “chaotic”.

Applying for a new SS card is easy, but they mail it to you in 7-10 days. It might arrive in time, but it might not. So I went to Google and asked it to conjure up the appropriate department of the Ohio state government for acquiring birth certificates.

I expected to get a short list of random offices with phone numbers. What I got instead was a long list of companies who will cheerfully sell you certified copies of birth certificates online, “just what you need to prove citizenship!”. Some of them looked reputable, others looked more than a little dodgy. The ones who promised the fastest service tended to look the dodgiest, taking shortcuts in the critical area of verifying your identity. Your credit card, yes; your right to have a certified copy of someone’s birth certificate, not so much.

So I called Mom. Her I trust.

Wednesday, July 6 2005

Stupid card tricks

Okay, I’ve adjusted to the fact that online credit-card processing systems are written by morons who can’t grasp that entering a 16-digit number is a lot easier if you can use whitespace between groups of digits, the way they’re printed on the damn cards. It’s mind-bogglingly trivial to do the right thing, but I can count on the fingers of one hand the number of sites who even try.

Today was the first time, though, that I had a form reject me because I left out the leading zero in the expiration month. Blech.

Friday, July 8 2005

Photoshop tips

Apropos of nothing, I thought I’d mention that the two most recently posted pictures here were resized in Photoshop CS, using the new(-ish) Bicubic Sharper resampling method, available in the Image Size dialogue box. I hadn’t seen any mention of it until about two weeks ago, and had been using Mac OS X’s command-line tool sips for quick resizing.

Bicubic Sharper is much better than the standard Photoshop resizing, sips, or iPhoto. It’s particularly good for rendered images with fine detail. I’ve been working on a Roborally tile set for Dundjinni, creating my basic floor texture with Alien Skin Eye Candy 5: Textures. Dundjinni expects 200x200 tiles, but Eye Candy renders best at larger sizes. Resizing down from 800x800 using the straight Bicubic method produced an unusable image. Bicubic Sharper? Dramatically better.

I found the tip in a discussion of photo-processing workflow, which makes sense. For a long time, photographers have been making Unsharp Mask the final step in their workflows, because if they sharpened at full size, the slight softness introduced by resizing for print or web use would force them to use Unsharp Mask again, which tends to look pretty nasty. Integrating it into the resizing algorithm takes advantage of the data you’re discarding, reducing the chance of introducing distracting artifacts.

Friday, August 5 2005

Sometimes, life really bites…

As a rule, I’m reluctant to contribute when bloggers seek donations; for the most part, I’m a “friends and family” giver. In the specific case of Kate’s teeth, however, it’s the timing that really makes her stand out from the crowd.

Friday, August 19 2005

Spam that almost works…

Got three of these today so far:

Subject: Best prices for complete Thundercats and more
Subject: Sabrina the Teenage Witch DVD giveaway
Subject: Whole series of transformers on dvd

They’re selling bootlegs, obviously, but there were no concealed URLs, no viral attachments, no embedded images. For junk mail, they’re positively wholesome; the closest thing to obnoxious porn was that they listed “The Nanny” as an available series…

Thursday, September 8 2005

comment spam

Comments are off for the day, because I don’t feel like changing things around again to block the one zombie-master who has figured out how to add comments to my blog entries. It’s only about ten a day, he doesn’t actually get anything out of it (my comment pages aren’t indexed in search engines), and the originating IP addresses are blackholed the moment his script posts one of them, but their existence offends me.

I have some code lying around that will defeat his current method (harvest URL from search engines, post comment from an address that’s never surfed my site before, then get the page and see if his comment was added), but I don’t feel like tinkering with Movable Type right now. When I do, it will scramble all comments less than one minute old, preventing the verification pass.

Zombies are pretty stupid, though, so I don’t expect it to stop them from trying. You’d think he’d eventually give up when it became obvious that his spam doesn’t work here, but apparently zombie masters are pretty stupid, too.

Update: I still don’t feel like hacking on the server, so I’m reopening comments on specific entries. The spammers mostly pick on well-indexed, well-referenced blogs, so the new stuff should be pretty safe.

Thursday, November 3 2005

Why I don’t trust anything posted at, reason #3125

There’s a certain gullibility in most boingboing posts. Often this is combined with eXtreme Technophilia or a hard-left anti-whatever slant, but my favorites are the pure examples.

Today, there’s a link to a story about a 30,000 calorie sandwich. The poster obviously read the linked article and looked at pictures of the sandwich, yet he completely failed to notice the fact that the ingredients list included two and a half quarts of canola oil.

Yes, fully 62% of the claimed calorie count was in the oil used to deep-fry several ingredients. I can forgive some random tailgater for just typing his shopping list into a calorie-counter and blindly accepting the results, but you’d think someone with Cory Doctorow’s alleged technohippitude would easily spot such a glaring error.

Sadly, he and his cohort don’t seem to be much better at spotting obvious flaws in tech-related stories either. I find that most of the actual useful links posted at boingboing come from places like Gizmodo and Engadget, so I tend to look there first for news, and only visit boingboing when I need to laugh. (“at, not with”)

Friday, November 18 2005

Dear OSM™,

I tried to find out what your reason for existing is, but I’m afraid I didn’t make it past the “From the founders” letter. Quoting:

At OSMTM (Open Source Media), we believe that to be true—that freedom, openness and transparency in media is an inevitable result of the technological advances that have given every citizen the chance to breathe deeply of the news, thought and opinion that hovers in the ether between us.

1. Note that HTML has a perfectly good mechanism for encoding a trademark symbol, &trade;. Using <sup> guarantees that cut-and-paste will transform your name into OSMTM.

2. “A, B, and C are”, not “A, B, and C is”.

3. “every citizen” has been given this chance? Really?

4. For that matter, “every citizen” has? Citizen of what, precisely?

5. “…breathe deeply of the news, thought and opinion…”?!? Sounds like you’re trying to attract ads for bongs and hookahs.

6. “…hovers in the ether between us”?!? Never mind, I see you already have enough bongs of your own. Did someone actually read this nonsense before posting it?

And where faceless, “objective” editorial boards once handed down opinions and endorsements, bloggers sound off, the numbers on their public sitemeters lending them unassailable credibility as voices for the rest of us.

I was going to point and laugh at the absurdity and awkward phrasing of the part I highlighted, but I simply can’t get over the juxtaposition of that line of bullshit with the scare quotes you put around the word “objective” in describing the sort of media companies you say you’re different from. “Editorial boards are just something to sneer at, but hit-counters are The Rock of Gibraltar, baby!”.

OSM’s mission is to expand the influence of weblogs by finding and promoting the best of them, providing bloggers with a forum to meet and share resources, and the chance to join a for-profit network that will give them additional leverage to pursue knowledge wherever they may find it.

I’m sorry, but this sentence simply doesn’t parse right. Is it “expand the influence by ‘finding and promoting weblogs’, ‘providing bloggers with a forum’, and ‘the chance to join a network’”, or is it “expand the influence by ‘finding and promoting weblogs’ and ‘providing bloggers with a forum and the chance to join a network’”?

[Mind you, I’m not at all sure how your network is supposed to give someone leverage (additional, no less) to pursue knowledge, much less ‘wherever they may find it’, but I’ll let that one go for now.]

From academics, professionals and decorated experts, to ordinary citizens sitting around the house opining in their pajamas, our community of bloggers are among the most widely read and influential citizen journalists out there, and our roster will be expanding daily.

Apparently your community of bloggers is missing some key knowledge about the difference between singular and plural nouns. Also, when one is addicted to lengthy sentences, mastery of the serial comma is essential for clarity.

[And who decorates experts, anyway?]

…but the next phase in the democratization of ideas has begun.

Only a phase, is it? Nothing to get excited about, then.

Monday, January 16 2006

Be a sucker… for Allah!

This is not a political post. It’s just the latest amusing spam to show up in my mailbox. Content: typical 419 scam. Twist: be a good Muslim, receive several million dollars from this dying, devout man, and use all of it to bring the message of Islam back on target, reclaiming it from the terrorists and their allies. Nice touch: it was sent as a base64-encoded text/plain attachment, to evade many spam filters. Gratuitous silliness: his hospital ward prohibits phone conversations “due to the presence of some medical equipment which reacts to telephone waves”, so he has to use email.

(Continued on Page 2462)

Wednesday, January 25 2006

The Great Den Beste Relocation Project

[From Steven Den Beste, originally posted in my comments]

So here I am in beautiful downtown Beaverton OR, leeching internet connection off a free public WiFi system in the Beaverton Mall. I’m living in a motel, and I’ve found an apartment, but I can’t move into it until Feb 3, and won’t have internet connection at home for another couple of days after that. So until then I have no web site and no email, and decided that the only way I could offer an update to interested parties was by abusing J’s hospitality – or at least, by abusing his comment system.

After I got up here, I spent a week trembling and shivering and sweating because I had no internet connection at all. So I finally broke down and bought a notebook computer, which has built-in WiFi. First thing I did was spend an hour uninstalling all the sample programs and suchlike which Compaq polluted the hard disk with, and deactivating features in XP Home that I didn’t want. I’m sure I didn’t get them all, but at least now when I boot the computer I only have to kill one popup balloon in the tray instead of six.

When I was shopping for laptops I went into BestBuy here in the Beaverton Mall and discovered that they sold DVDs. Not only that, they actually have a small section of anime DVDs. I saw the first Bottle Fairy DVD there, but not the second one, alas (which I think just came out, and which I’m really looking forward to). I did end up buying about four DBZ DVDs I didn’t already have, and, well, on the shelf there was a copy of Eiken. I swear, it just popped off the shelf and landed in my hands, and… well, I bought it.

I’m so ashamed.

Words cannot describe how bad it is. In the teaser for the first episode our hero ends up groping the tits of one fabulously overendowed young woman (who, oddly enough, doesn’t react strongly to the experience by screaming or hitting him or contrariwise with deep passionate moans) and then ends up with another preposterously overendowed young woman sitting on his face – after which the credits roll. But that was enough for me. I’ll never doubt J’s judgment again when he says something stinks.

BestBuy also had the first three DVDs (eps 1-14) of the Ah! My Goddess TV series, and I was curious, so I got them too. They were an extremely pleasant surprise.

The art is fantastic. It’s a pure digital animation so everything is clear and clean. The original voice cast is back again, so there are no jarring changes there.

In general it feels a lot more like the movie than like the original OVA. But there are noticeable differences. The original OVA was a romantic drama. The movie was action-adventure. But the TV series is a romantic comedy, and it’s played a lot lighter. It covers some of the same basic material as the OVA but only in gross terms; in fine it’s nearly entirely different. For instance, in the OVA Belldandy and Keiichi find the temple empty and abandoned and move in. Keiichi asks if it’s OK and Belldandy says she has permission – presumably from Kami-sama. That whole section of episode 1 takes about three minutes. In the TV series there’s actually a priest there, and he gives them permission to say. Then, for reasons I won’t go into, he decides he needs to go on a pilgramage and leaves them to live in the place alone. The whole story about finding the temple and being left there to live takes a full episode.

They’re taking their time unfolding the story. Megumi doesn’t show up until ep 5, and Urd until ep 7. In ep 11 they introduce a character which is entirely new to me: Mara. She’s a demon. Skuld shows up in ep 13. On the other hand, we get to see Holy Bell in episode 3. (IIRC, none of the three goddesses summon their angels at all in the OVA, though they all do in the movie.)

Of course, the danger of “taking their time” is that it could feel padded, the way the El Hazard TV series feels padded, but so far this doesn’t. It does feel a bit leisurely, but that’s not the same.

By far the biggest and most pleasant surprise was Belldandy herself. She doesn’t show up until the last few seconds of the first episode, and it’s the strong, determined, self-confident Belldandy of the movie, not the quivering, self-pitying sobbing wimp of the OVA. In the 14 episodes I’ve seen so far she only outright sobs once, and it’s actually legitimate – and it doesn’t last long. In general, what with the overall much lighter touch to the story telling, the level of angst is much reduced, to the point where it isn’t a throbbing headache.

Another pleasant surprise is that there’s a lot of magic in the series. Belldandy and Urd (and Mara) all use magic quite a lot, and it’s a rare episode without at least one spell being cast by someone. The magic is fun, though it seems as if they’re all a lot more limited than I would have thought goddesses (or top-bracket demons) would be. Fact is that Sawanaguchi Sae or Kikuchi Yume could leave any of them in the dust as far as spell casting is concerned, and they aren’t even supernatural beings.

Skuld moves around using water, just as expected. Urd can transmit herself through electric lines and pop out of any TV screen. Belldandy turns out to have a thing for mirrors, and that’s how she moves around when she wants to get somewhere fast. Of course, Belldandy and Urd can also fly. Skuld, on the other hand, doesn’t appear to know any magic yet, but her gizmos are living up to expectations.

Megumi is the only character they really didn’t change from the OVA, and she didn’t need to be changed. She’s still strong, self-reliant, worldly. She still loves her brother and fully approves of him shacking up with Belldandy. She’s not omnipresent but she’s in a lot of the episodes and plays a major part in about four of them, and every time she’s on the screen it’s good. Her reaction to Urd and even more so to Skuld are wonderful.

I’m pretty sure that the three DVDs I’ve got so far are the only ones out, so I still don’t know where it’s heading, but I have suspicions. The last story arc in the OVA involved Belldandy being ordered back to heaven because her presence on Earth is causing problems. They’re laying groundwork that suggests that they’re planning on a similar ending to the TV series, but because they have more time they’re not forcing it. I hope they don’t wallow in it the way the OVA did, but I’m not too worried because so far the TV series hasn’t been wallowing in anything. (Another pleasant surprise is no two-part stories being told; they wrap every story up in a single episode, which also helps to keep things from getting too deep.)

The two strange seniors from the car club keep making appearances, and in the first episode they were thoroughly annoying – which was, in fact, a plot point. But later on they end up mostly being used for comic relief and mostly in small doses. Occasionally they get used for purposes of deus ex machina (e.g. when Mara appears). In the movie the segment they appeared in was easily the worst part of the film, which I invariably skip when I watch it. In the TV series they’re actually not annoying after the first episode.

There’s so much that’s different between the OVA and TV series that it makes me wonder how closely either of them follows the manga. In the OVA, the episode where Urd appears involves a trip to the beach. That’s not the case in the TV series; it happens in Tokyo. There’s no love potion that misfires, and no real misunderstanding between Keiichi and Belldandy – or rather, there is one, but it only takes Belldandy about five seconds to figure out what’s going on, and she doesn’t collapse in tears. Instead, she says (paraphrased) “Urd, get your butt out here.”

All in all I really like what I’ve seen so far, and I can’t emphasize enough just how beautiful the animation is.

Going forward, mostly I’m treading water until the apartment becomes available. I’ve also rented a garage and THAT I can use immediately. Not that I’d want to sleep in it, mind, but I can start buying stuff and leaving it there for when the apartment finally becomes available. It’s all paperwork and legalities at this point. The previous tenant moved out a week ago and went to New York, so it was empty when they showed it to me last Friday. Yesterday when I went over there to put money down on the place, the maintenance guy said he was painting it. They’re going to replace the refrigerator in the next couple days. A rational person would expect that I could move in this weekend. But it has to stay vacant until Feb 3 because the previous tenant paid the rent until then, even though he’s been sleeping in New York for a week. Hooray for rules, regulations, lawyers and bureaucrats.

It’s alright. I’ve got a lot of stuff I need to pick up, and it’s nice that I won’t have to rush. The motel I’m staying at isn’t ridiculously expensive and I’m managing reasonably well. And I think I’ve done more walking in the last week than I had in the previous year.

I don’t yet know what I’m going to do about a net connection. The big remaining puzzle is whether either Comcast or the phone company (ADSL) are willing to give me a permanent IP and let me run a server. I should be able to find that out in the next couple of days, though, and with two throws of the dice I think I have a good chance of hitting at least once at a halfway reasonable price.

Friday, March 24 2006

Server dog slow today

I’m getting consistent 190ms pings to my server, despite 10ms pings to the router its connected to. It’s not server load, it’s not the bandwidth throttling rules in my firewall config, and I’m not seeing any errors in netstat or dmesg output. My best guess right now is a duplex mismatch on the switch. I’m waiting to hear back from the network guys.

Update: supporting evidence for my switch theory: Scott’s machine in the same rack,, has the same problem, and I get 360ms pings from mine to his, without ever touching a router.

On the “damn nuisance” front, however, email to ViaNet tech support comes back with one of those stupid challenge/response verification schemes. This is precisely the wrong approach for your primary tech-support contact method. Maybe if you’d actually answered the phone when I called, I wouldn’t mind so much, but come on, grab a clue, eh?

Update: oh, that’s much better.

Sunday, April 16 2006

Dear netpbm maintainers,

I hope I am not the first to point out just how pompous and wrong-headed the following statement is:

In Netpbm, we believe that man pages, and the Nroff/Troff formats, are obsolete; that HTML and web browsers and the world wide web long ago replaced them as the best way to deliver documentation. However, documentation is useless when people don’t know where it is. People are very accustomed to typing “man” to get information on a Unix program or library or file type, so in the standard Netpbm installation, we install a conventional man page for every command, library, and file type, but all it says is to use your web browser to look at the real documentation.

Translation: We maintain a suite of tools used by shell programmers, and we think that being able to read documentation offline or from the shell is stupid, so rather than maintain our documentation in a machine-readable format, we just wrote HTML and installed a bunch of “go fuck yourself” manpages.

On the bright side, they wrote their own replacement for the “man” command that uses Lynx to render their oh-so-spiffy documentation (assuming you’ve installed Lynx, of course), but they don’t even mention it in their fuck-you manpages. Oh, and the folks at darwinports didn’t know about this super-special tool, so they didn’t configure it in their netpbm install.

A-baka: “Hey, I know what we’ll do with our spare time! We can reinvent the wheel!”

B-baka: “Good idea, Dick! No one’s ever done that before, and everyone will praise us for its elegance and ideological purity, even though it’s incompatible with every other wheel-using device!”

A-baka: “We’re so cool!”

Update!: it keeps getting better. Many shell tools have some kind of help option that gives a brief usage summary. What do the Enlightened Beings responsible for netpbm put in theirs?

%  pnmcut --help
pnmcut: Use 'man pnmcut' for help.


Saturday, May 13 2006

Gosh, I could have sworn that one was taken…

I’m a bit surprised that FHM’s streaming video feature, Webtv, hasn’t gotten them in trouble with the folks at WebTV. Sure, they stopped calling the product that well before I left, but the trademarks are still out there, scattering little motes of mindshare.

To the best of my knowledge, there are still several hundred thousand people in the US with WebTV-branded boxes attached to their television sets, vigorously navigating through email, ebay, chat, and porn.

Wednesday, June 28 2006

Dear Adobe,

Great job getting Flash Player 9 out the door, after absorbing Macromedia. Pity it doesn’t install correctly on a Mac.

I ran the installer, and it launched Safari when it finished, taking me to your “gee, isn’t Flash cool?” page. Which didn’t load, because I didn’t have Flash. So I ran the installer again. And again. Still no Flash.

So I deleted the old copy from /Library/Internet Plug-Ins, and ran the installer again. It failed, because it didn’t have permission to write to that directory. Yes, it’s true; when you want to create files that require administrative privileges, your installer actually has to request administrative privileges. It can’t just hope that the user is logged in as root, or has foolishly made that directory world-writable.

Tuesday, August 29 2006


Current stats across all my email accounts: 115 spams/day, 30 of them caught by Mac Os X’s Junk filtering, 85 ended up in my Quarantine folder (people who aren’t in my address book or email history).

Best news: 0 false positives in the most recent ten days worth of email. By its nature, the Quarantine folder will occasionally contain real email from someone who’s trying to reach me for the first time, but I have a variety of other rules that do a pretty good job of detecting common cases. I also create custom addresses for every new vendor and site membership, and a monthly disposable address for this blog, and all of those get filtered into special folders.

I haven’t set up anything more sophisticated, largely because the problem is under control. About twice a month, something makes it into my real Inbox, and that’s not worth the effort.

Thursday, August 31 2006

Stupid Apple Tricks

YouTube stopped working a while back on my Quad G5. Videos played, but with no sound. All other forms of video worked fine, and the exact same video would work if I downloaded it manually and ran it from a different FLV player.

I reinstalled Flash, I wiped caches to make sure I didn’t have an old version of the YouTube flash player, grabbed the latest version of Firefox and tried it there, etc, etc. No change. It wasn’t a big problem, since I usually don’t surf from that machine, but I finally spent a few minutes chanting Google incantations and found the answer:

Run the Audio MIDI Setup utility and change the Audio Output Format back to 44100 Hz

Saturday, September 30 2006

By golly, I think this spam isn’t spam

Going through my Quarantine folder, I found something that had all the hallmarks of spam: a hotel reservation confirmation for a city I’ve never visited (Orlando), sent to an email address I would never have handed out for that purpose (, with graphics and links coming both from the real site and elsewhere.

When I read the raw source of the message, though, I started wondering. All the Marriott links actually go to the Marriott web site. Everything is spelled correctly, with no attempt to hide spammy keywords. The headers all look legit. Even the links to elsewhere go to legitimate travel-related sites.

Then I remembered My Evil Twin, who, by the way, lives in Boca Raton. I guess the other Jay Greely and his lovely(-sounding) wife are off for a little R&R, and they mistyped their .Mac email address again.

Thursday, October 19 2006

If IE was pronounced “aiyee!”…

…is WIE pronounced “whyyyyyyy?”?

Quick notes based on running the new IE7 under Parallels on my Mac:

  1. It appears that if you accept the default anti-phishing behavior, a record of every new website you visit is sent to Microsoft, omitting only the arguments passed to CGI scripts. “Sanitized for your protection,” of course, but my, what a powerful market-research tool you’ve got there, Grandma.
  2. It finally supports transparency in PNG images, so the logo for my blog renders correctly for the first time.
  3. It still constructs phony italics for fonts that not only don’t have them, but shouldn’t (cf. the Japanese song titles in my sidebar).
  4. That stupid little print/view/save/molest toolbar no longer pops up on every image in your browser.
  5. Still no support for :hover styles in CSS.

More later, if I find a reason to care…

[Update: The WIE team claims that :hover now works, but I can’t seem to set background-color with it. Eh, “standardization; who needs it?”]

[Update: Ah, it’s not that :hover doesn’t work, it’s that some CSS changes don’t get noticed by the renderer. I’ve been playing with jquery recently to improve on my pop-up furigana-izer, and using JavaScript to add a new CSS class to a SPAN doesn’t do the right thing, either; in IE 6 & 7, I have to explicitly add the background color to each object.]

Wednesday, November 15 2006

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: <a href=””>email</a> with something like this: <a mailto=”i4t p5au l@4 h6p 6la 7wbt” href=”“>email</a>, 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:

(Continued on Page 2632)

Thursday, December 28 2006

Comment spam? Here?

It’s been a while since someone was stupid enough to go to the trouble of coming up with a script for spamming my comments. Stupid not just because I’m small-fry who can’t significantly affect his client’s page-rank, but also because my comment pages are not indexed by any search engine.

So, a quick delete from comments where author is like “%phenter%” or author is like “%roulet%” combined with a quick pfctl -t badlife -T add, and the problem goes away again.

If I get another attack in the next week, I’ll change the comment URL and add the current one to the insta-ban trap in robots.txt. That’s the most I’ve ever had to do to maintain several months of trouble-free open commenting.

[Update: sigh, add “%viag%” and “%ltram%” to the expression list, and to the banned IP list. Time for a new disguise, I suppose; I’d hate to go off to Vegas and let some moron think he’s accomplished something clever.]

Sunday, December 31 2006

Fun with set-top boxes

This morning I found myself with the urge to search for two of the best stories about the early days of WebTV. Everyone involved has long since moved on to greener pastures, so I was sure at least one person would have spilled the beans.

No. Google searches for both “webtv reindeer games” and “webtv launch day fuck” return nothing relevant. Perhaps it’s time for Rory to update his blog with a tale of The Good Old Days.

Tuesday, January 16 2007

Gee, that’s funny

I own a Lexus. I bought it at Lexus Monterey. I take it there for service. Sometimes I schedule service online, at their web site, but I’ve never given them an email address. Lexus does have one email address for me, but it was a throwaway for a sales event, and it’s never been used since.

While cleaning out the folder that SpamSieve tosses obvious spam into, I found a message from Lexus Monterey, containing details of my car and mileage, reminding me to schedule appropriate service.

It was sent to an email address that has never received anything but spam. I don’t even know who I originally gave it to, but it definitely wasn’t Lexus (and, by the way, not Calumet Photo, who also sends things to it…). For years, I had a special blackhole rule for that address, because it was the source of 40% of my spam.

Lexus Monterey didn’t send this mail. did, and they helpfully set up an “account” for me, including both username and password in the mail.

Now why would Lexus send me to a third-party service-scheduling site, when they have their own? And why would they buy a mailing list from a spammer and cross-reference it with their customer database? Hmmm…

Monday, January 22 2007

Now “astroturf” means “anyone I don’t like”…

The often amusing, usually gullible technophiles at BoingBoing have struck again, with Cory Doctorow’s stunned discovery that an organization that’s been attacking PETA for years receives funding from frequent PETA targets.

Never mind the factual truth of their claims about PETA and other lifestyle lobbies, or that PETA itself is about as “grassroots” as a concrete driveway; Cory Doctorow has done a “little digging”, and determined that The Center for Consumer Freedom has (gasp!) industry ties (oh noes!), and therefore must be a tool of The Man, spouting nothing but lies.

Welcome to 1997, Mr. Doctorow. Here, have a 30,000-calorie sandwich and a clue.

Saturday, February 10 2007

Dear AriZona Beverage,

Okay, I’m on your web site. I’m in your online store. I’m even in your shopping cart, preparing to make a purchase. So why are you still hitting me with animated banner ads for your products? Do I seem somehow unmotivated as a customer?

Wouldn’t it be more useful to advertise your products on other sites? Perhaps if you informed people of the full range of your product line, distributors and retailers would actually order more than the five flavors they usually stock (only two of which are drinkable).

Given the glucose tolerance, I would cheerfully drink myself to death on your Lemon Tea and Arnold Palmer, but these days I need the Splenda-sweetened stuff, which I simply can’t buy in stores. I’d really like to try it once before ordering a case from an online dealer I’ve never heard of before (like the one whose employees seem to have been recruited from a phone-sex service).

Monday, March 26 2007

Favicons are evil, but I have one anyway

Why? Because if I have one, each visitor will request it once and cache it indefinitely. If I don’t, they’ll ask for it again and again (with some browsers, every time they load a page), crufting up my logs.

Monday, April 2 2007

If I’m paying for hotel broadband…

…I expect it to actually work correctly. The Luxor in Las Vegas fails this test. They redirect any outgoing port 25 connections to their server, which silently discards the messages, and they do something peculiar to SSL traffic that made it impossible for me to establish a secure IMAP session with my server. The server showed a connection attempt, but never saw the username and password, and my mailer took a long time to time out.

Monday, April 9 2007

“Blogger Code of Conduct”

Lots of folks are piling on Tim O’Reilly for his efforts to create a kinder, gentler blogger. While my initial reaction consisted of three words, ending in “yourself”, I thought I’d actually read it and see if he says anything new or interesting on the subject. Short version: “can’t we all just get along?”.

1. We take responsibility for our own words and for the comments we allow on our blog.

Too wimpy. I take ownership of my words, and control over whether anyone else can say anything at all here. They’re responsible for what they say; I just decide if it annoys me enough to hit the delete button.

We are committed to the “Civility Enforced” standard: we will not post unacceptable content, and we’ll delete comments that contain it.

We define unacceptable content as anything included or linked to that:
- is being used to abuse, harass, stalk, or threaten others
- is libelous, knowingly false, ad-hominem, or misrepresents another person,
- infringes upon a copyright or trademark
- violates an obligation of confidentiality
- violates the privacy of others

As much as I might agree with the individual points, I wouldn’t describe them all as “uncivil”. Some are unethical, some are criminal, but there’s a whole lot more to being “civil” than refraining from crimes and misdemeanors. Perhaps a section on “not redefining commonly-understood words” should be appended to this Code.

2. We won’t say anything online that we wouldn’t say in person.

I will, and I’m not even one of the many bloggers who obscures their identity to avoid some form of retaliation. There are things I’ll say here that I won’t say on the street, and things I won’t say here that I’ll cheerfully say to someone standing next to me at the local adult bookstore. Different places, different audience, different speech.

3. We connect privately before we respond publicly.

Once upon a time, I followed the ancient Usenet maxim “take it to email”. But that was long ago and far away, and besides, the wench is dead. Despite the common requirement for a valid email address on most comment forms, these days most people neither want nor expect an email response to a public comment or blog posting. And to be quite blunt, I often don’t want to talk privately to someone who’s being an ass.

There is one and only one person who’s been banned from commenting on this blog, and he was such a persistent nuisance that I simply blocked all of his university’s public labs in my firewall rules, completely cutting off everyone who used them from my words and pictures. I had no interest in discussing this with him; I made one public statement on the matter and he didn’t change his behavior, so I quietly erased him from my universe.

4. When we believe someone is unfairly attacking another, we take action.

They’re adults, let them deal with their own problems. If I don’t have any interest in either party, it’s none of my damn business.

5. We do not allow anonymous comments.

I do. I’m not fond of falsely-attributed comments, however, and reserve the right to decide whether or not you’re who you claim to be. Actually, I reserve all rights; it’s my site, after all.

6. We ignore the trolls.

[I disbelieve]

My favorite part is the two “certifiably something-or-other” graphics, which I’ll cheerfully swipe and snicker at:

There's a new sheriff in townFree Speech Zone

I think these images are misleading and, frankly, silly. I think they should more openly reflect the desired audience by replacing the badge with a ballgag and the dynamite with goatse.

Tuesday, May 29 2007

We, uh, “fixed the glitch”

I hate it when fixing one problem breaks something else, especially when it’s subtle.

A few weeks ago while testing our new IPSec VPN connections to external partners, we discovered that I could ssh/scp through the VPN from my Macs, but none of our Linux boxes could, and another Mac running allegedly-identical software had horrible performance issues.

The fix was a change in the OpenBSD firewall that also served as the IPSec endpoint: scrub reassemble tcp. The problem went away like magic.

Today, we found out that there’s a single external partner we have to post some data to via an HTTPS connection, and it worked fine from machines outside of our firewall, but failed about 50% of the time from all the machines inside our firewall.

…except for my Macs, which worked 100% of the time. I fired up a CentOS 5 Parallels session on one of them, and it failed 50% of the time. Surely it couldn’t be…

It was. Remove the scrub line, and the HTTPS post worked from everywhere, but now my IPSec VPNs were hosed again.


scrub from any to $IPSEC1_INT reassemble tcp
scrub from any to $IPSEC2_INT reassemble tcp
scrub in

The root cause appears to be the partner’s IIS server failing to properly implement RFC 1323, causing some of the fragmented packets to be rejected during reassembly.

Sunday, July 8 2007


Restoring Chizumatic’s sidebar to its rightful place was a task worth pursuing, but since the Minx templates generate tag soup, standard validation tools produced too many errors to help much (W3C’s produced ~700 errors, compared to this page’s 16, 14 of which are parser errors in Amazon search URLs).

So I tried a different approach:

while (<STDIN>) {
    next unless /<\/?div/i;
    if (@x = /<div/gi) {
        print "[$l] $. ",@x+0," $_\n";
        $l += @x;
    if (@x = /<\/div/gi) {
        print "[$l] $. ",@x+0," $_\n";
        $l -= @x;
print "[$l]\n";

Skimming through the output, I saw that the inline comments started at level 6, until I reached comment 8 in the “Shingu 20” entry, which started at level 7. Sure enough, what should have been a (pardon my french) </div></p></div> in the previous comment was just a </p></div>.

[Update: fixing one bad Amazon URL removed 14 of the 16 validation errors on this page, and correcting a Movable Type auto-formatting error got rid of the other two. See, validation is easy! :-)]

Wednesday, September 19 2007

What do we do?

I guess we do this:

Friday, October 26 2007

Life among the Internets

I’m pleased that I’m not the only one whose response to Gizmodo’s latest round of “wacky, mysterious Japan” articles was “could you at least tell us the name of the store?”. At least with this one, one of the pictures had a URL in it, but it’s a chain with a number of locations, not all of which have a robot department.

I’ve been tracking down cool stores for the last few days, and it’s just peculiar to see people who are online and plugged in failing to do simple things like, oh, link to their web site, or for the advanced student, find them on Google Earth. The directions to the various Hello!Project stores read like treasure maps: “after you pass through the arch, take fifty paces east, enter the alley, follow it to the end, then back up ten paces and turn left. Arrr. Me hearties.”

Monday, December 17 2007

Powered by Amazon S3

I’ve been thinking of redoing my domains to cut down on hosting costs and bandwidth, and my back-of-the-envelope calculations for Amazon’s S3 storage service look pretty good. So, I’ve just moved my Japan vacation pictures and thumbnails over, and I’ll see what sort of bill it produces this month.

This has the side-effect of making my currently-photo-heavy site load a lot faster for everyone.

Thursday, January 31 2008

Form hell

I didn’t know that the USPS had established a list of 208 standard street name extensions. Until today, I wouldn’t have imagined that anyone would consider importing that list into an HTML form as a pulldown menu.

The worst part is, there’s actually a reason for it…

Friday, February 15 2008

Epic Fail

Amazon’s recommendation system just blew a gasket. Here’s proof:

(Continued on Page 2915)

Tuesday, February 26 2008

Amazon recommends

I’ve temporarily managed to increase the sanity of my Amazon recommendations. Unfortunately, they’re still useless.

Page 1: 8 Destroyer novels, 4 Girls Bravo manga, 3 Grenadier manga.

Page 2: 2 Ai Yori Aoshi Enishi DVDs, 1 Ai Yori Aoshi manga, 2 Destroyer novels, 2 Kaleido Star New Wings DVDs, 2 UFO Ultramaiden Valkyrie DVDs, 2 Nadia DVDs, Castle in the Sky DVD (which I hadn’t marked owned yet), a Hyper Police manga, and disc 1 of Magikano.

Page 3 has another half-dozen Destroyer novels, some more anime DVDs, and some more manga. Ditto page 4. And most of page 5. The first non-anime, non-manga, non-Destroyer item is a Lacie external hard drive at #72. The second is a Logitech universal remote at #79. The list ends at #85, with only three more non-anime, non-manga, non-Destroyer items. Those final three items are the ones I’d be most likely to actually buy, because I’ve already got enough anime, manga, and Destroyer novels to last me for quite a while.

Amazon Japan, on the other hand, has a completely separate database, and I’ve been careful not to over-train it. Its knowledge of my interests and possessions is much narrower, and as a result it offers me hundreds of things that I might want to buy at some point. The first few pages are heavily oriented toward Hello!Project merchandise, but that’s the bulk of what I’ve actually bought from them in the past. The big difference is that there are things I actually want on both page 1 and page 31.

The last few items on page 43 are pretty weak, but page 42 had five DVDs of pretty girls in bikinis, one of which I found rather appealing. Advantage: Amazon Japan.

The net result is that the site I’ve bought more from and rated a wider variety of items on offers me a much narrower selection of items to purchase in the future, and mixes them up poorly, so that most of its recommendations are for the items it has the most of, which are the items I’m least likely to buy that many more of. There are over 120 Destroyer novels, and the only way to keep them from dominating my list is to claim I’m not interested in any of them. Which isn’t true, in the long run, and negatively impacts future recommendations if I do it.

And, sadly, I can’t clean up my “not interested” list, because Amazon’s tools weren’t written to handle 6,000-item lists. Their official recommendation is to create a new account, which just isn’t worth it.

Sunday, March 2 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.

Tuesday, March 18 2008

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…]

Friday, March 21 2008

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.

Wednesday, March 26 2008

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.]

Saturday, April 5 2008

Safari Cookies

Safari now uses a completely different method of storing cookies, which unfortunately means that the only decent management tool I ever found, Cocoa Cookies, doesn’t work any more.

So I rolled my own:

(/usr/libexec/PlistBuddy -c print \
~/Library/Cookies/Cookies.plist |\
awk ‘/Domain = / {x++;print x-1,$0}’ |\
awk ‘!/|amazon/{print $1}’ |\
sort -rn | sed -e ‘s/^/delete :/’; \
echo save;echo quit) |\
/usr/libexec/PlistBuddy \

Note that you really don’t want to run this as-is, and probably want something more robust than a shell one-liner anyway. The bits that matter are:

  1. run “/usr/libexec/PlistBuddy -c print” to dump all your cookies in an easily-parsed format.
  2. The array of cookies is zero-based.
  3. The array shrinks as you delete things from it with “delete :N”, so you want to start at the end and work forward.
  4. The original file isn’t altered until you send a “save”.
  5. Safari seems to write this file out whenever you get a cookie, and notices when it’s changed on disk.

Wednesday, April 16 2008

Dear Google,

I like Google Earth. I even pay for the faster performance and enhanced features. A few things, though:

  • Why can’t I keep North at the top of the screen? I hate constantly double-clicking the “N” in the gaudy navigation scroll-wheel.
  • Why do you auto-enable new layers in my view, so that, for instance, I suddenly see every golf course on the planet, even though I had that entire category disabled?
  • Why can’t I switch between different sets of enabled layers?
  • Why is the “Google Earth Community” layer such a dumping ground of unsorted crap? For instance, what value does this have to anyone who’s not an airline pilot? Or this, where points scattered around the globe are all labeled, “here’s my collection of 4,728 placemarks”.

I’m sure I can come up with more if I think about it for a bit…

[update: ah, press ‘n’ for north, ‘r’ for a total view reset, and then figure out how to fix all of the KMZ files that were broken by the upgrade]

More fun with furigana and jQuery

When I first started playing with pop-up furigana, I was aware of the official method of specifying them in HTML, using the RUBY, RB, and RT tags. They’re only supported in IE, though, and the standard half-size presentation simply doesn’t make sense for the low resolution of displays, even with good anti-aliasing.

Some folks are using them anyway, like the University of Virginia Library Japanese Text Initiative, which is another good source of free literature. If you’re not running IE (or the Firefox extension that they say works), the furigana degrade relatively gracefully into full-sized kana in parentheses following the glossed word, with no indication of how many of the preceding kanji are being glossed.

Tonight, I had the sudden urge to adapt my system to work with the will-eventually-work-in-other-browsers RUBY tags. This turned out to be pretty easy, for the simple case. I just added this code right before my gloss script:

	var rb=$(this).children("rb").eq(0).text();
	var rt=$(this).children("rt").eq(0).text();
	var gloss=$('<span class="gloss">' + rb + '</span>');

Friday, April 18 2008

Ruined for life

After far too many years online, I was initially unable to parse the following photograph correctly:

(Continued on Page 2979)

Tuesday, May 27 2008

[concept] A tech blog that doesn’t suck

  1. The use of marketing phrases to describe the release of a product shall be forbidden. In particular, the word “drop” shall be reserved for articles announcing that a product has been removed from the market.
  2. Press releases for objects which are not only unreleased, but nonexistent, shall be clearly labeled “concept art,” “design project,” “spec work,” “wishful thinking,” “investor pitch,” “violates second law of thermodynamics,” or some other appropriate, factual description.
  3. Press releases that contain neither release dates nor specifications shall be considered to fall into one of the above categories.
  4. Factual information contained in press releases shall be clearly presented above the fold.
  5. Embedded links to manufacturers and products shall go directly to the most appropriate page on the most official source available at the time. The practice of burying the source to generate additional ad impressions shall not be tolerated.
  6. Contributors shall demonstrate at least a grade-school grasp of English composition.
  7. Except when discussing products and services specifically designed for adult-only audiences, contributors shall write for a general audience, not a locker room.
  8. Contributors and editors shall not suffer a shill to live.

Tuesday, June 3 2008

Dear Amazon,


Friday, July 4 2008

No, I did not know that home page: “Did You Know Sells NCAA Garden Gnomes?”

No, nor did I know that they sold matching Cheerleader Garden Gnomes.

Sunday, July 13 2008

Dear Spammers,

Thank you for (still) not learning to make the carpet match the drapes.

I was idly scrolling through my junkmail folder this evening (looking for more entertaining Japanese spam…) and came across the following:

Subject: Cute dogs massacred in Texas

Alex Rodriguez hot steamy adulterous pics with Madonna

Using Opera’s revolutionary e-mail client: http://(removed)

I understand trying to trick people into reading your message with a “newsworthy” subject line, but you really ought to try to make the body match, or you’ll lose that precious click-through (necessary to infect Windows boxes with your Russian botnet code).

By the way, thanks for sending out English-language spam encoded in KOI8-R; it’s a useful clue for anti-spam tools.

[Update: no, seriously, you’re killing me here. Subject: “Charred bodies found near White House”, Body: “Have a break, have a Kit Kat - free online chocolate bar giveaways”. Also, Subject: “Hilary Clinton vows revenge”, Body: “The best places to shag in the wild, all listed right here.” Do. Not. Want.

By the way, I see Charter Cable still isn’t blocking outgoing SMTP]

Monday, July 14 2008

Dear Amazon Japan,

Please don’t send me the “complete your collection!” email for something when you haven’t yet shipped out the first items in the set. In particular, when I’m waiting for you to ship volumes 1 and 2 of a series, don’t send email about volumes 10 through 15.

Thursday, August 7 2008

A club that will have me as a member…

I would guess that somewhere in the neighborhood of 100,000 people have been qualified to wear this t-shirt. Approximately 99,950 of them paid for the privilege of membership, and the other 50 would have gotten the joke. Of those, perhaps a dozen will still remember it.


[and no, it’s not actually funny unless you’re one of those dozen, so I’m not going to explain]

[Update: Rory suggested a slight modification to improve the reference, and further decrease the number of people who’ll get it]

Tuesday, August 19 2008

“Then leave the rest to Omakase!”

I just set up an Amazon affiliate account, for those occasional links to cool products. After completing the application, one of the features was:

Omakase links will show an Associate’s visitors what they’re most likely to buy based on Amazon’s unique understanding of the site, the user, and the page itself.

I don’t know that I’ll use it any time soon (first comes the way-overdue server upgrade and site redesign), but at least it’s thematically appropriate.

Thursday, August 21 2008

Dear Amazon,

I am only interested in women’s dresses as gift wrap. I don’t want to buy any, thanks.

Amazon Dressup

Thursday, September 4 2008

Upgrading Movable Type

The machine this site runs on hasn’t been updated in a while. The OS is old, but it’s OpenBSD, so it’s still secure. Ditto for Movable Type; I’m running an old, stable version that has some quirks, but hasn’t needed much maintenance. I don’t even get any comment spam, thanks to a few simple tricks.

There are some warts, though. Rebuild times are getting a bit long, my templates are a bit quirky, and Unicode support is just plain flaky, both in the old version of Perl and in the MT scripts. This also bleeds over into the offline posting tool I use, Ecto, which occasionally gets confused by MT and converts kanji into garbage.

Fixing all of that on the old OS would be harder than just upgrading to the latest version of OpenBSD. That’s a project that requires a large chunk of uninterrupted time, and we’re building up to a big holiday season at work, so “not right now”.

I need an occasional diversion from work and Japanese practice, though, and redesigning this blog on a spare machine will do nicely. I can also move all of my Mason apps over, and take advantage of the improved Unicode support in modern Perl to do something interesting. (more on that later)

(Continued on Page 3098)

Sunday, September 21 2008

Dictionaries as toys

There are dozens of front-ends for Jim Breen’s Japanese-English and Kanji dictionaries, on and offline. Basically, if it’s a software-based dictionary that wasn’t published in Japan, the chance that it’s using some version of his data is somewhere above 99%.

Many of the tools, especially the older or free ones, use the original Edict format, which is compact and fairly easy to parse, but omits a lot of useful information. It has a lot of words you won’t find in affordable J-E dictionaries, but the definitions and usage information can be misleading. One of my Japanese teachers recommends avoiding it for anything non-trivial, because the definitions are extremely terse, context-free, and often “off”.

(Continued on Page 3125)

Tuesday, September 23 2008

More toying with dictionaries

[Update: the editing form is now hooked up to the database, in read-only mode. I’ve linked some sample entries on it. …and now there’s a link from the dictionary page; it’s still read-only, but you can load the results of any search into the form]

I feel really sorry for anyone who edits XML by hand. I feel slightly less sorry for people who use editing tools that can parse DTDs and XSDs and validate your work, but still, it just strikes me as a bad idea. XML is an excellent way to get structured data out of one piece of software and into a completely different one, but it’s toxic to humans.

JMdict is well-formed XML, maintained with some manner of validating editor (update: turns out there’s a simple text format based on the DTD that’s used to generate valid XML), but editing it is still a pretty manual job, and getting new submissions into a usable format can’t be fun. The JMdictDB project aims to help out with this, storing everything in a database and maintaining it with a web front-end.

Unfortunately, the JMdict schema is a poor match for standard HTML forms, containing a whole bunch of nested optional repeatable fields, many of them entity-encoded. So they punted, and relied on manually formatting a few TEXTAREA fields. Unless you’re new here, you’ll know that I can’t pass up a scripting problem that’s just begging to be solved, even if no one else in the world will ever use my solution.

So I wrote a jQuery plugin that lets you dynamically add, delete, and reorder groups of fields, and built a form that accurately represents the entire JMdict schema. It’s not hooked up to my database yet, and submitting it just dumps out the list of fields and values. It’s also ugly, with crude formatting and cryptic field names (taken from the schema), but the basic idea is sound. I was pleased that it only took one page of JavaScript to add the necessary functionality.

[hours to debug that script, but what can you do?]

Thursday, October 2 2008

Realistic dreams

Last night I dreamed I was looking something up in Wikipedia.

The page had been vandalized, and was now about various sex toys and how they’re used.

Monday, October 6 2008

Credit crunch?

Last week I signed preliminary paperwork to refinance my house, saving about $300 per month. Tonight, my mailbox contained letters from seven lenders offering to beat the deal offered by CitiMortgage. Also the usual weekly credit-card offer from Capitol One, and two “helpful reminders” from my current credit-card companies about their extremely low balance-transfer rates.

It seems when banks can’t figure out if other banks are worth lending money to, they fall back to something more reliable: gainfully-employed consumers who pay their bills on time.

Thursday, October 30 2008

1. Read spam. 2. Click on link. 3. Profit?

[Update: …and the real Network Solutions sent out notices warning about the scam today, which suggests it was pretty well-distributed]

[Update: already another one today, to a completely different address, also not associated with any domain registrations. This one came from a German IP address that’s pretending to be Yahoo, with disguised links leading to a different Russia-based domain owned by the same “Shestakov Yuriy”, through yet another Chinese registrar. Long ago, I set up a special filter rule for anything coming from a .biz domain; I think it’s time to apply the same rule to any mention of the TLD, in email or browser windows]

This is one of the more transparent scam emails I’ve seen recently.

  1. It’s going to a randomly-scraped address that has no connection to any domain registration.
  2. It doesn’t mention any domains that the recipient owns.
  3. It claims that this unnamed domain’s registration has lapsed, and as the former owner, the recipient is entitled to a percentage of the sale price to someone else.
  4. It insists that the only way to claim the money is by clicking on the link (and, of course, filling in a great deal of personal information).
  5. The link is labeled “renew your domain”, and falsely claims to point to Network Solutions, with “” (Russian “commerce” domain set up through a Chinese registrar) hidden in the HTML.
  6. There’s nothing in the link to identify an individual recipient; you won’t even be greeted by name if you’re dumb enough to click it.
  7. According to the headers, it allegedly originated on a machine in Australia that happens to have an IP address in Turkey.

I figure 5% of what they send out will slip past spam filters, 5% of the people who see it will click the link, and 1% of those will be stupid enough to enter the information necessary to have their identities stolen. If they sent out 100,000, that’s two identity thefts. And they probably sent out a lot more than 100,000.

(Continued on Page 3158)

Friday, November 7 2008

Okay, Amazon, you got me this time

This is a recommendation I can accept:

Open and die!

Wednesday, November 19 2008

Dear random anime song lyrics site,

Using a forced refresh inside a NOSCRIPT tag combined with Javascript that disables text selection and right-click is not a copy-protection system. It’s 30 seconds of mild annoyance, at best.

You see, browsers have this remarkable function called “save as”…

Thursday, December 11 2008

From Moskau to Berryz

It began with this, discovered through an email that led from failblog to Engrishfunny:

This was not some ancient one-hit wonder, cruelly abused by Youtube. No, Dschinghis Khan had quite a success after Eurovision, and they’re still big in Japan. How big?

This big:

(Continued on Page 3189)

Sunday, January 4 2009

Dear Gizmodo,

Virtually every use of “teed off by” on the web is in reference to someone becoming annoyed by golfers. Given that, perhaps you should reconsider this bit of release-euphemizing:

“Lenovo’s IdeaPad Y-series consumer notebooks are all going 16:9 widescreen, teed off by the 16-inch Y650, …”

I suppose I’d get a bit teed-off if my sibling had 16 inches, too…

Sunday, February 1 2009

Pajamas fall, everyone dies

As the leaders of Pajamas Media abandon their ad network and focus on their new streaming-media venture, it’s important to remember that they tried to tell their members that it wouldn’t last:

“…the next phase in the democratization of ideas has begun”

Sure enough, it was just a phase.

Wednesday, February 4 2009

Dear Amazon,

I’m just not seeing the connection here.

Amazon Shower Fail

Saturday, February 7 2009

Dear Amazon,

Seriously, where are you getting these associations?

Pyrex Babydoll

Monday, February 9 2009

Abuse of Google

One of the other students in my reading class has a habit of typing in his material really small with no space between lines, in a gothic kanji font. His vocabulary lists are done the same way, and have some other formatting quirks as well.

Several weeks ago, he brought one in that runs to a page and a half of small print, plus an equal amount of vocabulary, and he’s showing signs of becoming a bit cranky that we keep passing it over in favor of other material. He’s a nice guy, if a bit intense, so I figured I’d take a stab at it this weekend, so I’d be ready to read the first few paragraphs out loud at the next session.

Yeah, well, screw that idea. With no room to write in notes or furigana, reading the old-fashioned language of a classic fairy tale was just not worth it. So I went looking for an online version that I could print out in a more useful format.

The story is “Tengu no Kakuremino” (“The Goblin’s Invisibility Cloak”), and I found at least a dozen versions of it, from the modernized to the dumbed-down, but only one seemed like a very close match. Problem was, the hosting site just wouldn’t let me read it.

The site is, and it’s not available outside of Japan. It’s apparently a free e-book site for cellphone users, and while they let Google in for indexing, their PHP code rejects attempts to retrieve the complete page. No problem, says I, clicking on the ‘cached’ button, but they had a surprise in store for me: Google’s cache won’t show me the second page.

I know they’ve got it, because I can search for text that appears only on the second page, and see it highlighted with a sentence or so of context. Hmm…

So I’m extracting it a sentence at a time with carefully defined searches. This is still faster and easier than trying to read my classmate’s tinyfonts version and type it back in. And I’ve already caught four errors in his version, so now we have another good reason not to read it this week…

[Update: my classmate got his version from, a for-pay podcast, and apparently they never noticed the mistakes when they were recording the story.]

[Update: this story is most definitely in the public domain, so there’s no reason for me not to post the reassembled text below the fold… (formatting will be cleaned up later)]

(Continued on Page 3255)

Monday, February 16 2009

“Great idea!”

“Hey, that’s a really cool 45K JPG that’s perfect for the front page of our manga review site! I bet this guy will really appreciate the traffic he’ll get when we link directly to it!”

“Hey, why is the picture now upside down, backwards, grayscale, and low-resolution? And why did it disappear when I reloaded the page? And why can’t I see his website at all any more? It’s almost like he’s completely rejecting any traffic from anyone who ever viewed that picture on our site! I can’t even ping his server!”

[Update: “Hmmm, I can reach his site from a different machine, but when I try to load our home page that still has the link to his copy of the picture, I get this funny error code. I don’t speak any English, so can someone tell me what ‘403 some bozo deeplinked’ means?”]

Wednesday, February 18 2009

Yep, that ought to be secure!

Web site account activation system:

  1. Ask new user for name, email address, password
  2. Send confirmation email containing:
    • carefully randomized confirmation URL
    • name
    • email address
    • password (helpfully converted to lowercase for ease of use)
  3. Provide no method of changing email address or password

(site name omitted because no one has any reason to give them a credit card anyway)

Sunday, February 22 2009

Dear Amazon,

You’re not fooling anybody, you know.

“Because you bought a pocket tripod, we think you’ll be interested in a protective case for Kindle 2. Oh, and because you said you owned VMware Fusion, we’re sure you’ll like this leather cover for Kindle 2. And now that you’ve bought that new electric toothbrush, isn’t it time to order Kindle 2?”

Monday, February 23 2009

Dear Amazon Japan,

I don’t care what I’ve bought from you in the past, just trust me on this one: I am not interested in purchasing a comic book with the title 「ぶっ☆かけ 3」. Don’t ask, don’t offer. Do. Not. Want.

[Update 4/12: I hadn’t even noticed at the time, but this series is from the mangaka responsible for Eiken, which only increases my lack of interest…]

Friday, March 13 2009

Lazy Copy-Protection Scheme #37

Fans of Japanese music often scour the net looking for printed lyrics. Many of the sites that host them “protect” their content from being reprinted elsewhere, usually with lame Javascript hacks.

The oft-reviled goes high-tech, wrapping lyrics in a Flash app. I’d never looked into the specifics of their method, because everything I was looking for was available somewhere else, but today I had a song from 1968 that was obscure enough that they were the best choice.

I’m a fairly clever fellow, says I, so surely I can use one of the many free SWF-decoding tools to crack this open, even if it’s compressed and obfuscated. So I downloaded the Flash-encoded lyrics, and, just on a whim, opened them up as a text file. I found this:

^A^@C^B<FA><FA><FA>^M^L^A^@^D^@^DUTF8^@^@^B^@^? <E0>^C^@^@^B^@^?<FD><84>$^_<F6>





Yup, stopped me dead in my tracks, you did. That’s some fine security work there, Lou.

(the version of the song I’m interested in is from the out-of-print Hello!Project album Folk Songs 4; Kemeko no Uta is sung by a lovestruck guy who shyly confesses his feelings to Kemeko, only to be shot down brutally in the last verse. The amusing bit in this version is that the last verse is sung by Kei Yasuda, whose nickname is, of course, Kemeko)

Tuesday, April 14 2009

Editing: it’s not just for dead trees

Latest headline on Slashdot:

Mozilla Mulls Dropping Firefox For Win2K, Early XP

Took me a moment to parse that the way they intended…

Monday, April 20 2009

Amazon recommends…

I seem to have finally gotten my Amazon profile into a reasonable state, because the top 15 items it recommends for me are: 6 books on grilling, 7 fan-service anime DVDs, a Scalzi novel, and a Grimjack collection.

It won’t last, I know. A few days ago I had to delete 30 “classic horror” films from the list, because my purchase of the comedy film Dead Time Stories convinced it that I loved slasher flicks.

Tuesday, April 28 2009

Dear Amazon Associates Program,

Report-processing FAIL:

You are receiving this email because our reports indicate that you have sent users directly to, or through paid search advertisements that were displayed to users who searched on keywords which you bid upon and purchased in search engine keyword auctions.

Um, no, I haven’t. It would never have occurred to me to try, and I wouldn’t have expected it to work very well. Did you maybe get your report query backwards and send this to all the associates who didn’t pull this trick? Or just to everyone, on the assumption that 94.72% will just ignore it?

Saturday, May 16 2009

It was an innocent search, honest…

I’m transcribing lyrics from an album I found in the discount bin at Kinokuniya, 草原の人. It’s the soundtrack from one of Hello!Project’s musicals, featuring Aya Matsuura and Melon Kinenbi, and the songs are short and mostly missing from the Project!Hello lyrics site.

I’ve done this a few times before, and the hard part is figuring out the names of the songwriters and arrangers. They’re usually printed smaller than the lyrics, and my usual electronic dictionary doesn’t have names. I can get placenames and family names on my Sharp Papyrus, but first names are tricky, and in one case, the reading was so unusual that Enamdict didn’t even have it (知枝 as かずえ instead of ちえ or ともえ).

My fallback solution in such cases is Google, doing mixed searches of the kanji, kana, and romaji until I find a person who appears to be in the correct business. Instead, I found two partial name matches in an adult video titled 巨乳携帯ショップ (NSFW! NSFW!). It’s not what I was looking for, being the erotic adventures of the busty staff of a cellphone store dedicated to support and アフターサービス, but it’s amusing to come across. By the way, the store’s called PAIMOM, from the slang phrase パイ揉み.

(I wouldn’t buy it, because Japanese porn tends to focus on domination, but I might look up the pretty girls in the cast to see if they’ve done anything less explicit)

[Update: Amazon has one that is trending toward five-bladed razor territory for fetish overload: 巨乳女子校生中出し, Volume 4]

Monday, July 6 2009

Dear Amazon,

Congratulations on your new implementation of Usenet. That is, “FAIL”.

The Product: Sylvania 20682 CF13DD/E/827 Double Tube 4 Pin Base Compact Fluorescent Light Bulb

The “active discussions in related forums”:

  • (health) My daughter has ulcerative colitis…help!
  • (health) how do you get your wife to lose weight?
  • (health) Is Spanking a lovable or harmful form of disipline?
  • (health) Are Gays and Lesbians a future endangered species?
  • (health) How come it burns when I pee?
  • (home improvement) Are energy saver halogen bulbs green enough?
  • (home improvement) What your local contractor doesn’t want you to know.

Wednesday, July 8 2009

Dear Akihabara News,

I know you’re in it for the ad impressions and referrals to your horribly-overpriced online store, but when you’re retyping a press release for a new product announcement, could you at least identify the product correctly and link to the goddamn press release. Especially when it includes useful information like a release date and a price.

For instance, today’s little gem is the new Buffalo USB-powered 3-port Ethernet Switch. Note the link to the press release. Note the fact that I correctly describe it as a switch, where you mistakenly called it a hub. This is a difference that may matter to customers.

I’m sure you’ll be selling it at an 80% markup in your store soon, so here’s the Amazon Japan link that’s taking preorders for 15% off with free shipping.

Tuesday, July 28 2009

Facebook link-whoring?

I am quite certain that 15 of the 28 people who show up in a Facebook search for Ooma employees are not, and never have been, associated with the company in any way. Which leads to the question, “why?”. We’re not that cool.

Friday, August 21 2009

“Cheer up!”

First, the video, then the explanation…

(Continued on Page 3399)

Sunday, September 6 2009

Dear SFGate,

I believe you have chosen the wrong word for the activity described in this headline:

Bay Bridge crews scuttle to fix span by Tuesday

[aw, they finally fixed it (the headline, that is). shame, really]

Tuesday, September 15 2009

“But what kind of fools are they?”

The illiterate kind, the unintentionally honest kind, or the “we’ll say anything to get your attention” kind?

(Continued on Page 3415)

Thursday, October 8 2009

Dear Amazon,

You’re still having this problem?

I search for Revo sunglasses, to replace the pair that just snapped in half while I was wearing them. I find the closest model available with free shipping, and what do I find as the “active discussions in related forums”?

Amazon: if you like sunglasses, surely you'll like...

You folks make a living doing keyword matching, and this is what you throw up on my screen? Are you suggesting that sunglasses lead to cross-dressing, like some sort of optically polished gateway drug? Should my mother be concerned?

Have you thought about moderating, or better yet eliminating these forums? The signal-to-noise ratio makes Youtube commenters look like modern sages.

Thursday, December 3 2009

Dear Youtube users,

Please stop upscaling VHS-quality video and labeling it “HD”.

Thursday, December 17 2009


Found a picture online and want to figure out where it really came from, so you can see it full-sized, without captions and site banners and censorship and loltext? TinEye to the rescue. It hasn’t been able to track down every picture I’ve fed it, but it also hasn’t had a false positive yet.

Saturday, December 19 2009

Subtle clues

The main focus of the mildly-NSFW and likely-staged photo isn’t particularly subtle, but I had to stop and think for a moment about how I immediately knew that it was taken in a Japanese book store.

After the fact, it’s easy to find all sorts of supporting evidence, but the original pattern-matching process was unconscious and instant.

Sunday, January 3 2010

Gosh, now why would Adobe do this?

I received a little piece of email sent to an address that I’ve only used with Oakley, in ever-so-slighty-off English, claiming to direct me to download a new version of Adobe Reader from, which is registered to a company in Moscow and hosted in the UK. Visiting that site (with wget, not a real browser!) redirects me to, which redirects me to, which tries to get me to become a member to gain access to this and other free software. I strongly suspect that someone visiting with a real browser will get a lot more than a deceptive and pointless offer.

Hey, maybe it’s not from Adobe after all!

Sadly, the real Adobe does not provide a way to inform them that this is going on; it doesn’t qualify under any of the feedback categories they permit, sigh.

[and it got past my spam filters because I whitelist the special addresses I give to companies I’ve done business with in the past; looks like someone “acquired” a copy of Oakley’s mailing list…]

Sunday, January 17 2010

The Return of du Toit

After their retirement from blogging, I did not expect to find Kim and Connie du Toit doing Internet talk radio. They started back in September, and I didn’t notice until tonight.

“Welcome back; the Internet was getting too gruntled without you.”

Friday, January 29 2010

Bad case of Flash

John Nack of Adobe argues that because Flash gave us online video, we shouldn’t focus exclusively on its flaws. This is a bit like saying that because a hooker got you off, the burning rash is nothing to kick up a fuss about.

…and that’s why I use ClickToFlash in Safari, Flashblock for Firefox, etc. Also, John? Adobe Air sucks for all the same reasons Flash does, making, for instance, many sections of the Adobe site (no longer really part of the web) excrutiating to use. What do you suggest as compensation for that sucking chest wound?

Monday, February 1 2010

Amazon recommends…

You know, this one actually makes sense. Unlike the “you bought a hard drive, so you might like truffle oil” recommendations I usually get.

The Fame Workout

Saturday, February 27 2010

Amazon Recommends

We had a little contest tonight, to see who got the least comprehensible recommendation from Amazon. Here’s my best: The Complete Benny Hill, because I bought a crockpot.

Slow-cooked Hill

Thursday, March 11 2010

Dear Amazon,

I think all search results would be improved by the ability to exclude departments. Instead of forcing me to guess whether an item has been filed under “Home & Garden” or “Grocery”, let me instead exclude “Baby”, “VHS”, “MP3 Downloads”, and “Clothing & Accessories”. You already allow negative keywords in the search field, so this would be a natural extension.

This would be particularly useful for your “recommendations for you” list, which in my case is currently dominated by cookbooks, salami, and SF novels. If you want to sell me anything else, you have to give me a way to sort it to the top, and the current positive filtering system is trial-and-error, since most of the listed categories don’t actually have anything in them to recommend.

Tuesday, March 30 2010

Amazon Recommends… therapy

These may be my favorite oddball Amazon recommendations ever:

Because I bought Slow Cooking Curry & Spice Dishes, Amazon recommends
The Mindfulness & Acceptance Workbook for Depression: Using Acceptance and Commitment Therapy to Move Through Depression & Create a Life Worth Living
Because I own Better Homes and Gardens Complete Step-By-Step Cookbook, Amazon recommends
Principles of Neural Science

Amazon Recommends...

Saturday, April 24 2010

Dear Facebook,

When suggesting possible new friends, please consider the possibility that the person who has the exact same set of friends that I do is, well, me. And if you insist on offering me as a possible friend to me, don’t whine about it in a popup when I click on me.

Wednesday, June 9 2010

Dear Amazon,

In general, I am such a happy Amazon customer that it pains me to say this: “fuck you and that obnoxious pop-up-every-N-seconds Sprint ad”. Yours is one of the few sites where I have permitted Flash to function, because you generally use it in manners compatible with my wishes. Popping up a large ad every time I try to read the details of a product, and forcing me to dismiss it by moving the mouse, is Bad Form.

I note that it is exceptionally difficult to offer direct feedback to you regarding such things (asking me to clickthrough on an embedded Flash ad is not an acceptable means of soliciting feedback on it), so consider this a public notice that I am now blocking an assortment of URLs on in order to restore functionality to your site.

Oh, and Sprint? Die in a fire. “will not buy”

Friday, June 11 2010

Locals and Tourists

Flickr user Eric Fischer has done a very nice bit of data-mining in his Locals and Tourists set, analyzing geotagged photos and overlaying them on city maps, color-coded based on how much time the photographer spent in the city (blue for “locals”, red for “tourists”, yellow for unknown).

The details of his data sources and processing are not included, but the background street map can be used to overlay his images on Google Earth, making it possible to visually survey the hot spots, and the results can be quite interesting.

Random notes about Tokyo:

  • Only tourists take pictures from the top of Tokyo Tower; locals shoot from nearby.
  • His source data includes many pictures from Japan’s train-otaku community.
  • There are a lot of very photogenic temples and gardens that tourists rarely find.
  • The residential district north and west of Youga Station (west edge of the map) must have an incredible smartphone density. I’m guessing lots of upwardly-mobile young couples live there, judging from the number of women with strollers that were captured by the Google street view car. [Update! Almost all by one very busy guy on Flickr]
  • The area south of Musashinitta Station is probably similar. In fact, I wouldn’t be surprised if all those pictures are being taken by stroller-equipped young mothers. [Update! nope, it’s another very busy guy]
  • The Shiomi Koyama Building is an inexplicably popular location for locals taking pictures. Good views of Sazanami Bridge? Mitsubishi employees taking pictures during lunch hour? Product testing? Dunno. [Update! The pictures are actually from the apartment building next door, and are all of someone’s cat]
  • Yasukuni Shrine gets a lot of traffic from all three groups. Also, the current view in Google Earth comes from late afternoon on December 31st, so the place is packed for New Years Eve.
  • Only tourists take pictures of Frank Lloyd Wright’s Jiyu Gakuen Myonichikan.
  • Tokyo Disneyland leans a bit towards tourists, but also gets a lot of traffic from locals and unknowns. The nearby Kasai Seaside Park, however, is for locals.

So far, I’ve had less success getting a precise match on his Kyoto map, but I’m off by less than a block in most parts of it, so I can still see some interesting places to explore.

[Update: Something I found around Kyoto, by looking for isolated clusters of locals. It was taken at Yoshimine Temple; not an easy place to get to, but obviously worth the trip.]

[Ah, and found his data]

Saturday, August 28 2010

Dear Amazon,

Wow, these new pencils are versatile! But I think maybe I don’t want to hang out with the sort of people who buy them…

Stuff pencil-lovers like
More stuff pencil-lovers like

Actually, I’m not terribly excited by the new Sharpie Liquid Mechanical Pencils. Unless you apply a lot more pressure than you would with a standard pencil or gel-ink pen, they don’t work well when held at more than a very slight angle.

Friday, September 10 2010

Dear Cnet,

If you’re going to redirect people from now that you’ve closed it down and replaced it with a less-useful site, could you at least redirect them to a similar page? Honestly, how hard is it to forward to

[Update: ah, it seems they did a very narrow redirect with an exact string match, without checking for all the common variations saved in bookmarks, including trailing slashes, index pages, etc. The exact example above now works, but some of the other variations still don’t.]

Monday, September 13 2010

Zombie domains

It used to be that when domains expired, they were either redirected to some scam product site or overpriced “you can buy this domain” page, depending on their pagerank.

Now they’re turned into ad sites that look exactly like the original site, graphics and all. So, for instance, what was once the promotional site for the US release of Kino’s Journey is now a bunch of links to online “pharmacies” hidden behind the original text and graphics, and the domain itself is now registered in Costa Rica by a Russian.

Lt. Smash’s blog went the same way a while ago. It looks like his old site, but it’s just spam, with the HTML and images scraped from some archive. I’ve run into others, enough that I’m now wary of all my old bookmarks that still seem to work.

(…and which Apple now uses for auto-completion when typing URLs in Safari 5, one more reason that’s a really stupid feature…)

Monday, September 27 2010

Adventures in the Amazon

As I sometimes do in idle moments, I have once again plunged into the depths of Amazon’s recommendation system and returned with rare and precious gems.

Because I purchased The Key To Kanji: A Visual History of 1100 Characters, I might like the Wii game A Boy and His Blob.

Because I rated Combos Pizzeria Pretzel, 7-Ounce Packages (highly, I might add), I am almost certainly interested in purchasing Dixon Ticonderoga RediSharp PLUS, Fine Point Permanent Marker.

Because I rated VMWare Fusion 3 (again, quite highly), I am sure to enjoy MP3s of the album It’s Never Been Like That by the band Phoenix.

Because I added the 14x25-inch size of 3M Filtrete 1900 MPR, 6-Pack, Ultimate Allergen Reduction furnace filters to my cart, I not only desire a copy of Precalculus: Graphical, Numerical, Algebraic, but also Grade 1 Subtraction (Kumon Math Workbooks).

And then comes the prize…

(Continued on Page 3631)

Saturday, October 2 2010

Earth, point and click

Spent a little while tinkering with Maxmind’s GeoLite City geolocation database and Indiemapper’s Flash-based GIS mapping tool. I’d prefer to render the base map myself, using the free Natural Earth shapefiles, but after deciding to use the Winkel Tripel projection with the Perl bindings for the Proj.4 library (for which the appropriate incantation appears to be “+proj=wintri +lon_0=90w +x_0=16396891.17 +y_0=10018754.17”), I ran out of idle-hacking energy when Asia wrapped around the edges. Something to do with urgent calls from a panicked customer-service manager whose migration plan had suddenly turned into a bad ending from Oregon Trail.

Anyway, despite the horrible performance, excessive memory usage, and utterly crap UI of a Flash app, Indiemapper is quite useful, and for people who frequently generate maps with less than, say, 10,000 data points per layer, it’s probably worth the monthly subscription fee. It’s definitely worth the free 30-day demo.

Data points of no particular significance, rendered with

Below, I’ve added a close-up of the US, to answer Steven’s question (note: it took less than a minute to login to Indiemapper, load my previously-saved map, change the projection to Mercator, zoom in on the US, and export a new PNG; it’s a lot more comfortable with countries than with planets):

(Continued on Page 3633)

Thursday, October 7 2010

Web 2.0++

The folks at 10gen asked me if I’d be interested in submitting a proposal for a session on MongoDB at the upcoming Web 2.0 Expo in San Francisco. Sadly, they suggested this less than two weeks before the deadline, leaving me little time to record a sample video of my legendary public-speaking skills.

[note: last displayed in Nineteen-Ninety-Something to an auditorium full of HP engineers who wanted a from-the-trenches report on implementing SAP]

I certainly have the gear to make a quick video, and I could have knocked something decent together over the weekend, but the more I thought about it, the more I realized that while I wanted to talk about their product, I really didn’t want to be in front of a room full of bleeding-edge fucktard web developers. A while back, I said:

“All contract web developers are bling-happy assclowns with no concept of revision control or release management, who think 1,000 is a large number.”

Upon reflection, I think this doesn’t go far enough. More and more, I see web sites that abuse the functional value of “web 2.0” technologies to put lipstick on a pig and rent her out for bacon-scented gang-bangs. Usability? Accessibility? Searchability? Standard navigation methods? “Fuck that, let’s break the rules and show everyone how cool we are! Tweet me if you’re in!”

I simply couldn’t imagine a web conference in San Francisco not being full of people I’d rather punch than talk to, all extreme and agile and oblivious, like the many who add layer upon layer of caching to compensate for their shoddy Rails code. For them, and others like them, I propose a new label, to properly reflect their approach to design and implementation:


Saturday, October 9 2010

Clearing Safari’s cache of HTML5 local storage

One of the few things that Safari 5 does not give you a way to avoid or clear is HTML5 local storage. This is separate from the setting for HTML5 local database storage, and deleting it is necessary not only for avoiding things like the new evercookies that sites are starting to use (such as polldaddy), but also sites like meebo who use it to store large chunks of custom Javascript locally.

Fortunately, there’s nothing obscure about how it’s stored, and the method for stopping a particular site from ever using it again is easy.

To clear out the local storage, exit Safari and run:

rm -rf ~/Library/Safari/LocalStorage/http*

(don’t delete everything, since Safari Extensions store their settings here as well)

To prevent a particular site from using local storage ever again (say,, home of and test site for evercookies), exit Safari and run these two commands:

cp /dev/null ~/Library/Safari/LocalStorage/http_samy.pl_0.localstorage
chmod 0 ~/Library/Safari/LocalStorage/http_samy.pl_0.localstorage

To see what a site is storing on your machine (all on one line):

sqlite3 ~/Library/Safari/LocalStorage/http_samy.pl_0.localstorage
    ”select * from ItemTable”

The best solution would be a small script to whitelist the few domains you’re willing to allow persistent storage from, and nuke the rest whenever they show up. Safari caches these Sqlite databases in memory during a session, so you need to restart the browser to really clear them.

My several-times-a-week routine is now:

  1. Reset Safari menu (clear history, reset top sites, remove webpage preview images, empty the cache, clear the downloads window, remove saved names and passwords, remove all other autofill form text, close all safari windows).
  2. Exit Safari.
  3. Clear all non-whitelisted cookies with a custom script.
  4. Clear all non-whitelisted local storage with a custom script.
  5. (all Flash local storage was already permanently disabled, which has only ever broken one site’s functionality (Indiemapper))

Note that it’s also easy to change the data sites are stuffing into local storage. The results could be whimsical or malicious, depending on how intelligent the web developer was.

On a related note, the HTML5 local database storage is in ~/Library/Safari/Databases, if you’ve allowed any sites to use it. I keep it turned off, myself.

Saturday, October 16 2010

Dear Amazon,

Recommendation FAIL: because I own an Ove’ Glove

Amazon recommends...colon!

Sunday, November 21 2010

Bad captcha

Text-based captchas have gone from distorted words to random strings that once appeared somewhere online, often distorted to the point that multiple letters overlap completely. I’ve lost count of the number of times I’ve had to hit the “give me another one” button on popular systems, because the first several choices were impossible.

Today’s new low: “ryōhei,”. I haven’t tried to type this in Windows recently, but on a Mac, it can’t be done from the standard US English keyboard. You either have to look “ō” up in the Character Viewer, or switch to the Extended keyboard definition and remember that you compose it with Alt-A.

Friday, December 3 2010

Dear Yahoo!Finance editors

The following sentence in Laura Rowley’s article on the student loan crisis should have been caught and fixed:

Indebted grads are also less likely to go to graduate school, delay getting married, having children and saving for retirement.

Sadly, I suspect that this is the “fix”, and the original was clearly written in English.

Thursday, January 6 2011


I hate blogfights, so here’s a picture of a pretty girl in a bikini.

(Continued on Page 3682)

Sunday, January 9 2011

Dear John Gruber,

Please start a new blog for your knee-jerk political scapegoating. It detracts from your knee-jerk Apple fanboyism.

Wednesday, February 9 2011

Dear Google,

Auto-correcting my already-correct spelling of a search (even when I’m refining a search by adding additional keywords after already overriding your miscorrection) is annoying, but auto-correcting it to something that you have no search results for at all? STUPID.

The most reliable miscorrection I’ve found is the Japanese version of the LaTeX document processing system, which goes by the name “pLaTeX”. This is always corrected to “playtex”, even if the other words in the search are so specific that there are no Playtex associations possible, such as 傍点, the marginal dots that are used for emphasis in Japanese text.

Searches for LaTeX often include rubber gloves and fetish items, but the TeX community has been online for so long that they don’t dominate. In fact, I suspect horny rubber-lovers are often frustrated to find themselves receiving advice on pagination, hyphenation, and “how to make your font bigger”.

Tuesday, February 22 2011

Dear Amazon,

Presenting some random guy’s download from Project Gutenberg as if it were the Kindle edition of an in-copyright book by a respected translator is not acceptable. I can’t safely order anything from your listing of Jay Rubin’s translation of Rashomon and Seventeen Other Stories, because there are clearly several different books here. Even the featured editorial review refers to someone else’s translation. Worse, the page changes slightly each time I reload it, apparently due to different indexing on different servers.

If I ignore the official link from his author page, and search by his name or by its ISBN, I find the real book here. But if I trust your listings, I’m screwed.

(yes, I sent in feedback; hopefully someone will clean up the mess)

Monday, February 28 2011

Dear Recaptcha,

This goes way beyond “not funny”, all the way to “incredibly stupid”. Does someone do even basic quality control on your source images? I’m thinking the answer is a rather firm No.

Recaptcha from Hell

[Update: Just saw one go by where one word was in cyrillic and the other in hebrew; sadly, I clicked refresh before I could stop to grab the screenshot.]

Monday, April 11 2011

Dear Amazon,

The lighting in my cubicle isn’t that bad!

The goggles, they do nothing!

Friday, April 22 2011

Dear Amazon Japan,

Remind me not to order anything else until things stabilize enough over there for shipping costs to come back down. Ow, my aching wallet.

Also, WTF with the limited edition of the Dream Morning Musume album? It was never up for pre-order, and on release day, by the time I finished getting through the checkout process, it was out of stock and only available through Marketplace dealers who won’t ship to me.

[Update: my order was split into two shipments, with 6 items coming from Osaka and the other 24 from Tokyo. They managed to reach Hong Kong two minutes apart, departing four hours later for San Francisco. I figure I’ll see them Tuesday morning. Annoyingly, the limited-edition DoriMusu album is once again in stock and orderable, grrr. I didn’t want to risk it suddenly disappearing again, so I quickly finished the order and had it sent alone. Ouch.

I understand that you can’t treat limited-edition items as normal back-orders, but they frequently don’t even handle pre-orders well. My suspicion is that the problem is a flaky distribution chain that isn’t reliably delivering the quantity that Amazon orders, and not just for limited editions. Note that this is not a “big quake” issue. I’ve been seeing it for quite a while, so I think Japan’s well-padded and obsolete distribution system is reacting badly to Amazon’s success, and this is similar to the legal obstacles that keep them from offering deeper discounts.]

[4/25 3pm update: DHL delivered them today. So while the price was painful, the service was excellent.]

Sunday, April 24 2011

Google Translate…

…has a romanizing button.

Wednesday, May 4 2011

Dear Amazon,

I’d like to improve the quality of the recommendations I receive from you. Unfortunately, it’s been clear for a long time that I’ve given you Too Much Information, causing the system to produce basically random results.

The Real Reason For The Civil War because of Slow Cooker Revolution? Amusing. Bacteria-filtering disposable face mask and a watch toolkit because I buy Cajun salame? A bit odd, don’t you think? Hemorrhoid cream because I bought a folding screen? Downright peculiar. Murder on the Links and The Photoshop CS5 Book For Digital Photographers because I bought Soups and Stews 2011? Uh, yeah, right. A ten-year-old Sony 5-disc CD changer because I own Better Homes and Gardens New Cookbook? WTF?

And that’s just today; I’ve seen far worse in the past. There’s still some wheat mixed in with the chaff, so I haven’t given up, but every time I use the system, I mark more items “not interested”, and make the problem a little bit worse:

Amazon TMI

I wouldn’t mind cleaning that list up a bit, but there’s no way in hell I’m going to go through 1,353 pages of recommendations in reverse chronological order. By the way, while writing this, I added another 300 items to the list, so make that 1,373 pages…

[Update: a SOG Tactical Tomahawk because I bought rechargable batteries! Paco Rabanne Lady Million perfume because I own a 1 TB external hard drive!]

Friday, July 8 2011

Dear Savinelli,

Please hire someone to clean up the hilariously bad computer-generated translations on your US web site. Trust me, there are plenty of recently-graduated liberal-arts majors eager to work with prose more complicated than “do you want fries with that?”.

When the pipe is running, you are holding in your hands every now and slowly count to six. If you succeed you can safely continue to smoke a pipe, otherwise you must stop until the pipe cools. Long waits are not necessary: it takes typically a few seconds of interruption and in most cases not even need to turn on the pipe. however, if the pipe were to be shut down, never mind: you again. Many burns are caused by smoking because they fear that the pipe goes out and then suck up too often.

Sunday, July 10 2011

The modern newsroom

While giving me a tour of their new place, Beth sat down to play with Google+ for a few minutes, and said, “uh-oh, new 7.0 earthquake in Japan”.

We spent at least five minutes hunting for details beyond what the USGS site had, veryifying that it was indeed off the coast of Sendai where the monster had hit, but unable to get any solid information on possible tsunami impacts.

Five minutes after that, the story reached CNN. They knew less than we did.

[Update: tsunami heights of no more than 50 centimeters were predicted for the region, with the actual results being closer to 10cm in several port cities. Good news for now, but the big one in March had a 7.2 foreshock two days before, so keep your fingers crossed for a week or so.]

Saturday, August 20 2011

Munuvia DNS outage

Looks like Pixy’s empire has temporarily vanished from the net; I can’t get response from either of the nameservers. One of them is pingable, but not answering DNS. I’d send email, but, well, y’know.

[Update: all better now]

Tuesday, August 23 2011

Amazon recommends…

My deepest fear is that someday these Amazon recommendations will turn out to be right.

Mixer Glove Urine Toast

Monday, August 29 2011

Touring Japan with Google Earth

Google Earth now has layers for Japan Tourism and Kyoto Tourism, linked to pictures and English text provided by JNTO. Good stuff, although of course the national-level layer is pretty sparse. Fortunately, we’re going to Kyoto.

Tuesday, August 30 2011

Amazon Betterizer

I make fun of Amazon’s recommendations a lot, but they do put a lot of work into improving the system, and the latest effort seems to be the interactive betterizer.

[Update: sample output; it doesn’t know me very well yet.]

[Update: with a bit more training, it offered me the complete Incredible Hulk TV series on DVD for $29, so I can’t complain.]

Sunday, September 25 2011

Japan photos

For fun, I’ve been playing with Google+ recently. I remain invisible on Facebook, but the Circles design makes organized sharing more practical, and the various Google services also integrate nicely with my shiny new Android device, the Sony Tablet.

(oh, did I forget to mention the new toy? Full review soon, but the short version is that the most negative thing I can say about it is that you need tiny little fingers to retrieve the full-sized SD card; otherwise, it’s great)

Anyway, I ended up copying a bunch of the pictures from my 2007 Japan trip into Picasa, for when I get the urge to share a random picture.

Japan, November 2007

This version was exported directly from Aperture, so it didn’t pick up the geotagging I did before Apple supported that properly. I still haven’t tinkered with merging existing geolocation data into existing albums, but maybe soon.

Monday, October 3 2011

California blinks, Amazon reinstates affiliates

I never actually made any money off of being an affiliate, but I know that a lot of people depended on it, and now that California has backed down on their tortured redefinition of “nexus” (pending federal clarification on how sales tax collection should work), they’re back in business.

Monday, October 10 2011

Dear Amazon,

I just finished reading book 9 of the Destroyer series on my Kindle. From inside the book, I clicked to go to the Kindle Store, and my recommendations were:

  • Six Easy Pieces, The Pleasure of Finding Things Out, Perfectly Reasonable Deviations, and Six Not-So-Easy Pieces, by Richard P. Feynman
  • Bad Astronomy, by Philip Plait
  • Genius, by James Gleick
  • The Faith Healers, by James Randi
  • The Varieties of Scientific Experience, Pale Blue Dot, and Billions & Billions, Carl Sagan
  • Japanese Hot Pots, by Tadashi Ono & Harris Salat
  • The Destroyer volumes 7, 6, 12, 3, 11, 17, 40, 31, 36, 37, 27, 44, 35, 34, 43, 30, 42, 26, 45, 39, 33, 20, 25, 49, 48, 46, 32, 38, 29, 47, 41, 28, 55, 50, 53, 52, 51, 57, 54, 56, and five more un-numbered books related to the same series by Warren Murphy and Richard Sapir.

All praise for filling the list with things I’m actually interested in, but do you think maybe you overdid it a bit on the Destroyer novels, especially since the one I’m most likely to want right now isn’t on the list at all?

At a guess, the metadata simply isn’t up to the task of identifying series relationships, and I’m seeing the usual “you just bought a nice watch, so you must be interested in buying a dozen more nice watches” problem.

Also, while I’m pleased that I finally have my Kindle recommendations straightened out, I sigh in despair at the weeks of Android-app-recommendation cleanup I face after buying some apps for my Sony Tablet.

[Update: it seems book 10 is the only one in the first fifty or so that isn’t available for Kindle yet.]

Thursday, March 15 2012

Reasons I love Amazon, #317a

[Update: since I first posted this, some idiot Marketplace dealer’s auto-pricing system has jacked their (virtual) copy up to $999. Plus $3.99 shipping, to add insult to injury. Wonder how long it will take their sloppy code to notice that the used book they plan to buy from someone else and resell at 8x is now over-priced by 5x?]

I ordered a book of the sort that’s in print but out of stock everywhere, so that all the dealers list it at prices ranging from 1.5x to 15x. Amazon’s order confirmation (which, as always, reached my inbox before I could switch windows) said, “no idea when we can get a copy, but as soon as it shows up, we’ll get it out to you”.

That was Monday at noon. Yesterday at 5pm, they sent an update: “found one, expect it Tuesday”. Two minutes into today, another update: “okay, you’ll have it tomorrow”. With free shipping, of course.

(and they bought 8 copies, just in case anyone else wants to start studying Japanese swordsmanship)

Local book stores could give me this sort of service, but past experience suggests that very few will, and even fewer will do it consistently. Right now, I’d have to drive 90 miles to reach one that might, which stretches the definition of “local” a bit. Amazon isn’t driving the competition out of business with predatory pricing and sales-tax avoidance; they’re doing it by being a better book store. And a better furniture store, appliance store, hardware store, etc.

I love book stores, but after reinventing themselves as coffee shops with a small selection of books sandwiched in between the videos and the sandwiches, I really have no reason to go to one. The only ones left worth patronizing are the used book stores, which still have some actual variety on their shelves, to surprise and delight the customer. And a lot of them stay in business by listing all their stock on Amazon.

(and yes, after my first two nights in the dojo, all sorts of underused muscle groups are complaining)

Sunday, April 1 2012


Two hours on the phone with Paypal, six password resets, three escalations, two different computers and four different browsers, and still they don’t have the slightest idea why I can’t log in to my account.

Ten days ago, I successfully paid for something through Paypal. Now, nothing that tier 1-3 support can come up will get me into my account.

…but they think that if they escalate even higher, they may have something for me in 24-48 hours.

[Update: Amusing; if I do a password-reset and try to give it the current password, it detects this and refuses to allow me to use it. But that same password didn’t work fifteen seconds earlier, so the problem can’t possibly be on my end, especially since I’m pasting it in each time rather than typing it from memory.]

[Update: it appears they don’t like my home IP address…]

Wednesday, April 11 2012

Google+ hates you

Apparently Google’s web design team has been hijacked by rogue optometrists who are attempting to drive people into their offices by creating eyestrain.

Why else would they have decided that medium-gray text on a light-gray background is a good way to present all comments, especially the sort of long, detailed comment that contains information that’s actually worth reading?

And of course they’re wasting acres of space on useless crap like chat, “trending” tags, “you may know” (but almost certainly don’t), and “you might like” (but definitely won’t) sections.

Monday, April 23 2012

Another reason to hate Paypal

I spent two hours trying to buy stuff from a site that uses Paypal’s shopping-cart system. Why? Because it kept resetting the cart. This seems to happen at random intervals, but is guaranteed to happen if you’re actually logged into your Paypal account and that session times out while you’re loading up the cart.

It was so bad that I ended up pre-staging the desired items in multiple tabs, so that I could rapidly add them all to the cart and hit the checkout button before the session expired. As it is, I ended up missing the click on one item, so the merchant will not be selling me that particular $250 product today.

Sunday, June 10 2012

Fun with machine translation

Dear Google Translate, the adjective いけ好かない can be translated as disagreeable, disgusting, nasty, or creepy. I think you’ll find that there are very few contexts where it would be correct to translate it as “dicksplash”.

Google Translate Fail

Thursday, July 19 2012

My non-existent Tumblr blog #3

“If I were to create a Tumblr blog…”, he says, refusing once again to enter the swirling vortex of multi-panel animated gifs, endless-scrolling memory hogs, and myspace-like design aesthetics, “I think I’d have to call it Baffled Cheesecake, in honor of a sexyfail expression that’s almost as common as Bored Porn Star, Angry Stripper, Constipated Chick, and Wannabe Realdoll.”

Two samples below, one nude.

(Continued on Page 4049)

Thursday, February 28 2013

Web-translation pitfalls

Spotted this one just now while using Google Translate on a store’s information page: 定休日 was translated as “Closed Sundays”, instead of “regular closing days” or something similar. If, like me, you expect Google to make a hash out of Japanese and are only using it to fill in the gaps, you’ll be okay, but not only is Chrome doing automatic translation, I’m running into more and more Japanese sites that supply an “English version” that’s copied from Google output, and if you don’t know you’re reading gibberish, you might end up thinking that the store really is closed on Sundays.

How did Google screw this one up? Well, 日 can mean “day”, “sun”, or “sunday”, distinguished by context, and both 定休 and 定休日 mean “regular holiday”, used by stores to indicate their regular closing schedule. Google picked the shorter match and then decided that the following 日 meant Sunday, which would make perfect sense if there were some punctuation to make it unambiguous (such as “定休:日・水” for “closed Sunday and Wednesday”). A human translator would have picked the longer match, and expected the next block of text to contain the actual set of closing conditions, which in this case was “third Wednesday of each month”.

Wednesday, April 17 2013

Baffling Japanese spam

Recently, I’ve been getting a lot more infected-Excel Chinese spam than usual, and the majority of the Japanese spam has been bland one-liners with a link to a pay site, so I haven’t mentioned any of it.

This one stuck out for two reasons. First, there’s no URL at all, so no easy payoff for the spammer. Second, well, see for yourself:

From: 栄村良子 【BBガルダン 企画部】
Subject: 読むだけ簡単、貴方の脳の不思議発見

こんちには みさなん おんげき ですか?
わしたは げんき です。
この ぶんょしう は いりぎす の
ケブンッリジ だがいく の けゅきんう の けっか
にんんげは たごんを にしんき する ときに
その さしいょ と さいご の もさじえ あいてっれば
じばんゅん は めくちちゃゃ でも
ちんゃと よめる という けゅきんう に もづいとて
わざと もじの じんばゅん を いかれえて あまりす。
どでうす? ちんゃと よゃちめう でしょ?

Not only is it all written phonetically in hiragana, most words are scrambled, so that the first body line reads “konchini wa, misanan ongeki desu ka?”

It does not appear to be written by assistoroids, so I don’t think the alien catgirls have found my email address.

Tuesday, May 14 2013

Baidu, WTF?

Dear (aka Beijing Baidu Netcom Science and Technology Co., Ltd.), this blog is not Amazon, nor is it an open HTTP proxy, kthxbye.

[Tue May 14 04:05:16 2013] [error] [client] File does not exist: /htdocs/GU10-SMD-4-5w-Cool-White/dp/B004BEC9QY
[Tue May 14 06:34:45 2013] [error] [client] File does not exist: /htdocs/Agatha-Christies-Miss-Marple-Collection/dp/B00012SYQY
[Tue May 14 07:19:24 2013] [error] [client] File does not exist: /htdocs/Watt-6400k-Energy-Saving-Light/dp/B003BF3TE0
[Tue May 14 07:49:24 2013] [error] [client] File does not exist: /htdocs/Technote-Trumpet-Stand/dp/B002S0NN22
[Tue May 14 08:34:24 2013] [error] [client] File does not exist: /htdocs/technology-expectancy-typically-maintenance-including/dp/B003VR9NV6
[Tue May 14 09:49:24 2013] [error] [client] File does not exist: /htdocs/Satya-Champa-Incense-Sticks-Special/dp/B000SARC4O
[Tue May 14 10:19:24 2013] [error] [client] File does not exist: /htdocs/Rockburn-foot-Moulded-Jacks-Guitar/dp/B000GG4B4O
[Tue May 14 11:04:24 2013] [error] [client] File does not exist: /htdocs/Rifle-Pellet-Takes-targets-17cms/dp/B003Y21ATQ
[Tue May 14 11:19:24 2013] [error] [client] File does not exist: /htdocs/Polypropylene-Rope-Blue-30m-6mm/dp/B000U5A0E6
[Tue May 14 11:49:24 2013] [error] [client] File does not exist: /htdocs/Plastic-Pirate-Crossbones-Bunting-Metres/dp/B000MSP80W

Sunday, July 7 2013

WebTV finally shuts down

September 30th. I wonder how much of my procedures and scripts survived to the end, on what was once the largest Solaris deployment inside Microsoft.

Monday, July 15 2013

Unhelpful Youtube behavior

If you search for the K-pop band named “시크릿”, the default sort-by-relevancy will put their videos at the top of the list. If you switch to sorting by upload date, however, you will see only a long list of completely irrelevant videos whose titles happen to include the English word “secret”, which is what 시크릿 spells out phonetically.

The underlying idea makes some sense, but it’s not applied evenly or consistently. Many videos will not be found if you search for them in the wrong/other syllabary (a different subset will be found by searching for シークレット, for instance). Fortunately, putting double quotes around the string disables the auto-translation, excluding irrelevant results.

Saturday, August 10 2013

Carve it in stone, that it shall never be forgotten

“If you don’t have the social skills to phrase a polite question, Slashdot is perhaps not the ideal place to go looking for advice…”

(via, where the person quoted is actually answering the wrong question…)

Monday, September 9 2013

My first Korean spam email

Looks like they’re selling performance-enhancement pills for men. I was hoping it was something different, like the “gyaku enjo” ads that have started popping up again in my Japanese spam.

From:  [비ㅡ아ㅡ클ㅡ리ㅡ닉]
Subject: 정품. 저렴하고 빠르게판_매합니다...[비ㅡ아ㅡ클ㅡ리ㅡ닉]
♣ 사이트접속후 관리자에게 실시간 문의도가능합니다.
♣ 당일배송을 원칙으로 합니다
♣ FDA허가된 상품이되 처방전없이 구매가능합니다
♣ 건강한 性생활을 드립니다.
♣ 묶음상품은 더욱 저렴하게 드립니다..^^ 

Tuesday, October 1 2013

The end of an era

WebTV goes dark

What I want to know is, has some poor soul been maintaining epgparser all this time, or did they finally break free from Andrew’s giant hairy Perl script?

(and when I say “hairy”, I mean “had to run as root so it could newfs file systems, and no one could ever figure out why it needed 4GB of RAM and ran for 26 hours a day”)

Monday, April 7 2014

Dear Plex,

Your automatic metadata matching system is complete crap. Just thought I’d mention that.

So, the music video named Shy Boy by the girl-group Secret got matched to a 1931 movie named Local Boy Makes Good. Similarly, Hyuna’s Bubble Pop became the action/comedy film Knight And Day. Hoot, by Girls Generation, became the 2006 children’s film Hoot, and their song Gee became a Jane Fonda movie called Georgia Rule. Worst of all, perhaps, Leonard Nimoy singing Bilbo Baggins became the animated version of The Hobbit. In all of these cases, a four-minute video is being mistaken for a full-length ripped movie, based on some fairly vague keywords, and there’s no easy way to undo it; you basically have to start over to get rid of the downloaded image and phony metadata.

Tuesday, June 10 2014

Dear Amazon US,

Please don’t tell me why the results of a search for the Bluray edition of The Seven Samurai included the Japanese edition of Kick-ass 2.

Even more baffling is the import of the Samurai Champloo box set that showed up in the results, for more than ten times the price of the US release. The product description suggests that this isn’t a case where the Japanese set had significant extras:

Draw a rare journey of Foo daughter of cafe Liquidambar genius swordsman Jin era drama action animation! Wild boy infinite Shinichiro Watanabe “Cowboy Bebop” and “Animatrix” time as director! 3-Disc Blu which recorded all 26 episodes -ray BOX.

Sunday, October 19 2014

Not your usual title string…

Amusing QA error on a maid-cafe web site; the title and keywords section of the page header are error messages of the form: “Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/html/www_maid/S/wp-content/themes/maid2013/functions.php”.

This is the sort of thing that announces to the world, “Hi, we’re clueless PHP users; please try to crack our site”.

Also, I have to say that while I understand what they were trying for with the domain, my initial parse of the URL was a bit… anal.

Friday, October 31 2014

Dear Amazon,

This is not a hand mixer.

yarn winder, not hand mixer

Monday, December 8 2014

Amusing enough to get a link…

My family’s coming to town for Christmas, so I went looking for things to do and places to eat. The most amusing thing to show up was this Freedom Festival, which turned out to be an ad for Diaz Brothers Bail Bonds.

Thursday, January 1 2015

Ecto died, testing MarsEdit

Suddenly, and I mean less than two minutes after I had used it successfully, the offline blogging tool I’ve been using forever started throwing XMLRPC errors. Support for it was abandoned years ago, so I haven’t looked for a replacement until now.

MarsEdit let me submit an edit to the previous post, so let’s see if it makes a new one successfully, and to double-check the encoding, I’ll insert some kanji: 漢字.

Now for a picture below the fold:

(Continued on Page 4516)

Wednesday, January 7 2015

Dear Amazon,

I would pay an extra $N/year for a Really Prime service which included the feature “will not use USPS for shipping”. Every other carrier you use is either on-time or early, but I get things faster from Amazon Japan than when you do “two-day” shipping via USPS.

You seem to assume that if a package is processed at the local post office in the wee hours of the morning, then it will manage to reach my office 0.7 miles away before the end of that same business day. Sadly, it ain’t so. They might manage to make it there by 7pm, but they’ll just cruise on by, because they know the front door is locked. If they’re busy, they won’t even do that, they’ll just wait until after 8pm and mark it “business closed”. Or both, turning it into a four-day delivery.

Monday, January 19 2015

Chrome tip

If Chrome starts running really slowly on a Windows machine, and even seems off in other browsers, but the rest of the web is reachable just fine, turn off IPv6. I ran into this yesterday when my router’s connection to Tunnelbroker got a little flaky.

Wednesday, January 28 2015

An amusing scam from

[Update: he tried again, and when I asked if the scam actually worked on anyone, he responded with a butthurt message insisting he was a real person offering honest assistance, and calling this post “cyber-bullying”. Best laugh I’ve had all week.]

Obviously machine-generated spam based on scraping search engines, since the suggested replacement has absolutely nothing to do with the original link. Never mind the fact that it was sent from a site hosted in Amazon’s cloud (, which identified itself as to the next hop), or that it was sent with JavaMail and includes a List-Unsubscribe header. Those just ice the spam-cake.

Subject: Found an error to fix on your website
Date: Wed, 28 Jan 2015 14:55:14 -0800 (PST)
Good Afternoon,
I'm a criminal justice student and I recently visited your site while
researching for a paper I'm working on... This is a note for your
webmaster, as I found a dead resource link on your site that visitors
like me might be trying to access.
It's on this page:
I got an error message when I tried to click on the link to this site:
It looks like that website no longer exists... anyhow, I found another
link that might be useful in its place so your visitors can still find
some helpful information:
Thanks for your help and for providing great information!

Wednesday, February 25 2015

Dynamic pricing and demand

The almost-ready Shapeoko 3 CNC mill will come with mounts appropriate for the DeWalt DWP611 compact router ($119 on Amazon). Often discussed in the forums is the fact that you only actually need the motor, which is available separately as the DNP611 ($79).

The DNP611 sold out at that price, came back into stock at $99, sold out at that price, came back into stock at $109, sold out at that price, and is now back in stock at $129. So it’s now cheaper to buy the standard router package and throw away everything but the motor.

(I haven’t bought one yet, since I’m waiting for a confirmed ship date before I buy router, bits, etc)

[Update! Today the circle is complete, as the full kit is now $99, a full $30 cheaper than the motor-only SKU. Perhaps I’ll buy mine now…]

[Update: speaking of almost-ready, today’s email says “Batch #1 will begin shipping in a few weeks!”, and I’m in batch 1. A quiet “woo-hoo” is in order, I think.]

Wednesday, October 12 2016

Not-so-mechanical Turk(ish) surprised me a bit today:

Google tells me it’s Turkish meaning “suggested for you”, and after several hours, it’s still there in a fresh browser session, despite the rest of the UI still being in English.

[Update: still there a day later, for several of my friends as well. I don’t see an easy way to contact Amazon to find out if they know.]

Tuesday, November 15 2016

Hey Google, wakaru kai?

Google just announced that their new translation engine now handles Japanese. Let’s see what it does with the exact same text I fed to Office 2007 about seven years ago, the first scene of Kyōtarō Nishimura’s murder mystery, Ame no naka ni shinu. TLDR: it’s quite a bit better, although the pronouns are all over the place, and the “embroidered sleeves” bit is hilarious:

It was raining.

It is cold winter rain. It was close to the sleeves.

Even if it enters at night, there is no sign of stopping. Because of that, if it passed ten o’clock, the embroidery figures rapidly decreased.

Even when that man pressed his belly with one hand and came out from behind the alley, there was no sign of a person in the rain.

He was a middle-aged man. The tired suit was wet with rain and was dark.

The man gripped by the utility pole with one hand. However, as if suddenly bravely fumbled, it crumbled and broke into a wet pavement.

From around the man’s belly, red blood is blowing out. The blood is raining.

“help me”

Said the man. However, the low screams have been erased by the sound of rain.

With a splash of water, a taxi passed by. The driver took a look at the man who fell over and down, but he thought he was drunk. Just dropping the speed a bit, I passed by.

The man lifted his face and looked around. There are no figures of people anywhere. I opened my mouth, but it seemed that no voice cried for help.

Blood still continues to flow. The face of a man gradually lost his blood and went.

The man tried to write something on the pavement with a fingertip stained in blood. However, the raining lasting will erase it.

Despair seemed to have caught him.

The man wants to let you know something. However, there are no signs of people, and letters written on pavement are erased by rain.

Also, the taxi passed by. However, for men, there was no power left to raise their hands.

The man looked at his palm stained with blood with a blank eye. The fingertips were stiff.

The man slowly folded the little finger of his left hand. On top of that, my thumb was broken and piled up. The index finger, middle finger, ring finger stretched out.


, The man muttered with a small voice. But it was not almost a voice. The man fired off his last power and stretched his left hand. Just say that you would like someone to see.

But no one had seen it.

There was the darkness of the night, only the rain continued.

Friday, November 18 2016

Testing: looped mp4 instead of animated gif

I hacked Gifify to generate MP4 files instead of animated GIFs. Let’s see how this embeds:

This is 256 KB. 5.5 MB GIF version, created with the exact same parameters, below the fold.

(Continued on Page 5003)