Saturday, November 30 2002

/this/url/sucks/cgi-bin/showArticle2.php?
articleID=9487220&sessionID=394582849
&phaseOfMoon=…

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 munitions.com 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

MTRoundRobin

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)

trollbridge

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 munitions.com 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 munitions.com is 209.81.13.66.

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

Lileks.

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.

Notes:

  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 “justice.com”. This is apparently a service of the legitimate site findlaw.com, 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

Overture.com?

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

http://www.overture.com/d/search/p/nz/?xargs=02u3hs9yoazcuxLg0N81atTs8sSi%2B2Kcgtyi9IVipKy1TMSbdLzU0Hi2ZK5iTkpaWnJEWlFtsXGBoalRRnVlsn5jt6lxdnBFeFujkCOcitzy6JycxKLw2NKc70L0gKcvf0cXN0zCwsdHbWdlZ3AAMazz8l&Partner=netzero_yh_nzwebmail

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 = [
  {
    s1:{
      s1:['儿','八',],
      s2:['小','巛','川',],
      s3:['心','水',],
      s4:['必','旧',],
      s7:['承',],
      s8:['胤',],
      s11:['順',],
    },
  },
];

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

Monday, August 30 2004

“Hey, where did the pictures go?”

I took the munitions.com 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 boingboing.net, 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 c