Ignorance is Bliss

First, a belated Happy New Year to all. This year’s Rosh Hashana was very nice… except for the Saturday morning service, where we made the mistake of sitting in front of five women who spent the entire time talking, giggling, unwrapping candy very loudly, and generally being royal pains in the tuchus. The strange thing was that while three of the women were teenagers, the other two were fifty-something women — and as far as I could tell, the fifty-somethings were the instigators. Anyway, I tried giving them the stink-eye once, which resulted in about two minutes of blessed silence. Maybe I’m just not good at giving the stink-eye. Maybe you have to reach a certain age for it to become effective. What I really should have done was to tell them something like, “Hi. You see that scroll up there? That’s the Torah, our most sacred book. You know what that boy is doing up there? He’s reading from our most sacred book. That’s something that’s been going on for at least a hundred generations. And if you can’t pretend to respect that, the very least you can do is shut the hell up.” However, that course of action probably would have fallen a bit short of our ancient New Year values of Repentance, Prayer, and Charity, so I’m doing my best to let it go.

So far I’m not doing a very good job.

Sunday was a bit more pleasant. Nancy was in town, and we went wine-tasting at Picchetti and Ridge. The afternoon was educational, if only because Nancy informed me that Picchetti is pronounced with a “K” sound, not a “CH” sound. Good thing Nancy’s around to keep me from sounding like a total rube. And speaking of being a total rube, I even had the presence of mind to keep my mouth shut when the conversation at Picchetti turned to the infamous “Two Buck Chuck“. Although the guy behind the bar was very down-to-earth and helpful, he was horrified that people drink Charles Shaw wine and actually like it.

Not surprisingly, the Slate Wine Guy thinks much the same thing: “Having recently tried the Charles Shaw merlot, I can unequivocally state that I would switch to beer or go on the wagon before making a habit of this plonk.” (Yikes, switch to beer! Heaven forfend.) The Slate Wine Guy also doesn’t think much of California wines in general, opining that “the 1970s and 1980s was [sic] the golden age of California winemaking.” I had thought that the 1970s were the age of Ernest and Julio Gallo, but my memories of the 70s are admittedly a bit fuzzy. I suppose the 70s did give us the famous California wine vs. French Wine taste test, so maybe the Slate Wine Guy has a point. I dunno. All I can say is that my highly refined “thumbs-up, thumbs-down” wine methodology works for me. These days you can walk into any supermarket in California and see row upon row of sub-$10 wine… some of which is awful, and some of which tastes great as far as I’m concerned. Personally, I think we’re living in a Golden Age of Wine with respect to both price and choice.

You know, I know that Charles Shaw wine isn’t “good”. I know that when I drink it, the experts are telling my brain that it is not supposed to be flavorful and delicious. After all these years, you know what I realize? Ignorance is bliss.

A Little Too Fussy

So I finally gave the new Beta W3C Validator a spin. The new validator has a number of new features and bug fixes, including plain-English error explanations (yay!) and support for the application/xhtml+xml MIME-type (double yay!)

One of the most dramatic changes is the addition of “fussy” parsing, wherein the validator dings you for “things that are not strictly forbidden in the HTML Recommendation, but that are known to be problematic in popular browsers.” To my horror, I discovered that while my site passes standard validation, it fails “fussy” validation. Now, here’s where things get tricky. Unlike a purely mechanical validation against a schema or DTD, Fussy Validation is getting into a more complicated and subjective realm. Unfortunately for me, the Fussy Validator is right in my particular case. My error is straightforward to fix, but I’m going to leave it in place for the next few days, just so that you can see that my site doesn’t validate.[1] We’ll come back to this in a minute.

There are two problems with the Fussy Validator as it stands. The first problem is a simple UI problem, which we can easily attribute to the fact that the validator is beta software. When validated, my site yields a big red error message, “This page is not Valid HTML 4.01 Strict!” The problem is that this error message is demonstrably false. My site is HTML 4.01 Strict; it just fails Fussy Validation. Still, I have no doubt that the 1.0 version of the software will no longer conflate Fussy Validation with the official W3C Recommendation itself. One big step in this direction (besides changing the incorrect text) would be to lose the confusing Giant Red Bar of Total Rejection and replace it with something more subtle and tasteful, such as the Medium-Sized Yellow Bar of Wrinkly-Nosed Disapproval. But that’s up to the W3C’s UI gurus, I suppose.

The second problem is a bit more subtle. To go further, we’ll need to delve into A Little History.

A Little History

Ages ago, our ancient web designer ancestors had only the most primitive tools at their disposal. Fragments of web page source recovered from Lascaux, France reveal evidence of only the simplest table tags: <table>, <tr>, <td>, <th>, <caption>. But despite this handicap, our ancestors managed to construct extraordinarily complex tabular structures. In fact, most present-day web designers continue to pay our ancestors homage by creating tables with the exact same set of building blocks.

