You're currently viewing a very old version of this website. Follow me to the latest version.


September 30, 2002


Steve Champeon's XHTML/CSS art, with a little Perl glue. Click on any image to see the result rendered as a series of colored SPAN elements. Here's yours truly at SXSW 2002.

CSS List Tricks

CSS Design: Taming Lists. Tips on how to alter the appearance of HTML list elements with CSS. Includes the "horizontal collapsing list" trick, used here at

XML Transformations and Moz 1.1

I've been receiving reports from ADC readers that the XML transformation demo (discussed here) doesn't work consistently with Mozilla 1.1 for Win2K. I'm trying to track down the source of the problem, but it takes a certain amount of finesse (which I don't possess) to coax a usable bug report from Bugzilla, so if anyone out there can point me in the right direction, drop me a line and I'll credit you in the article.

September 29, 2002

CSS In The Real World

Adrian Holovaty: CSS in the real world. "Which code would you rather work in when there are four breaking news stories on the wire simultaneously and millions of readers are flooding your site, expecting up-to-the-minute updates?"

September 27, 2002

XML Transformations with CSS and DOM

My latest article for Apple, XML Transformations with CSS and DOM, looks like an article on using CSS and DOM to create client-side transformations of XML documents without the need for XSLT. But it's actually about how utterly cool Mozilla is.

September 26, 2002

That Voice Again

TwinsPop quiz, hotshot: the guy on the left side is actor Dennis Hopper. Who is his nearly-identical twin on the right?

Answer: that, believe it or not, is Peter Gabriel, who has made us wait nine years before releasing Up, the new record he recorded in between doing things like designing theme parks and stuff. Knowing Gabriel, this album is probably well worth the wait; I caught about 15 seconds of one track while dialing through stations, and that alone was enough to convince me. I want this record, the same way I want autumn leaves and coffee.

The complete album is available as a digital download from the PG site, and can be "previewed" for free until October 1. After that, Windows DRM kicks in and disables playback until you pony up ten bucks to buy the album. Interesting.

Good Times, Happy Times

What's everyone looking at?I had a good time on our vacation. It was one of those trips where, when people ask you "how was your trip?" you simply say "great" and leave it at that, because it's too exhausting to get into even the small details.

Some of the wildlife we saw on the trip:

...but no buffalo.

My favorite were the pikas, which are smallish rodents that scamper among the rocks at the higher altitudes. On our way through Wyoming we stopped to visit the Bighorn Medicene Wheel, and saw plenty of the critters on the 1.5 mile hike. A pika has a throaty squeal that sounds a bit rude, as if hurling ill-mannered derision in your direction as you pass.

A few weeks ago I had an interesting dinner with some fascinating Webfolk.

September 24, 2002

Nothing good

I've discovered the secret lair of the yellow jackets. Yesterday evening, as I sat on the back stoop talking to my brother-in-law PJ on the phone, I observed three of the little striped horrors clambering up from somewhere beneath the grass in our tiny backyard, very close to the sidewalk.

"Yeah," said PJ, "if you look closely, there's probably a little quarter-inch hole in the yard there. Take my advice: don't mess around with that hole. Nothing good can come out of it."

Not that I had any plans to put my face anywhere near that subterranean horror hive. Last night, I dreamed I walked into the kitchen to find a two-foot-long wasp clinging to the ceiling. Waiting for me.

The 'jackets have gotta go.

September 22, 2002

The X Is For Extensible, Not XML

Further proof that people who read this site are often far smarter that I am: a few wrote in pointing out that the DTD for XHTML Strict allows for only one namespace, fixed at So technically the W3C validator has every right to choke on additional namespaces. Removing the DOCTYPE allows the page to validate, but then you have a different problem: your document is now pure XML, so the validator doesn't catch your XHTML-specific errors if your markup is well-formed.

I had always assumed that XHTML was more XML than HTML, but it appears to be the other way around. It seems perfectly fine to use XHTML 1.0 as a stricter replacement for HTML 4.01. To take advantange of the bleeding-edge XML qualities of XHTML, it looks like the best option for now is to go all-out XML, import whatever XHTML elements you need with namespaces and hope the browser comprehends. Or, use some backend transformation (XSLT, perhaps) to provide HTML to the browser from your XML. In the meantime, I will continue to grumble at the complexity of it all.

