Working at Microsoft is an experience like not many others. Since graduating from what many consider to be the greatest university on the planet, I've worked at few very different types of companies. My first stint was working for the United States Senate.
My second place of employment was at a small consulting company in good ol' Richmond, VA. They are a Microsoft Gold Partner and provided invaluable training and experience which prepared me for success here at Microsoft.
Now I work here in Office developer support. Now, I wear pretty much whatever I want to work. Flip-flops, cargo pants and a t-shirt are a common wardrobe selection of mine. I get here, help Premier and professional customers with their messaging development issues; work with the product team and file bugs against Outlook and Exchange APIs; and develop samples of our technologies. For lunch, I eat pizza provided in our cafeteria downstairs from a popular local pizza shop, and then play some Halo3 on our XBOX360 kiosk or on our flat panel TV in our game room. At about 1:30PM or so, an email will be sent out that today is "December Birthdays/Anniversaries Day" and that there will be free cake and ice cream near the kitchenette in front of our Starbucks I-Cup. At about 2:00PM, a meeting request will come out for a "business update" held in our conference room for the next day that will be catered by Maggiano's or some other fancy food place. At 4:00PM, my manager will walk around and hand out a gift certificate or a new 8GB Zune 2 or an Office logo fleece blanket (or all 3) as a "thank you for all your hard work." Next week is our team "morale" event where we'll go rafting at the Whitewater center, or go play golf, or go to a bar and play pool, or to a nice restaurant or something. Our company holiday party this past weekend was held at a fancy hotel uptown where they had raffles, video games, dinner, dancing, music, and...beverages (eh hem) - free. This honestly all happened this week.
And they call this work?
So, how was your week at work?
Wanna live in Charlotte, NC, Fargo, ND, or Las Colinas, TX?
Oh, did I mention benefits like free healthcare, gym membership, 401K, ESPP, discounted software, etc?
Not convinced? Check out Matt's blog where he does some more convincing.
If you are developing or have developed a MAPI store provider for use in Outlook and are trying to support folder homepages in your store, you are probably familiar with the PR_FOLDER_WEBVIEWINFO property. This property is undocumented and not supported, but I'll assume for the sake of this article that you have a read/write store and you're allowing Outlook to set that property for you. :)
You may have noticed that folder homepages worked in previous versions of Outlook, but don't work in Outlook 2007. This is because we are turning off folder home pages (FHP) for non-default stores by default in Outlook 2007.
You cannot add a URL to the Address box on the Home Page tab in Outlook 2007 (923933)
Simply setting the registry key below will re-enable them:
If you have written or use an application that uses CDO 1.21 (cdo.dll) that accesses your Calendar and you have users who complain that some recurring appointments are not appearing in Free/Busy in Outlook, this may be for you.
When a recurring appointment is created in Outlook, you may not realize that really this is just a singular message in the MAPI store. We commonly refer to this as the _Master_ appointment. Whenever a client application or API looks for appointments in your calendar, it will expand the Master appointment into several instances according to the recurrence pattern you set when you made it a recurring appointment. These instances of the recurring appointment are interpreted - they don't actually exist in the store.
When you make a change to one of these instances, such as changing the start time or the location, or if the instance is deleted, an _exception_ item is created. The exception item is a copy of many of the properties of the master appointment which is then attached to the master appointment. When the messaging infrastructure expands the master, this exception item is included in the expansion algorithm so that when expansion occurs, you see your changes or deletions appropriately.
The other change that occurs when you create an exception item is that the recurrence pattern is modified on the master appointment. The recurrence pattern is a binary MAPI property stored on the master appointment message. This binary property stores the details of the recurrence pattern as well as information regarding exception items. It is not supported to modify this property directly. You can find code available on the Internet to reverse engineer this property and modify it, but this is strictly unsupported by Microsoft.
What happens in cases where this property has been improperly modified or otherwise corrupted is that one or more messaging systems (Outlook, CDO, Exchange) are unable to properly expand the appointment.
This is the root cause of the issue described in the first paragraph. In one case I saw recently, the recurrence pattern had been improperly modified. Outlook and OWA clients could see the appointment just fine, with one exception. There were appointments missing in Free/Busy. We were able to determine that if Outlook was the last application to publish free/busy - that is, make a change to the calendar which caused free/busy information to be republished, then the recurring appointments would appear just fine. If a certain CDO 1.21 application was the last to access the calendar, then the appointments vanished from Free/Busy.
After doing some troubleshooting, I was able to determine that the Free/Busy symptom was just a symptom of a much larger problem. When I would get the Items collection from the calendar folder, that collection did not contain my problem appointments (not even the Master appointment). When CDO 1.21 would go to publish free/busy, it would get the collection of rows from MAPI (which contained the appointment) but would then attempt to expand the recurring instances. It detected a problem with the recurrence pattern (which Outlook didn't care about or check for) and would essentially ignore that appointment. That is why the appointment did not appear in Free/Busy - CDO was ignoring it altogether.
Moral of the story - respect the recurrence blob.
I've been encouraging him to blog his "Matt Stehle's Tenents of OOM Programming" for a while now, and he's finally begun with a series on some common pitfalls we see with developers using OOM in .NET. This first article is concerned with a common reason we see for events to stop firing in your VSTO add-ins.
Rock on Stehle-E-O!