Of course in our enlightened modern age, we have many more tools available. Chief among these are the <tbody>, <thead>, and <tfoot> tags. These tags allow you to semantically specify the body, head, and foot of a table. And here’s where my site comes in. The Fussy Validator doesn’t like the fact that I have a table on my site (the calendar in the sidebar) that lacks a body and head (or foot). And in my case, the Fussy Validator is right. My calendar table should have a body and head.[2]

But that doesn’t mean the Fussy Validator is off the hook yet.

A cursory examination of the spec might give one the impression that tables must have a <tbody> and a <thead> or <tfoot>. Coincidentally, I reached that conclusion just a few months ago, during Part II of my XHTML2 analysis. At first I did the only rational thing for a Markup Geek to do when faced with such a shocking discovery. I panicked. Fortunately Jacques Distler came to the rescue. “There, there,” he said soothingly. “All is well with the world.”

Jacques pointed out that the relevant text is a little further down in the spec: “The TBODY start tag is always required except when the table contains only one table body and no table head or foot sections.” In other words, if your table doesn’t have a head or foot and you only have one table body, you can just leave well enough alone. And if you think about it, this makes sense. There’s all sorts of gridlike or tabular data that simply doesn’t have a head or foot, and in that case the <tbody> tag is just redundant.

The problem with the Fussy Validator is that it can’t possibly know which tables do need a head, foot, and body, and which ones don’t. That’s a fundamental limitation of Fussy Validation in the first place. Fussy Validation has to somehow understand the meaning of the code you’re writing, not just the structure. Of course, we’ve seen this problem before. Author Joe Clark rails against this very issue in Building Accessible Websites. He’s talking about Bobby, the automated accessibility checker, but the issue is the same:

What we have here is a computer program that threatens to withhold its certification badge (of dubious value in any case) if you didn’t write clearly enough. How does it know the difference, exactly? You probably get enough of that kind of bellyaching at home. Do you also need it at work?

My advice is simple: Do not use Bobby. Do not rely on software as dumb as a dromedary to evaluate accessibility.

I certainly don’t feel that the Fussy Validator is as “dumb as a dromedary,”[3] but Joe’s basic point stands. No software program can truly evaluate something as nebulous as “accessibility” or “proper coding practices”. Fussy Validation is an interesting concept, but it should probably be considered to be an advanced option and turned off by default. If people start conflating Fussy Validation with Real Validation, we’re going to be in for a bumpy ride.

1. And not because I’m feeling too lazy tonight to change and rebuild all my MT templates. I am thinking of nothing but the educational benefits for you, dear reader.

2. The head would be the row of weekday abbreviations, and the body would be everything else.

3. For one thing, I seriously doubt that any publicly-available software has managed to reach the intelligence level or complexity of even a spirochete.

Bats and Wolves, Living Together, Mass Hysteria

When The Matrix Reloaded was released early this summer, one of the more bizarre criticisms of the film was that it lacked vampires and werewolves. Even more astonishing was that one of my oldest and bestest friends agreed.

I thought the issue was dead and buried (hee!)… but, err, no. Behold Underworld: a rather hastily-thrown-together port of the Matrix look-and-feel, complete with hordes of monstrous werewolves and vampires lurking in the shadows.1 Oh, there are some cosmetic differences. The grim faced warrior-babe in black pleather is played by Kate Beckinsale; the confused surfer dude who might have mysterious, untapped superpowers is played by… some guy from Felicity. But there you go — the Matrix with lots of guns and swords and vampires and werewolves. With a Romeo-and-Juliet spin. Sam and I saw it last night, and all I have to say is, happy now, Sammy? Actually, I already know the answer to that question.2

In Other News: Idiotic Newspaper Columnist Excoriates Idiotic Sun Trademark Policy. Now I hate picking on the Mercury News — it’s basically my hometown paper, and M’ris lobs enough stinkbombs their way as it is. I’m also trying to avoid using the word “idiotic”, because it’s really just a forceful reminder of how easily web writing can degenerate into childish namecalling. I’m approaching 30 now, and such behavior is unbecoming.3 That said, Dan Gillmor just gets under my skin. Maybe it’s his unrelenting histrionic tone. Or maybe a very good friend of mine happened to have the misfortune to have worked with him, and I now have plenty of (secondhand) Dan Stories. Whatever, the guy bugs me.

