Welcome to MSDN Blogs Sign in | Join | Help

News

Thanksgiving on a Wednesday

Thursday and Friday are Microsoft holidays, so the next new post will be on Monday.  In the meantime, here's a "holiday" treat for you.


Thanksgiving in the United States is a holiday that always occurs on Thursday.  However, one year Microsoft moved it to Wednesday.  How?  Read on.

Growing up as a program manager working on Outlook, one learns a lot about the variety of ownership areas available in a product.  Outlook has marvelous opportunities: if you want to work on user interface, Outlook has tons of that.  If you want to work on a technical area, you can get involved with internet protocols and MAPI and RPC and the PST.  If you want to own big meaty features, you could own the calendar or the address book.

But, like in any trade, there are some less fun jobs as well.  As a novice PM in Outlook, there were a number of areas you could get assigned as a way of kind of "paying your dues": the Journal or the file system browsing module, for example.  Or, as I did, you could get stuck owning the very bottom of the barrel: holidays.

Outlook has always had a feature by which you could add holidays to your calendar.  I'm not sure who designed it, and I don't think it's in the huge book of original Outlook specs I have, but by the time I was first on the scene in Outlook 98, it was already designed, built, and in the product.

The feature was pretty bare-bones; it works like this.  There's a text file on the hard drive which includes holiday information in a very simple format.  (If you have a recent version of Outlook, search for an OUTLOOK.HOL file on your hard drive.)

The contents of the file look something like this:

[Korea] 80
Arbor Day - Singmok-il,2005/4/5
Arbor Day - Singmok-il,2006/4/5
Arbor Day - Singmok-il,2007/4/5
Buddha's Birthday - Seokgatansin-il,2005/5/15
Buddha's Birthday - Seokgatansin-il,2006/5/5
Buddha's Birthday - Seokgatansin-il,2007/5/24

When you choose to add holidays to your calendar, Outlook looks in the file (using string matching) to find a section with the country name you specified and then creates appointments for any dates specified in the file.  There's also a tiny bit of code which tries to avoid obvious duplicates.


The "Add Holidays to Calendar" dialog in Outlook

Once they're on your calendar, the holidays are just normal all-day appointments.  There's never been a way to represent religious holidays that start at a certain time of the day (such as sundown.)  Or to have a multi-day holiday represented except as individual appointments.

But the challenging part of owning the feature was the tedium associated with shipping a huge text file full of names and dates that have to be generated and verified mostly by hand.  I had passed on to me a voluminous "World Holidays" book and a couple of web sites to use as references... but so many holidays change or are based on bizarre lunar schedules that most have to be entered in and tested by hand each release.

The result was a feature design prone to failure in three ways:

  • Adding holidays to the calendar was a pure "import" of appointments.  There was no way to later automatically update or remove them once they had been added to the calendar.
     
  • Outlook 97 shipped 10 (ten!) years of holidays on the CD.
     
  • The process of creating the thousands of holidays involved typing them in from a book and proofreading them by hand.

Sigh.  It only took a few weeks after Outlook 97 appeared for people to notice a rather, ah, interesting Thanksgiving schedule.  That's right: Thanksgiving on a Wednesday.

Of course, many snarky press articles were written about Microsoft declaring a new holiday schedule.  The bug was fixed in the first service release of Outlook 97 (8.01), but because of the way the holidays feature was implemented, there was no automated way to fix it on anyone's computer who already had added the holidays. 

Happily, all of this transpired before I worked at Microsoft, but it made working on holidays that much more ominous--I didn't want to be the one at fault for the next "Thanksgiving on Wednesday."

The only other snafu I'm aware of (at least within the United States holidays) was a few years ago when yet another Outlook 97 bug surfaced: Memorial Day was a week late in 1999.  We issued a tool that could fix that holiday on the fly, but not everyone found out about the error until it was too late.  One particularly sad case I remember is that a couple bought tickets for the Indianapolis 500 automobile race which occurs each year on Memorial Day.  Unfortunately, they purchased plane tickets based on the dates in Outlook and somehow missed that Memorial Day came and went.

The short of it was that they ended up in Indianapolis a week after the race ended, confused and with nothing to do.  Eek.

I think we've done a much better job in the years since Outlook 97 at automating the process of creating and validating the holidays files (knock on wood.)  It's a tedious task, but one that's important to get right.  People depend on Outlook to run the details of their lives, and it needs to measure up to that trust.

As for the holidays themselves though, I'm reminded of the standard mapping software disclaimer: "be aware that some roads may not exist."


Don't Be Fooled: Thanksgiving's Always On Thursday

Posted: Wednesday, November 23, 2005 7:00 AM by jensenh
Filed under: ,

Comments

Jeff Parker said:

>> Outlook has always had a feature by which you could add holidays to your calendar.

It has?!?!?!?!

