Now for something completely different...

I was in a weird mood and wrote some lyrics, or poetry, or something. I'll just post what I wrote without further comment and let you draw your own conclusions...


Hungry is the bear who lives
A life of shameless luxury
Within the porticos of tents.
Never have the learned ones
Bathed all the infants of the poor
With such aromatic ointments.

I've come from Alabama
With a basket full of questions,
But no one ever answers me.
I'm running from the lawyers,
But I'll sing you my life's story
With the banjo laid on my knee.

Run me ragged.
Rain on my parade.
Strip me naked.
Only the truth will set me free!

Ride the endless bullet train
Until the early winter sun
Sprinkles you down upon its bust.
Cover our ears with cotton
As the earwig conceals its pups
With a thousand motes of sawdust.

I am just a single man,
Treading grapes of speculation
In the winepress of my own mind,
I've sold my hesitation
For that bread and red lentil stew
Because my brother was so kind.

Ride me roughshod.
Call me a loser.
Take my ephod.
Only the truth will set me free!

File down your fingernails
Until the marrow shows right through,
Until you've beaten a dead horse.
In a universe of pain,
Nothing fills the head with knowledge
Like the dread tutor of remorse.

Clench my collar.
Listen to me wail.
Hear me holler.
Only the truth will set me free!

Feed me toxins.
Halt my reverie.
Sell my organs.
Only the truth will set me free!

Cut me deeper.
Drain out all my blood.
Kill me faster.
Only the truth will set me free!

Niagara Falls


I suppose I should at least post one photo from the Niagara Falls trip, eh?

Hmmm... maybe I'll make it one from each side...


BTW, if you ever go, I do recommend riding the boat. That was significantly better than I expected.

Web Browser Upgrade Cycles (Update: including Webkit browsers)


Okay, my last post was purely editorial, so this one is going to be purely observational, with no editorial commentary. These graphs show how the two most popular browsers (MSIE and Firefox) compare in terms of new-version uptake, among users of a website that I maintain. From looking at these graphs, it is clear that new Firefox versions achieve, on average, much more punctual uptake than new MSIE versions. This is apparent despite the fact that the graph skews things significantly in MSIE's favor by using version numbers (as opposed to release dates), even though Firefox versions are released much more frequently.

Firefox 2.0 was released in October 2006; MSIE 6 was released more than twice as long ago, in August of 2001. IE 7 was released in October of 2006, around the same time of Firefox 2.0, and has an absolutely overwhelmingly higher remaining usage share, taken as a percentage of the overall usage share for all versions of each respective browser: around twenty percent versus around half a percent during the last two months. (If you do the arithmetic naively you get 19.4% versus 0.54%, but there's significant false precision there. It's based on only two months of data for just one site, so you really have to consider the results as round, approximate figures.)

If you look at the stats for a different website, your numbers will of course vary. Nonetheless, it's very clear from these graphs that new Firefox versions are installed, on average, rather sooner than new IE versions. I could speculate on possible reasons for that difference, but for now I'll leave that as an exercise for the astute reader.

Update: Here are my graphs for the two major Webkit browsers.


Note that, with the sample size being only one site and the usage share of these browsers being smaller, these graphs can (potentially) be significantly skewed by a relatively small number of users. For example, why did usage of Safari 4.1 only become noticeable after 5.0 was released? My guess would be that this is an anomaly. At its peak, Safari 4.1 made 218 page loads from our site in a quarter. That's full page loads, not raw hits, but it could still be explained by a single user.

Still, you can definitely see a trend toward fast uptake of new versions, particularly on the Chrome graph. I could speculate on the reasons for this, but at the moment I'll refrain. If you really want to see a difference, compare the Chrome graph here to the MSIE graph up top. There's obviously a marked difference in upgrade frequency from one browser to another.


Finally, here's a version of the Firefox graph that breaks down minor versions (3.1 versus 3.0 and 3.6 versus 3.5), which is better for comparing Firefox to the Webkit browsers. The first Firefox graph, which groups minor versions, was intended for comparing against MSIE.

Firefox: Why I Refuse to Upgrade

Everybody knows, newer is better, right? Well, sometimes. Sometimes not so much. Sometimes newer is worse. Sometimes newer is a lot worse.