Now, as an ex-Sun employee, I have to say that while there are plenty of complaints one could make against Sun, being upset that they have a 3rd-party trademark policy is just obtuse. All 3rd-party trademark policies consist of silly, pedantic guidelines on how to properly string together product names. That’s essentially what trademark policies are. As one of Dan’s astute readers pointed out, Apple’s trademark policy for 3rd parties is quite similar to Sun’s. Meanwhile, Knight Ridder (Dan’s employer) neatly avoids this problem by simply forbidding all unauthorized usage of their trademarks whatsoever. Well, that’s much less idiotic.

What about other major computer companies? Perhaps they don’t have such “ridiculous rules.” Let’s see, here’s some ridiculous rules from IBM. Or what about Microsoft? Eeek, not only do they have a trademark policy, but they have specific guidelines just for the media. Outrageous! What about the First Amendment!? Freedom of the Press! I can just see Dan’s hysterical column/rant on that one. It practically writes itself.

But of course those are all giant world-dominating computer corporations. Wicked, bad, naughty, evil corporations. So what about warm, fuzzy open-source Red Hat? Nope, they’ve got a substantial trademarks section, complete with — wait for it! — examples for 3rd-party usage. Okay, but how ’bout OSDN, home of Slashdot and SourceForge and all that is Good and Right and True in the computer industry today? Turns out their statement on 3rd-party usage is buried in the OSDN Terms of Service: “Users may display or use the OSDN Marks and VA Marks only in accordance with OSDN’s and VA’s Trademark Use Guidelines.” Unfortunately, said “Use Guidelines” are helpfully not linked, and after struggling with OSDN’s site navigation and search engine, I soon gave up trying to find them. Perhaps OSDN has the smartest 3rd-party trademark guideline of all: the phantom guideline. At least that provides protection from what every company fears most: the mocking of journalists who, despite having over two decades of experience in the industry, don’t have the first clue about how trademarks work in the real world.

1. Not unlike Windows XP.

2. “No.”

3. Then again, Dan is much older than me and he uses “idiotic” freely. So what the heck.

Just Flew In From LA…

…and boy are my arms tired! Zing!1

Err, anyway. So on the flight back from Los Angeles I sat next to a rather large man. We chatted about Sports Night and 802.11b versus 802.11g, but things got a bit more interesting when I asked whether he had been in LA on vacation or business. “Business,” the man said. What kind of business? Turned out he had been a delegate at this weekend’s California Republican convention. At that point I had to ask, “So who do you like, Arnold Schwarzenegger or Tom McClintock?” Turns out he was a McClintock fan. McClintock is a “good man” who “knows what he’s talking about,” while Schwarzenegger is “way too liberal.” Hmmm. Perhaps my seatmate was, like me, unimpressed by Schwarzenegger’s platitudes about solving the state budget problem by “auditing the books and cutting waste.” After all, if you’re campaigning to yank an official from office because of his bad policy decisions, at the very least you ought to have some concrete plans on what you’d like, do differently and stuff.

I should point out that a good friend of mine has told me that I’m totally wrong about this and that concrete plans are for suckers. The argument goes like this: since everyone in the race is going to lie like hell about what they’re going to do in office, you might as well base your vote on personality alone. Pick someone who’s tough. Someone who will shake up the status quo. Send a message. Kick ass and take names! The counterargument is that media personalities are manufactured just like anything else, and that when it comes to divining a candidate’s true personality, you might as well try phrenology over press clippings. I suppose my friend and I are both back at square one.

So the key question these days is: will the Republicans split their vote and end up losing to Cruz Bustamante? One likely scenario is that Cruz Bustamante will win, but the total of the votes for McClintock and Schwarzenegger will exceed Bustamante’s. And thus we Democrats will be able to feel smug about fending off a Republican takeover, and the Republicans will be able to feel smug about how they would have won if not for that blockhead [McClintock|Schwarzenegger] staying in the race. (Of course the latter reasoning conveniently ignores the fact that VM + VS is almost certainly greater than V(M+S), but hey, minor detail.) Anyway, I asked my seatmate if he was worried about this vote-splitting problem. He admitted that yes, he was, although he was hoping that Schwarzenegger would drop out. Heh. That seems unlikely — Schwarzenegger strikes me as, if nothing else, a ferocious competitor. Then again, I can’t be sure… I haven’t examined the bumps on his head.

1. Okay, so that wasn’t a tech writer joke. Nor was it much of a joke at all. Hey man — it’s my journal, back off.

But Seriously, Folks

Dana Whitaker: I don’t think you’re cute. I don’t think you’re funny. I don’t think you’re smart. And sometimes… I don’t think you’re very nice.

Casey McCall [anguished]: You don’t think I’m funny?

It has recently come to my attention that there is an alarming shortage of technical writer jokes. Lord knows there’s plenty of engineer jokes and programmer jokes. It’s easy to find physics jokes. Yahoo has an entire category devoted just to silly chemistry songs (including Tom Lehrer’s 1959 opus, The Elements). There are firefighter jokes. Plumber jokes. Social worker jokes. Need accountant jokes? I got your accountant jokes right here. Want actuary jokes? Head on over to actuarialjokes.com.

