Why calendaring is hard

Part of working with calendars is working with timezones and – dare I say it – daylight savings time (DST for short). A calendar program/service/API that doesn’t support timezones, are able to used named timezones and thus handles DST is worthless. Naming timezones is really key to all of this as a timezone like GMT+1 doesn’t mean anything and cannot be used to anything meaningful. Why? Well for one there is no indication of whether we’re in the Northern Hemisphere or in the Southern Hemisphere – in the former it’s winter and the latter it’s summer. Believe it or not but it actually affects whether daylight savings, or summer time as it’s often referred to, is in effect.

Now that’s why naming timezones make sense. In Java for instance timezones are normally named by the city or region it affects. For instance I would normally use Europe/Copenhagen or at least Europe/Paris as the countries in the European Union switch at the same times. Lotus Notes, or Java in Notes to be exact, actually report my timezone as Europe/Paris when I ask it. Now this makes sense as this timezone incorporates information on the UTC offset, whether or not DST is observed and if it is when the switches occur.

But that’s actually not enough. Why?! Well because time point in time where DST changes occur may change over time. So actually a calendaring system needs to know when changes occurred in the past and when they will occur in the future. For instance Chile is postponing the switch to DST by two weeks in 2011 with extremely short notice (Chile Extends DST Due to Energy Crisis, IBM Technote 1470631: Chile extends daylight saving time two weeks in 2011). And only in 2011. If you’re working with people from Chile and scheduling meetings in this period there is a big chance things will go wrong.

You might remember that the US also changed the rules the DST dates was calculated some years ago to standardize across the states but it is still a very local decision as whether to use DST or not. It’s actually down to the county to decide. Take a look at my favorite example Indiana and see how confusing it is.

So while timezones and DST rules appear simple they are anything but and it’s why calendaring is hard.

And the timing of this blog post isn’t coincidental. The US – where DST is observed – changed to daylight savings time on Sunday 13 March where as we wont make the switch in Europe until 27 March.

Managing my calendar workwise and personally – this is how I’m trying to do it

So I have an iPhone and work with calendars on a daily basis so I’m constantly looking for new ways to work with them. For a long time I have been pondering the separation of calendar usage between my work and private life. Ideally they should be separate but viewable together. Up to now I haven’t really found a solution that worked and have been using my Notes calendar for everything using it both from my Notes client and my portable device (aka cellphone). The main problem with that was that there was no easy way to allow my wife, family or others to peek into my calendar on an adhoc basis. I know there’s stuff like Tungle but lets face it – it’s still in beta and it will be some time before it’s Wife certified… 🙂

As of yesterday I think I have the solution though.

Part of Notes 8 is how easy it is to federate calendars into the product calendar by adding either iCal, Google calendars or the like into the calendar using calendar overlays (much has been written about that so Google away if you need more info). I have been perfectly happy with my current setup (using my Notes calendar and Lotus Traveler for everything) up to now but using an iPhone finally pushed me over the edge. The reason? Well there is no way to mark an appointment on the iPhone as private. It does however have the concept of multiple calendars. Whether that’s a shortcoming in the iPhone I’ll leave up to you.

However much I like my colleagues I don’t think they necessarily should have the possibility to see, or be burdened with, what I’m doing on my own time so not being able to mark appointments from the iPhone as private has been an issue for me. When I created appointments on my iPhone (during my weekly calendar sync with my paper-calendar using wife) I had to remember to edit the appointments afterwards in Notes and set the private flag which was cumbersome and a hassle. Plus forgetting it made me ripe for ridicule from my colleagues when they saw what my wife made me agree to!

Yesterday I decided to do something about it and investigated it again. I moved my private calendar to my Google calendar after discussing it on Twitter with members of the community incl. Per Henrik Lausten (who is also my new McDaddy and Mac pusher). Now I’m using CalDAV to federate/sync my Google calendar to my iPhone. My Notes calendar is already there using Lotus Traveler and appointments are easily distinguishable as work appointments are in red and private appointments are in blue. In my Notes calendar I simply use a calendar overlay to display my private calendar alongside my work calendar using the same color scheme. My private calendar is even available offline by checking a box – does it get any sweeter? For me it’s as near to perfect as seems possible now.

I want to thank the community on Twitter for pointing me in the right direction. If you want to see how to configure CalDAV on your iPhone I suggest ‘How to Sync Google Calendar With iPhone Calendar‘ as an easy way to get started. Happy Friday!

Using negative offsets for calendar alarms

Ever need to set an alarm after a meeting in your calendar started? Well I had to do this yesterday and since I have previously looked into the inner workings of the alarms in the calendar I kinda know how it works – ($Alarms)-folder and all.

Since the functionality, simplistically explained, is a matter of taking the offset you specify, convert the number into seconds, subtract it from the start time of the meeting, set a couple of $Alarm-fields and add the document to the ($Alarms)-folder I thought I might get away with entering a negative value for the offset. Entering a negative offset would effectively make the offset be added to the start time instead of subtracted and hence have the alarm go off after the meeting started.

And the big question – does it work? Well yes it does… So if you ever need this kind of functionality you know what to do.

Calendar interoperability

While listening to Inside the Net episode 29 podcast I learned of calconnect.org which is “The Calendaring and Scheduling Consortium” (Quote: “The Consortium is focused on the interoperable exchange of calendaring and scheduling information between dissimilar programs, platforms, and technologies. The Consortium’s mission is to promote general understanding of and provide mechanisms to allow interoperable calendaring and scheduling methodologies, tools and applications to enter the mainstream of computing.”)

In the podcast Scott Mace is interviewed and mentions calconnect.org where they recently got seven calendar systems to talk to each other. Interesting Lotus Notes/Domino and Microsoft Outlook/Exchange is included in the test using CalDAV.

This is very interesting. Would this be too late to fully incorporate and support CalDAV in Hannover/Domino Next?