Recent versions of Mozilla Firefox, for example, have been getting a great deal worse in a wide variety of ways. In this post I will catalog just a few of the most annoying reasons why they are worse, and why I am steadfastly not upgrading.

However, lest anyone think I am entirely negative all the time, I want to start out by spending a couple of paragraphs pointing out a couple of good things.

In the first place, I want to note that I am only talking about this at all because Firefox is my primary browser, the one I use most. Being a web developer and a geek, I experiment with a wide variety of browsers. Firefox is the best of them. When I first started discovering the problems that the rest of this diatribe will talk about, I considered switching to another browser, but the plain and simple fact is that I was unable to find another one that's as good. There isn't another one that's as good. Firefox is the best.

On top of that, the Firefox dev team have been working, trying to make improvements, and a handful of the improvements they've made have been good ones. They've added support for CSS properties that weren't handled before. One of the ones I personally find useful, not just for aesthetic purposes but in some cases for practical reasons, e.g., improving legibility when there's an image in the background, is text-shadow. That's a very worthwhile thing. Even better is the new support for display: inline-block, which makes whole categories of layouts easy to do that were previously, in a word, not. There have also been some performance improvements, which are quite noticeable on older single-core hardware. So I don't want to imply that the Firefox developers haven't been doing anything good. They have.

But they've also been making mistakes lately, some of which are quite serious.



Here's something that's easy to see: recent versions of Firefox can't seem to display certain images (a LOT of the images on the web) without darkening them considerably. Here are a couple of screenshots (one cropped, the other scaled down, but they're not doctored in any other way) showing the same image in Firefox 3.6 and in Gimp. I want to be clear that this is exactly the same image, bit-for-bit. Notice how much darker it looks in Firefox? It's not supposed to be like that.


The same problem shows up in every build starting around version 3.5. Here's a screenshot of Firefox 4.0.1. Again, this is cropped but otherwise undoctored.


How did Firefox 2.0 handle it? Well, let's see here... Oh, look, Firefox 2.0 displays exactly the same thing as Gimp. The latest versions of other browsers, such as Opera and Chrome and even MSIE, do the same thing as Firefox 2. So does every other image display program I have tested. Recent versions of Firefox are the only software I have found to have the odd darkening effect.

Update: Here it is in an alpha build of Firefox 8:

(Yeah, the desktop there looks different. When testing new versions, I use a separate user account, so as not to mess up the profile -- add-ons and configuration and such -- in my regular account. It's easier than dorking around restoring from backups.)

Okay, so that's purely an aesthetic issue. I mean, it's annoying, but it doesn't cause any real material harm. It's not like the images are totally black and impossible to see, or anything. It's just like you're looking at them through really dark glasses. So, no big deal, really. Sure, it's a bug, and they should fix it, but on the balance if that were the only problem I'd upgrade in a heartbeat.

Here's something more serious: all versions of Firefox starting from the 3.0 dev cycle have a serious dataloss bug that shows up if you use bookmarked tabsets. What happens is this: the first time you choose Open all in tabs after upgrading, every single website you already had open in a tab vanishes. You panic and just about keel over from a heart attack on the spot, but once you take a few deep breaths you discover, much to your relief, that the back button does work. You have to go through and hit the back button on every tab, but you're able to recover (at least most of) your tabs. Okay. So, now, how to stop that from EVER happening again? You hunt through the prefs and find the option that controls this disastrous never-should-have-been-implemented new behavior, and you turn it the everliving %#$@! off, and you think you've solved the problem.

But you have not solved the problem by changing the preference. You've just made the problem more subtle, so that each time it happens it can go unnoticed until it's too late to retrieve what was lost. What happens now, each time you click Open all in tabs, is that one of your existing tabs is replaced. If you don't notice this, you make the mistake of hitting close-tab like you normally would when you're done with a page that you've opened, and now you're now short one of the pages that you had open, probably one you weren't done with, possibly something important that you needed to remember to deal with. This happens every single time you click Open all in tabs, until over the course of a few hours or days of regular browser use you eventually figure out what's happening. It took me about three days. I knew I was losing tabs, some of which were kind of important, and I was very much in a lather about it, but I didn't understand out how or why it was happening. Undo Close Tab only showed me pages I didn't need any more, and I couldn't find the ones I'd lost. It was like returning to the bad old days before sessionstore, when a plugin crash or power outage meant things you'd had open were just gone. (Update: this one will be fixed in version 8, but the fact that such a serious bug persisted across no fewer than six releases before finally being eliminated is very telling. Somebody was a little too concerned about dorking with the toolbar layout and just completely forgot about checking to see if there were any dataloss bugs that should be fixed before release -- several times in a row.)

Firefox 3 also crashes significantly more often than Firefox 2. (I don't rightly know how crashy Firefox 4 is or isn't. I haven't used it very much, on account of the fact that it hasn't addressed the above problems.) Firefox 2 never crashes, unless you try to open completely insane numbers of tabs at once. Firefox 3 crashes more than any previously released version of Firefox since clear back when it was called Phoenix.

I haven't even talked about insane new behaviors and UI (*cough* tabs on top *cough*) that can be configured away by changing some settings, because hey, if changing some settings is all I have to do to get things working right, I can handle that. End users might feel differently, but I'm a network administrator. If I can handle tracking down dependencies and compiling things from source, I think I can manage changing a couple of settings. I could write another whole post explaining why e.g. Tabs on Top is stupid and why the arguments in its favor are nonsense (maybe I will write that post later, if I have time), but ultimately it's not important, because I can just turn it off anyway with a pref, so who cares?

But I do want to say one general thing about the UI changes in recent versions: starting with Firefox 3.0, every single UI change, without exception, is something so undesirable that I have difficulty imagining anyone would ever actually want it. Not a single one of them is useful, even potentially. As long as I can turn them all off with preferences I don't really care, but when there are big outstanding bugs, including dataloss bugs, persisting over *multiple* versions (and I'm not talking about a couple of point releases), maybe it's time to stop needlessly fiddling around so much with the UI for a while and concentrate on basic stuff like stability and correctness. IMO, if the Firefox team spent the next entire release cycle just fixing bugs and not introducing any other changes at all, that would be a good thing.

So that's why I'm not upgrading to recent versions of Firefox. I've got 2.0.0.20 both at home and at work now, and I'm sticking with that as my primary browser for the forseeable future.

What would have to happen for me to change my mind? Someone would have to release a browser that's better than Firefox 2.0.0.20. That is all.

Rejected Ideas for Library Summer Reading Promotional Themes

Sometimes the summer reading themes they send you are a little bit lame. (One of them this year is You Are Here. Really.) Sometimes this gets us talking about the possibility of creating our own theme. It shouldn't be that hard...

But sometimes we get silly. Here are some of the ideas that didn't make the cut...


  • You Will Read and You Will Like It!

  • Reading: It Ain't Rocket Surgery.

  • Summer Reading... Where the Sun Don't Shine

  • Alien Vampires versus Ninja Nanobots

  • Studying All Summer Long

  • In Which We Examine Thoroughly All the Greatest and Most Widely Renown Literature of the Last Three Millennia and Draw Some Interesting Conclusions, @ Your Library!

  • O HAI. I K/\N H4Z BUXZ?

  • Tell Me Another One, Gramps!

  • Cooped Up Inside Reading

  • Books Is Good

Three-Balloon Clown (with Twisting Instructions)

The event at the Y on Sunday night was great. We had a fantastic turnout.