But there are precious few technical writer jokes. After exhaustive research on the subject,1 I only found a handful:

In short, the jokes are not exactly thick on the ground. So are we technical writers just not funny? My colleague at work disagrees. “I think everyone just knows that we are simply Not To Be Made Fun Of.”3 Well, that makes me feel better. In any case, if you have any more technical writer jokes, please feel free to send them my way. I’m not exactly going to rush out and register “techwriterjokes.com”, but it’d be nice to see some evidence that there’s more out there. We can at least beat the accountants, for crying out loud.

1. I.e. a cursory Google search.

2. Except for this one. Q: How many psychotherapists does it take to change a lightbulb? A: One, but it has to really want to change. Hee hee!

3. Note the skillful closure of the sentence with a preposition. This dangerous grammatical construction is for trained professionals only. Laypersons, do not attempt this at home.

Mirror, Mirror

Had I crossed into a parallel universe?

The first bizarre experience was when I called Blue Cross to cancel my individual health coverage. While contracting, I had been paying for the absolute cheapest health care package I could — the kind of package that basically only covers catastrophic events. Blue Cross has some fancy name and number for this package, but they should really call it the “Be a good son and pay us some money so that you won’t bankrupt your parents should (God forbid) you come down with a horrible degenerative disease” package.

Anywaaay, I called Blue Cross, got through right away (whoa!) and asked to cancel my policy. The lady told me that A) I had to fax in that request, and B) the billing date had passed for the month, and so I was still on the hook for one more month’s payment. Bummer. I thanked her and hung up, annoyed with myself for waiting too many days. Then two minutes later, the phone rings. “Hello, sir?” Although I had given up, she had gone to the effort to ask her supervisor about this. It turned out that if I faxed in the request that day, it would arrive in time to cancel for the month. Woo! Yay Blue Cross customer service department!

The second bizarre experience was when I called the IRS with some questions about whether I needed to pay estimated tax for some contract work earlier this year. To my amazement, I got through right away (again, whoa!) and ended up speaking with an IRS customer service rep for about 20 minutes. We went through some options, crunched some numbers,1 and in the end I knew exactly how to proceed. I guess there’s something to be said for calling the IRS in September rather than April, but still — yay IRS customer service department!

At this point I was becoming convinced that I had stepped into some sort of parallel universe where everything is turned upside down. Could Evil be Good? Could Good be Evil? Could violating a business contract have actual consequences in the real world?2 But then on Friday night I met up with Pat, Sam, and Mike in downtown Campbell, and none of them were wearing evil parallel-universe goatees. Whew. For a second there, I was getting worried.

1. I realize I’m a little quirky in that I actually like crunching numbers.

2. Nah.

Son of Bulletproof XHTML

I’m pleased to announce that I am the latest guest columnist for A Second Voice, Dave Shea’s collection of articles on standards, markup, accessibility, and more.

For those of you who don’t follow such things (hi Mom!), Dave is the caretaker of the CSS Zen Garden, which has quickly become the repository for elegant and modern website design techniques. For this reason, I’m deeply honored that Dave tapped me to write this piece,1 which grew out of an earlier discussion with Dave and Jacques on creating Bulletproof XHTML. I should note that the previous Second Voice article by Ian Lloyd discusses the importance of promoting web standards out in the workplace, while my article discusses the practical difficulties and considerations in maintaining compliance with these standards. I think the two articles bookend each other nicely, although I get the feeling that Ian is playing Good Cop and I’m playing Bad Cop. Well, we’ll see how this plays out.

1. Particularly considering what a horrible green eyesore my site is. At first I worried that I was going to ruin Dave’s rep as a designer just by association. But then I got over it.

Cursed Frogurt

Jacques has a nifty new feature on his sidebar that serves up a random “Bushism” every hour (taken from the master list at Slate.com). Whoa, I thought. Is Slate serving up an RSS feed of Bushisms? Did Jacques build some sort of custom HTML scraper tool in his copious free time? The truth was a bit more mundane — Jacques simply pasted all the quotes in a local flat file. Heck, even I coulda written a script to handle that. Says Jacques: “My motto is, ‘Low-tech solutions for a low-tech presidency.'” Heh.

In Other News: my blogmother M’ris has done got herself her first house!

That’s good!

The house is in faraway Minnesota.

That’s bad.

The house is really nice, though, and they’re very happy with it.

That’s good!

But the house was almost taken away at the last minute by Steve the Accursed Mortgage Being.

That’s bad.

They replaced Steve with Pam the New Mortgage Being.

That’s good.

Can I go now?