Well I will be a monkey's uncle. You know I have always wanted that feature for years. I just didn't think outlook did it. Never searched for it. I couldn't find it anywhere again after this post but some google searching finally told me how. You know this is a nice feature I wonder how many other people want this but do not know about it. I just went and asked our Exchange guy if he knew about it and he didn't know about it either. This tells me two things. The calendars default settings are optimal for most people. I never in all these years been in to configure options for my calendar. The second thing it tells me is there is definite room for improvement in the Outlook UI to let us know about these little features.
# November 23, 2005 11:05 AM

Mike Dimmick said:

Here's a regional variation Outlook doesn't know about: if Christmas Day or Boxing Day falls on a weekend in the UK, we get an additional Bank Holiday on the following Monday. If both days fall on a weekend, i.e. Christmas Day is a Saturday and Boxing Day a Sunday, we also get the following Tuesday as a Bank Holiday in lieu. This happened last year. Reference: http://www.dti.gov.uk/er/bankhol.htm (2005-2008) and http://www.dti.gov.uk/er/bankholhist.htm (2000-2004). The same applies to New Years' Day - if it falls on a weekend the next following Monday is a Bank Holiday.

From this list you can also see that our Bank Holidays are not well spaced - there are none between the end of August and Christmas Day. Strictly, employers are not required to make any special arrangements regarding Bank Holidays - they are simply days on which banks are not required to open. By convention, however, most employers - for office workers - do not include bank holidays in their statutory requirement to give 20 days of holiday to full-time employees; most employees get more than this, for example I get 25 days' holiday each year.
# November 23, 2005 11:34 AM

ChrisC said:

You wrote:
> Outlook 97 shipped 10 (ten!) years of holidays on the CD.

Ten years is too much? Well *4* years worth is way too few, IMHO.

That's right, I have no holidays in my calendar after 12/25 because I have Office `02
(The .HOL file has holidays from 2001-2005, I say 4yrs not 5 because Office `02 wasn't out on 1/1/2001 so it doesn't count).

No venum intended...
but am I not trying to be funny either.

</rant> :-)

Thanks again Jensen for the BOTH cool *AND* useful blog :-)

Mike: Thx, I always wondered what a bank holiday was and how they were figured. Banks here have a rule that they cannot be closed 2 days in a row or the gov will shut `em down (excludes Sat+Sun) which is why they're always open the day after Thanksgiving.

Jeff: I ran across it when I set up Outlook to do multiple time zones (which I later turned off once I realized how it worked)


Happy Thanksgiving everyone! (Whether you celebrate it or not :-)

# November 23, 2005 12:00 PM

James Schend said:

What, no photos of a Thanksgiving party in a 1960s datacenter? You're losing your touch.
# November 23, 2005 12:10 PM

jensenh said:

Chris:

We ship additional holidays on the web once the product runs out. For Office 2000, for instance, see here: http://www.microsoft.com/downloads/details.aspx?FamilyID=7d4d9017-8d4e-4963-8ba7-d2e91d491f5e&DisplayLang=en

Not sure what the plan is for Office 2002 (since I'm not directly working on the product anymore), but I'll check on it.
# November 23, 2005 1:48 PM

KirkMorrant said:

Holidays are a difficult one. Down here in Australia it's even more complicated than in the US or UK is seems. Each state has its own little set of public holidays. Most are the same from one state to another (such as New Year's Day, Xmas & Boxing days, Easter, etc.) but some vary considerably. For example Outlook 2003 gets Labour Day right for New South Wales, South Australia and the ACT, but wrong for Queensland (where I am) and Western Australia.
Being an IT trainer, I frequently enlighten Outlook students with the "Add Holidays" feature, but have to say to them that they must check that the dates recorded are correct.

I think it's a good idea not to have too many years worth of dates as they CAN change. Maybe service packs could add more years(?).
# November 24, 2005 2:02 AM

John Topley said:

I just had a browse through my OUTLOOK.HOL file out of interest and I was stunned to see that there's actually a Groundhog Day holiday in the US! I thought it was just the name of a film or a day that kept repeating.

You learn something every day!
# November 24, 2005 7:18 AM

Jens-Uwe Mager said:

At least for those living in Germany there is a nice service to download up to date .hol files for Outlook here:

http://www.feiertage.net/frei-tage.php

As Outlook 2002 does not contain holidays for 2006 I downloaded a current file there. It also has the added bonus of being able to specify the particular county you are living in, as the holidays in Germany are different by county (roman catholic vs. protestantic holidays).
# November 24, 2005 5:14 PM

SlashDotJunkie said:

No kidding, the movie is quite true to the facts: http://www.groundhog.org/ :)
# November 24, 2005 7:12 PM

carleen said:

We still have to WORK on that holiday...imagine that!
# November 28, 2005 9:50 AM

David C. said:

Two work-arounds for adding holidays beyond 12/25/2005 for Outlook 2002:
1. copy outlook.hol from a newer version of outlook and run it- works perfectly

2. buy add in holiodays from http://www.calendar-updates.com/ which also offers extras such as sport team schedules
# November 28, 2005 1:47 PM

hoc said:

Why are the holidays only client based available? The Exchange Administrator should be able to assign holidays to the users' mailboxes
# December 10, 2005 10:31 PM
New Comments to this post are disabled
Page view tracker