For my part, the balloon animals were very popular, and I was able to satisfy all the first-requests from children (i.e., all the requests made by children who didn't already have a balloon animal) save one.

That one, of course, bothers me. Sure, eventually the mother talked the little girl into something I actually knew how to make, but you could tell she wasn't really happy with it. Also, it's not like what she asked for was bizarre (Can you make me a balloon of the invisible man?), an overly-specific licensed character (Dora the Explorer, please!) or inherently difficult (e.g., porcupine). No, all she wanted was a clown, and I didn't know how to do it. A clown. That should be easy, right?

If I'd had five minutes to figure it out, I probably could have come up with something, but I was on the spot in the middle of a crowd of about fifty balloon-seeking supplicants within a two-yard radius, so I didn't have the luxury of spending a lot of time doing custom design.

So it bothered me, and I came home and did some quick searching on the internet, but it turns out to be pretty hard to find twisting instructions for a clown, on account of the fact that every third twisting design for a dog or monkey or anything is "by so-and-so the clown". You get a lot of irrelevant hits.

However, I happened to be browsing around over at balloon-animals.com and ran into Michael Floyd's design for a balloon gingerbread man, and a light went on for me. A gingerbread man is at a very basic level a humanoid design. A clown is also a humanoid shape. The difference is mostly about color.



So, here we are, a three-balloon clown, using standard 260Q balloons.

The red and blue balloons are each inflated about three quarters of the way and have identical twists: pinch twist for the heel, petal twist for the foot (which you can make a little bigger than I have if you want floppy big-shoe feet), longer bubble for the leg, small pinch twist for holding things together, a bubble for the body, another pinch twist for holding things together, then the arm, petal for the hand, pinch twist for the thumb, cut off the rest and tie. Once you've done that with both colors, twist the two halves together via the small pinch twists at the top and bottom of the body. (All of this so far is basically just like the aforementioned gingerbread man, except in different colors, and if you follow the above link there's a video you can watch that shows exactly how to do it.) Arrange it so that the right arm is the same color as the left leg and the left arm the same color as the right leg. Then tie the white balloon in at the waist, make three small bubbles for the buttons, stretch them out a little and tie in at the neck, then do a small petal twist for the face and a larger petal twist for the hair. Cut and tie. Put the smaller white petal (face) inside the larger one (just like making the wheels on the two-balloon motorcycle; Floyd has a video for that too) and arrange it so the face faces forward and the outer petal (which will be the fro wig) is around the edge like a lion's mane. Draw the make-up and rainbow hair on with markers, and use standard shaping techniques to put bends in the knees and elbows.

Voila, a three-balloon clown.

Balloon Animals: I'm a little rusty.

Okay, before I show you the picture, I want it understood that until last week I hadn't made a balloon animal for several years. I'm not a professional balloon entertainer. I'm a network administrator.

With that said, I've been practicing. See, there's an event coming up in March, connected with our fiftieth anniversary celebration, and someone (a family member, I imagine) let slip that I know how to make balloon animals.

This is true, up to a point. A Philadelphia-area clown going by the name of Pockets taught me the basics in 1992. I made a few that summer (fewer than a hundred, because I only bought one bag of balloons), and then a few years later I made some one day while working at a county fair booth (again, fewer than a hundred, although I also picked up a spare bag of balloons, which I never ended up opening at the time).

So, when word got out that I know how to do this, everybody said ooh, yeah, if we could have balloon animals at the open Y night, that would be great. Okay. How do you say no to that?