September 21, 2002

Caveat Emptor

Would you buy a car from a salesman who ignored you because he and his buddies were too busy driving the cars around the lot?

Trick question. It could never happen. Anyone who's ever set foot on a dealership lot knows that it's literally a matter of seconds until a salesman zeroes in on you like a hungry lion on wildebeest calf.

Yet it's this type of service I've come to expect from certain types of businesses. You know, the places where the employees are too busy having fun to actually sell anything. Their job, obviously, is to play with all the cool merchandise, get huge employee discounts, and basically just kick it old school.

I've recently become interested in a violin, because I wanna learn how to fiddle to beat the devil and Ashley MacIssac. Now, I haven't bought an instrument from a store in over a decade, precisely because of the reasons I've described above. It goes like this: Scott enters store. Scott stands close by the item he's interested in. Scott waits for a very long time, hoping that one of the knucklehead employees will put down the $1300 Stratocaster (on which said employee has been awkwardly plunking out the opening notes to "Aqualung" for twenty minutes) and saunter over. Scott becomes irate after several minutes of this and stalks out of the store, usually to find the same item online (where salespeople are not involved) for far less money.

So I walk into this musical instrument shop on California Avenue to ask about violins. I'm interested in renting one, but I'm ready to buy if I'm offered something I like. I'm prepared to spend a Good Bit of money on a good instrument. (Let's go over this last bit again: I'm willing to purchase today. I'm prepared to spend money today.) There's a bunch of your standard music store employee types there: an earringed skater-looking kid, a thirtysomething shaved headed dude with a goatee, a hip-looking woman with curly brown hair strumming a guitar, and a few others. They all seemed to be having a rollicking good time, working at a music store and all. Who wouldn't be?

(Sometimes you can't even be sure that every person behind the counter actually works there, because the often carefree workplace culture often leads to employees inviting over an indeterminate number of friends to hang out. See also: extreme skateboard shop, funky art supply store near major art school, et al. )

I talk to the earringed kid a little while. He brings me a rental price sheet. He tells me that for a full-sized starter violin it's probably a better idea to buy. I agree. He wants to check out what's available in the back stockroom, can I wait? Sure I can. As he's walking to the stockroom, I follow him, intending to check out whatever's on the floor. As I pass the speaker cabinets, a loud sound suddenly erupts from behind me: BRAPPP!

The shaved-head dude is making farting noises into a microphone, and the sound is coming out of a small monitor right behind me, right at my butt. Then he makes some sort of face at me.

Now, lest you think I'm a poor sport, let me remind you that I, too, was once a teenager, and found the sound of fake flatulence to be an unending source of merriment. (Why, even the real thing can be hilarious, no?) No doubt I would have, under different circumstances, shared in the humor of the situation in a sort of male-bonding, Bud Light drinking huh-huh-huh kind of way.

But neither I nor Mr. Shaved Head were teenagers and had not been for a long time. And as I watched him chuckle and his pushing-forty buddies behind the counter cackle along with him, I wondered why in the world I should be willing to spend a Good Bit of money so that Mr. Shaved Head can continue to draw a paycheck for simulating customer flatulence with a $150 microphone and all of the other important duties he has to perform as Music Store Employee.

So, sorry Mr. Earringed Kid, I really hope you make up for the sale your buddy lost for you that day. I was prepared to give you a Good Bit of cash. But y'know something? That same night on Craigslist I found a decent starter violin with a hardshell case, bow, rosin and chin guard, and a handful of instruction books. For about a hundred bucks.

September 19, 2002

IE for *nix Goes Buh-Bye

Cam reports that Internet Explorer has been discontinued for Unix and mentions that Mozilla is a fine replacement. Indeed.

Questioning XHTML

Two interesting links regarding the use of XHTML: Ian Hickson's Sending XHTML as text/html Considered Harmful and Henri Sivonen's XHTML - What’s the Point? Both attempt to address the chicken-and-egg problem of XHTML, where your markup reaches a Schrodingerian point of flux, neither properly-parsed XML nor valid HTML. is XHTML 1.0 Transitional out of vanity, served as text/html out of sad necessity. You, however, are free to use perfectly-valid HTML 4.01 for your real-world web design needs. (Links courtesy of Martijn Kint.)

Creating Applications With Mozilla

Now here's something: the full text of the O'Reilly book Creating Applications With Mozilla is available for free online under the Open Public License. XUL, XBL, XPCOM, it's all here, baby. If you can wield XML, CSS and JavaScript, you're more than halfway to becoming a Mozilla developer. (Zeldmanesque hat tip to Andrew Wooldridge.)

September 18, 2002

Garbage Out

A gripe: XML namespaces. The W3 validator doesn't like 'em. Which is bad, because namespaces are vital to embedding XML (like RDF, MathML and SVG) into XHTML. Consider the following snippet:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
<html xmlns:sa="">
        <title>XML in XHTML</title>
          This is a P element from the "sa" namespace.

The validator returns the following error:

Error: there is no attribute "xmlns

This is all very frustrating to those of us who have come to use and trust the validator yet want to use the XML features of XHTML. I shouldn't have to resort to some conditional hack to show my pages validate. It would be nice if the validator politely reported that elements from exotic, alien namespaces had been detected and only checked for well-formedness. Anything is better than belching out an error for otherwise valid markup.

September 17, 2002

Play Deep!

The Outfield: Play DeepThis is what happens (1.3MB) when I have too much coffee and a few hours to spare before catching the train. Enjoy. (ps: the shaker is actually a plastic toothpick container with some sesame seeds, which I ate immediately after recording.)

<H2>Neat Trick</H2>

A few people have asked how the navigation bar headers on this site are done. It's a trick I adapted from CSS pro Eric Meyer's site. The headers are H2 elements with a special class itemhead applied. Here's the important stuff:

    border:1px solid #aaa;
    text-transform: uppercase;

I'm using CSS to override the default rendering of H2, forcing it to display as an inline element with normal weight. The fun part is the negative value of top, which causes the H2 to overlap the border of the DIV that contains it. Adding a solid background color and border completes the effect.

If you have a modern browser (IE5.x, IE6.x or Moz 1.x) you can turn off the stylesheet and see what this page looks like without CSS.

September 16, 2002


Unless you're deathly allergic, being stung by a yellow jacket is not a big deal. It hurts like hell for about thirty seconds, following by an irritating itching that lasts about a day or so. You get over it. The yellow jacket gets over it too, and lives to sting another day because, being a small wasp variant instead of a bee, yellow jackets don't die after stinging.

Still, there's something completely unnerving about the way a yellow jacket aggressively buzzes my head. Falling backward out of my chair, arms failing, potato salad scattering everywhere. Because yellow jackets don't just sting -- they sting and sting and sting until you get the point. They sting joyfully.

And recently I've learned that yellow jackets are carnivorous. They eat meat. This is why you'll often find several of them buzzing around the trash cans at your summer picnic, drawn by the smell of gnawed spare ribs and discarded chicken bones. In late spring, they hunt and devour caterpillars.

I find this particularly unsettling.

There is a nest of them somewhere nearby, hidden in the tall grass near our little fenced-in backyard. It's probably underground, because the sod is soft and lends itself to burrowing.

Normally this wouldn't bother me. I'm a live and let live kind of guy when it comes to critters. I'm more inclined to trap and release any spider discovered hiding in the bathroom. But I can't abide sociopathic stinging insects traipsing merrily about my house.

I caught one buzzing around our kitchen floor yesterday. I squashed it with a newspaper before it could warn the others.

Later that same day, I trapped one between the glass and screen window. It became severely agitated. "Release me so I can sting you," it droned coldly. Fat chance, I replied, and besides, insects can't talk. It was dead the next day.

Two more yellow jackets greeted me this morning as I tried to close the lids on the trash cans.

"Sweet gifts of pain," buzzed one.
"So much stinging," droned the other.
"Gah!" I replied, backing away towards the safety of the garage.

So now I'm on surveillance detail. I will study their flight patterns, watch as they buzz erratically across the grass. I will discover their hidden lair. I will come for them at twilight with foggers and foaming chemicals. Or maybe I won't.

September 15, 2002

My Summer Vacation

And how did you spend your summer vacation, Scott?

There's probably more, but I can't remember it all.