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
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:

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,
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
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.

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

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

Comments (17)

  1. Jeff Parker says:

    >> 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.

  2. Mike Dimmick says:

    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: (2005-2008) and (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.

  3. ChrisC says:

    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 🙂

  4. James Schend says:

    What, no photos of a Thanksgiving party in a 1960s datacenter? You’re losing your touch.

  5. jensenh says:


    We ship additional holidays on the web once the product runs out. For Office 2000, for instance, see here:

    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.

  6. KirkMorrant says:

    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(?).

  7. John Topley says:

    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!

  8. Jens-Uwe Mager says:

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

    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).

  9. SlashDotJunkie says:

    No kidding, the movie is quite true to the facts: 🙂

  10. carleen says:

    We still have to WORK on that holiday…imagine that!

  11. David C. says:

    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 which also offers extras such as sport team schedules

  12. hoc says:

    Why are the holidays only client based available? The Exchange Administrator should be able to assign holidays to the users’ mailboxes