I figured I would need to practice up, so I ordered a bag of 250 balloons, plus a pump, and I broke open the bag of 100 that I had sitting around and started practicing. You can stop cringing now. Some things I remembered, and other things I looked up on the internet. (Did I ever mention that the internet is useful? The internet is useful. I've increased my repertoire of animals by at least 25%, maybe more like 50%.) This is as good a time as any to show you a photo...



Okay, so I need a little work on consistent sizing and on correctly gaging inflation levels. I have a couple of weeks yet before the event, and my old bag of 100 balloons is holding up rather better than I expected, given how long it's been sitting around. The black ones for some reason have almost all popped or otherwise misbehaved (with the two notable exceptions both visible in the photo near the front), but most of the rest are doing alright.

I also made, through the happy accident of not knowing how full to inflate the balloon for an animal I hadn't attempted previously, an interesting discovery. If you follow these instructions for making a squirrel but underinflate the balloon so that you run out of air just as you finish the back legs (taking the uninflated tail and rolling it through between the legs to lock it), you get, if you happned to use a black balloon, something that, in my opinion, looks an awful lot like a scottie. So if you ever wanted to twist a one-balloon scottie dog, there you go.

Here's a close-up photo of the one-balloon scottish terrier:

(Ignore the yellow; that's a reflection.)

Here are instructions to make the scottie: Start with a small pinch-twist for the nose, follow that up with a smallish roll-through (i.e., make three identical bubbles, twist the first two together, then roll the third through between them) for the muzzle and then two fair-sized pinch-twist ears. After a small neck use the remaining inflated portion on legs, body, and legs, leaving the uninflated portion for the tail, which you twist around and tuck through the legs before bringing it up into position. Done. For proportions (on everything but the tail), consult the aforementioned squirrel directions, which include a length diagram. Actually, the tail still uses up the same amount of balloon rubber for the scottie as for the squirrel; it just looks smaller because it's not inflated. HTH.HAND.

What were "pocket protectors" anyway, and why are really old people always talking about them?

We've all been in this situation: you're talking with an old person, and through one circumstance or another the fact comes up that you know something about computers, or at least use them, or that you have studied a little math, or science, or accounting, or business, or pretty much any other subject that the old person doesn't know anything about.

Anyway, as soon as they find out that you know something about anything, they immediately make some kind of remark about "pocket protectors".

Huh? What does that mean? What's a pocket protector, and what does it have to do with the differential equations class I'm taking?

Having heard these "pocket protector" remarks all my life, a couple of years ago I did some research and found out what it's all about, so now I can share that knowledge with you. The short version is that what these remarks really mean is that the old person hasn't really caught on to the fact that they're old and the world has changed since they were in school. Okay, so you probably already knew that part. The details, however, are interesting...

As you are probably aware, technology is constantly improving. If the laptop that was so awesome you couldn't afford it last year is now selling used on ebay for approximately the same price as a discount ringtone, imagine how primitive computers must have been way back in the twentieth century! In fact, you probably can't imagine it, because any degree of primitiveness you can think up would still be a good deal more advanced than what they had back then. But that's okay, because you don't have to imagine: I'm going to actually tell you.

In your great-great grandfather's day, microchips and even transistors simply hadn't been invented yet. Instead they used something much more primitive (and larger) called a "vacuum tube". A single computer filled up an entire room. Several scientists were required to make it work, and it would take weeks or even months to complete a computation that your phone can do in under a second.

Speaking of phones, they had to be wired to the wall in order to work, and they didn't have screens, and you couldn't use them to send text messages or do anything else. All they could do was make phone calls, and that was *it*. Even for that you had to dial them, and I mean actually dial, not select a name from a list. If you wanted to send a text message back then, you had to write it on paper.

Cars in that era were made out of metal, and they didn't have cupholders or power windows, and to pay for your gas (petrol for British readers) you had to actually go INTO the gas station.

They didn't have "pay at the pump", because credit cards hadn't been invented yet. Back then, if you wanted to borrow money to buy something, you had to make an appointment and speak to a person at the bank called a "loan officer", and he would expect you to be able to show that you could afford the payments, or you wouldn't get to borrow the money.

You may already know (perhaps from watching something old with your grandparents) that movies were in black and white back then, and the special effects were really cheesy. What you may not realize is that people couldn't just watch movies whenever or wherever they wanted. If your great grandparents wanted to watch a movie, they had to go to a place called a "theatre", which was basically a dedicated building just for watching movies. (Well, sometimes a building; other times the theatre was outdoors in a sort of parking lot, and you'd watch the movie through the windshield of your parked car. Really.) Even small towns had a theatre (larger towns often had more than one), and people would come from all over town to sit in the theatre and watch a movie. There was only one screen for everybody, so they had to all watch the same thing. At the time, this didn't seem strange or restrictive to anyone, because movies were new and they just thought it was cool to get to watch one.

But it wasn't just the big-ticket technologies like phones and computers and cars and money and entertainment that were primitive. The little things were primitive too. Clothes, shoes, soft drinks, Jell-O (it didn't even come in blue), lunch boxes, and even such basic things as pencils and pens. That's right, pencils and pens were primitive, and that's why they had "pocket protectors". No fooling.

Today, with modern technology, we take for granted that we can just put a pen or a pencil in our shirt pocket and carry it there, and we don't expect anything bad to happen. However, this is only possible because we have modern pens. This is the really interesting part of the story.

You see, back in the dark ages, before a company called Walkman introduced the first rudimentary portable music players, the pens that they had were horrible barbaric medieval things called "fountain pens". Compared to modern ballpoint pens they were much harder to use. (Among other things, it actually mattered which direction the pen was rotated compared to the tilt of your hand against the paper.) Fountain pens were expensive, notoriously unreliable, and a hassle to use. The only reason people used them at all was because they were portable: you could carry them around anywhere. This was a new feature.

