September 1, 2011

Nine days a month

A bug in Microsoft Windows which has existed for 25 years or so has now spread to Windows Phone 7. I reported this bug back in the mid 1980s before I left the company but somehow it has never been fixed. The bug is quite visible, but only happens nine days out of every month.

I still have a lot of friends at Microsoft and every now and then I mention it to them. I've even demonstrated it with my snazzy Samsung Focus, now running the kick-ass Mango 7.5 OS, and they usually do a double take, blink, and say they can't believe it's never been fixed.

It doesn't cause any data to be lost. It doesn't cause crashes. It's simply aesthetic. Perhaps for that reason it has remained on the low-priority bug list for 25 years. But I know exactly how to fix it, and the fix involves a one-character change to Windows.

I'll explain.

Around the time Windows was released, Microsoft was building its international business by localizing all of its products. This involved taking out all of the hardwired English messages and replacing them with the appropriate text in the local language. We did this by taking all the text out of the program itself and putting it in a small database. The program would say "display message number 17" and the appropriate text would be fetched from the database in the local language.

It wasn't that simple, though. There were other local conventions such as currency unit and date format. In America we put the month first (9/1/2011) but in Europe they put the day first (1/9/2011). That is known as the "short date" format and it can be customized, both by Microsoft so that when you install Windows it uses the format customary for your location, and by the user, if for some reason you want to use a non-standard format. You just go to the control panel for "Region and Language," click on "Additional Settings," go to the Date tab, and you can create your own format. For instance, if you only want a two-digit year (as was customary before Y2K), you would modify the short date from "m/d/yyyy" to "m/d/yy". Or if you wanted leading zeroes for one-digit days and months so that all the dates would line up neatly in a column, you would say "mm/dd/yy".

There's also a "long date." In America, we say "Thursday, September 1, 2011." In England they say "1 September 2011." And of course in other places they use different languages for "September." It all works beautifully.

Except that in the very first release, some unknown Microsoft employee inadvertently put "dd" instead of "d" in the US English long-date format.

Go look. Put your mouse down over the time in the lower right corner of your Windows screen and see what it says. Nine days a month you'll see something like "Thursday, September 01, 2011."

(If you're like me and now, knowing this, it will bug you forever, just go to the control panel mentioned above and delete one of the two d's in the long date format so it looks like "dddd, MMMM d, yyyy".)

Honestly I thought someone would have fixed this by now because it drives me crazy knowing that hundreds of millions of people are seeing that extra zero nine days a month. And now with Windows Phone 7, they've copied the meme and there's not even a way to edit the format string (although they graciously give you a choice of four long-date formats, all with the bug).

I'm currently lobbying with two of my highly placed friends at Microsoft to finally get this fixed, at least for the phone where the date stares you in the face every time you look at it. But until then, I grit my teeth nine days a month.

Happy September 01, everyone.