The pens people used before fountain pens wouldn't work if you took them away from the writing desk, because they relied on something called an "inkwell", which was built into the desk, to supply them with ink every few letters. The obvious solution to this was to put a supply of ink in the pen so you could carry it around, and that's what fountain pens were: pens that could carry a supply of ink around in them, so you could use them away from the writing desk and its inkwell.

You could use a fountain pen almost anywhere. This was such a useful feature that people wanted to carry the pens around everywhere, just like we do today. (It was even more important back then, because they didn't have portable computers or phones, so everything had to be written on paper.) The only problem was, the companies that made the pens hadn't really figured out how to do it right yet. The pens were unreliable, but the worse problem was that they leaked. Frequently. People wanted to carry them in their pockets, but they knew that if they did, they'd get pockets full of ink.

And that's why they needed pocket protectors. Anybody who wanted to carry a pen around in their pocket needed to protect the pocket from leaking ink. Scientists had recently developed a totally new kind of material called "plastic", and although it wasn't nearly as good as the plastic we have now, it was good enough to solve the problem. Somebody made little plastic pocket-shaped bags that wouldn't leak from the bottom and called them "pocket protectors".

People who wanted to carry a pen would put a pocket protector in their pocket and then carry the pen in the pocket protector. When the pen leaked, the ink would collect in the bottom of the pocket protector, and they could just pour it back into the inkwell built into the pen, and the shirt wouldn't be ruined.

That's a lot of trouble. If the pens leaked, why didn't they just use pencils? Well you see, back then pencils were made out of wood, and the point could not be retracted. If the tip broke off, you couldn't just click the eraser end a couple of times and extend the "lead". You had to actually sharpen the pencil using a device that cut away some of the wood to reveal more of the graphite "lead". Every time you did this, the pencil got shorter. Also, because the tip could not be retracted, and because the graphite "lead" was much thicker than on modern pencils, carrying a pencil in your pocket would often result in unsightly graphite stains, especially if you were wearing a thin or light-colored shirt. Then there's the possibility of poking yourself if the pencil was at all sharp. In short, the pencils were just as much of a pain as the pens.

So anybody who used pens and pencils on a regular basis (mathematicians, scientists, businessmen, teachers, students, doctors, nurses, ...) would wear a pocket protector all the time. People who didn't know how to write, or didn't have a job that required them to write, didn't need one.

So when old people ask you about your "pocket protector", all they're really implying is that you're not too dumb to write.

Creating a Tabbed Interface with CSS.

Well, this is interesting. I'm not entirely sure it's a good idea, but it's interesting.

Notes to Myself


Sometimes I write notes to myself. I do this because my short-term memory is imperfect. Call it a compensatory mechanism. Anyway, I've been doing this most of my life.

When I write notes to myself, I don't always necessarily want just anyone to be able to read them. Often the intended audience consists of exactly one person, me.

At some point I realized that, having studied a couple of foreign alphabets, I could write notes to myself in them, and most people wouldn't be able to easily read it, even if the actual words were entirely in English. Since English contains some phonemes that the foreign languages in question do not, I developed special conventions for representing those sounds, either by modifying existing letters with diacritical marks, or simply by taking a letter that normally represents a sound English doesn't use, and pressing it into service to represent an entirely different sound.

Of course, being the person that I am, I couldn't just leave it at that. After all, somebody might know the Greek alphabet. Somebody might know the Hebrew alphabet, for that matter. (This isn't as far-fetched as some might think. I know a handful of people who know both of those alphabets. In fact, I live in the same house with another such person.)

So naturally at some point I started mixing things up a bit. Being a bit of a glossophile, it was natural to learn several more writing systems and adopt some of the symbols from those. Some of the letters were too complex and took too long to write, so I simplified them by leaving off parts I deemed unimportant. At some point I changed my writing direction... and so it goes.

The note in the picture is a good example of the kind of thing I do now. (This particular note doesn't contain anything private, so if you're thinking of trying to decipher it, feel free, although you run the risk of being labeled a linguistics geek.)

Why am I sharing this? I have no idea. Maybe it's a feeler: am I really the only person who does this sort of thing?