Time Zone Support in Software Applications

In a previous article I asked “What time is your zone?”, and compared the ways in which you set a computer’s system time zone in Mac OS X, Windows, and Ubuntu Linux. Besides the system-wide setting, you can also find support for time zones in application software like the three apps I observed for this article.

iCal: Setting the time zone for the calendar view

The obvious example is, of course, a calendar application like iCal, which ships with Apple’s Mac OS X operating system.1

ICalMainWindow

The time zone for iCal’s calendar view is selected via a menu in the top-right corner of the application’s single main window.2 Note the nifty tooltip: when you hover the mouse pointer over the menu, a tooltip will display the time for the currently selected time zone.

ICalTimeZoneMenu

Initially, the only entry in this menu is the computer’s system time zone. Selecting Other… brings up a dialog box with a map and a search field. By clicking on the map or searching for a city, you select another time zone to be added to the menu.

ICalTimeZoneMenuOpen

Unfortunately, the underlying database of cities is not nearly as extensive as the one that powers Mac OS X’s Date & Time system preferences. Where the latter even finds very small towns (and this has been improved further in OS X 10.7 Lion), iCal is only aware of one or two major cities per country and time zone.

ICalTimeZoneMap

Unless you travel to a lot of different countries all over the planet, you will likely only require a handful of time zones to be listed in this menu. Hence, instead of providing a lengthy menu of all time zones known to man, it makes sense to require the user to manually add further time zones.

iCal: Setting the time zone for an event

In iCal, time zones are assigned to events via a menu in an event inspector window. This menu contains two items that are not found in the main window’s menu: UTC and Floating.

ICalEventTimeZoneMenu

UTC — [Universal Time Coordinated](http://en.wikipedia.org/wiki/Coordinated_Universal_Time “Read the Wikipedia entry on UTC” ) — is the world-wide authoritative time reference, so it deserves its special spot.

“Floating” is not actually a time zone. Rather, it denotes that an event’s time should not be adjusted for time zones at all. Instead, floating events are displayed at the same time in the calendar view, regardless what time zone that view is set to.

This is a handy feature for events that you always perform at the same time, no matter where you are, for example your weekly GTD review or your daily meditation session.

When you create a new event, iCal pre-sets the inspector menu to the time zone selected for iCal’s main window. If the desired time zone is not yet included in the menu, you can add a new one from within the inspector window via the Other… menu item.

This brings up a little map view, in which the time zone for the current menu selection is highlighted, but no other information is displayed.

ICalEventTimeZoneMap

With your only option being to click on the map and then select a city from a popup menu, finding the right time zone can be tedious unless you already have at least a rough idea of its geographical location.

ICalEventTimeZoneMapSelection

Finding a time zone based on a city name is easier when you use the main window’s menu, because that gives you the comfort of the search field. Since the menus in the main window and the event inspector are synchronized, you can freely choose which path you prefer.

iCal: Two menus that (unfortunately) are like one

While this synchronization of the two time zone menus generally makes sense, I have mixed feelings about this feature.

Unfortunately, there is no way to remove any entries from either menu (unless you are willing to manually edit iCal’s preferences file). Whenever you add a new time zone in iCal, you’re stuck with it.

What’s worse, however, is that both menus are always sync’ed even though it not always makes sense to add an events’ time zone to the calendar view menu.

Imagine, for example, that you have scheduled a phone call with someone in Sydney, Australia, and that person gives you the desired call time for their own time zone.

Entering the event for the appropriate time zone, Australia Eastern, spares you the trouble of converting the times to your own time zone. But unless you ever travel to Australia, why would you need to set your calendar’s main view to that time zone?

In other words, adding Australia Eastern to the event time zone menu makes sense, whereas adding it to the calendar view menu only adds clutter, because you will most likely never set your calendar to this location.

iCal: A major change of cat, a minor change of time zone support

For Mac OS 10.7, Apple redesigned the visual appearance of the calendar app. With regards to time zones, though, there is only one change: instead of time zone names, the menus now list countries. E.g., instead of Central European Time, it may list Germany Time.

TimeZoneMenuLion

This does result in multiple menu items for the same time zone, e.g., Germany Time and Netherlands Time, which both lie in the Central European Time zone. Then again, it is easier to remember what country you are traveling to than the time zone for that country.

Aperture: Being smart about daylight saving time

My favorite piece of advice on photo management is to always keep your camera’s clock set to UTC and make all time zone adjustments in your photo software. That way, you never have to remember to change the camera’s clock, or try to recall between which photos you did so.3

In Apple Aperture, which I use for managing my photos, you adjust the time zone via a pair of popup menus: one for selecting the camera’s time zone, and one for the selecting the time zone of the location where the photo was taken.

ApertureTimeZoneMenuPair

Aperture pre-selects the computer’s time zone in both menus, so that, in most cases4, all you need to do is set the camera menu to UTC when importing your pictures. The corresponding menu item is conveniently located at the bottom of the menu.

ApertureTimeZoneMenu

In a neat twist, Aperture is smart about daylight saving time: When you select a time zone for a photo, Aperture determines whether daylight saving time was in effect on the day the photo was taken. If so, an hour is added to the adjusted time, and the time zone identifier listed in a photo’s time stamp reflects this as well: For example, GMT+1 for Berlin and MST (Mountain Standard Time) for Denver turn into GMT+2 and MDT (Mountain Daylight Saving Time), respectively.

Aperture even takes time zones into account when sorting images. According to the nominal time stamps in the following screenshot, IMG_0545 was taken before IMG_0549 and IMG_0550. When converting MESZ to the GMT-6 time zone by subtracting eight hours, however, IMG_0549 and IMG_0550 were taken shortly after noon that day, and they correctly appear before IMG_0545.

ApertureImageSortOrder

Unfortunately, Aperture also applies this logic when selecting photos via the Calendar filter, sometimes causing a photo’s date to shift by a day. The photos in the following screenshot were taken on September 25 at GMT-6. Aperture translates the dates to the computer’s time zone — in this case, GMT+2 — and displays the images on the calendar for September 26.

ApertureShiftingDates

I am not sure whether this is a bug or intended behavior. I do think, though, that it is wrong, because it feels more natural to link a photo to the date when it was actually shot, than to whatever date this corresponds to in another part of the world.

Similarly, Aperture displays both a “File Date” and an “Adjusted Date” in its import window, but already adjusts the former for the time zone you’re in. Therefore, very often the “File Date” is not the file date. Because Aperture bases the “Adjusted Date” preview on the “File Date”, the latter will be incorrect, as well, which is extremely confusing.

Apart from these two glitches, Aperture’s handling of time zones is very well designed: while you have complete control over selecting an image’s time zone, Aperture spares you unnecessary headaches and extra work by taking care of daylight saving time for you.

OmniFocus: The stealth approach to time zones

In both iCal and Aperture, these applications’ time zone features are easy to discover, because the related controls are easily visible. In contrast, OmniFocus, a high-end task manager by the Omni Group, takes a stealth approach to time zones.

Every task stored in OmniFocus can have a start date and a due date. A Completed date shows when a task was checked off. All three of these include both date and time.

OmniFocusGroupInspector

When you enter a date without explicitly defining a time for it, the Start field will default to 12:00 midnight. The Due date’s default can be configured in the app’s preferences, and I keep this set to 6:00pm.

It came as quite a surprise to find out that OmniFocus does recognize your computer’s system time zone, and adjusts all of its Start, Due, Completed, and even the Added and Changed dates accordingly.

I only noticed this when I noticed that the dates for my tasks were off, just like in the screenshot above: instead of 12:00m and 6:00pm, the times are 4:00pm and 10:00am while I was in Colorado, whose Mountain Time zone is eight hours behind Germany’s Central European Time.

And yet, I checked OmniFocus’ online help, its user manual, and the online FAQ, and none of these mention this feature!

The major caveat is that this automatic adjustment can shift a task’s start or due dates to another calendar day: Let’s say I’d add a task with a due date of July 22, 2011 6:00 PM Mountain Time. When I travel back to Europe, that time stamp moves to July 23, 2011 4:00PM, effectively moving the due date to the next day.

While there may be circumstances where the date for a task should be adjusted for changes in time zones — e.g., when you have to hand in a deliverable to someone by a certain time –, I consider it much more likely that you set start and due dates within the mindset of a normal work day.

In other words, “due” usually means “finish this by the end of day X”, regardless of where and, thus, in which time zone, you work on that task. That’s why I would prefer a default behavior of not adjusting dates for time zones in this kind of application.

If a feature with this kind of (potential) impact is implemented, it should at least be fully documented, and allow some basic control over how it works.

Similar to iCal’s implementation, I wish time zone support in OmniFocus and similar programs were an option, and a time zone menu near the respective date fields should include a Floating setting.

Some suggestions for time zone support in software applications

In case you are developing an application that works with dates and times, here are a few ideas to keep in mind when implementing time zone support:

  • Make it visible: If your application supports time zones, make this obvious. Don’t silently adjust the time, but include a time zone marker like “MST” or “GMT+2” in date fields. Also, describe the feature in the user manual.

  • Show where you are: Point out to the user which time zone they are currently in (as defined by the computer’s system time zone setting), e.g., by highlighting it in the time zone menu.

  • Keep time zone menus clutter-free: Depending on how your application is used, let the user manually configure that menu instead of providing a complete listing of all existing time zones.

  • Sort time zone menus by location, not time zone: It is much easier to find a time zone based on its continent and city, than by offset versus GMT. Sort time zone menus accordingly.

  • Make it obvious how daylight saving time is handled: Display the time zone name in date and time fields, so it becomes obvious whether that time stamp is shown for daylight saving time, or not. And, again, properly cover this in the application#s manual.

  1. This article is based on iCal 4 that shipped with OS X 10.6 Snow Leopard. There are a few differences between that version and the one that comes with the freshly released 10.7 Lion, but the features related to time zone support remain almost unchanged. The only difference I found is the naming of time zones as explained in the article. 

  2. By default, iCal’s time zone support is deactivated. The checkbox for turning it on is located in the program’s Advanced preferences pane. 

  3. You will find this nugget of photography wisdom all over the ‘Net now, but I first heard it from Randal Schwartz and Derrick Story

  4. That is, when importing photos while you’re in the time zone that they were taken in. Since I try to import my photos on the same day they were taken, that is usually the case for me. 

Retrieving a Virtual Door Key

I had almost forgotten that the administrators of the WordPress.org website had to reset all passwords a few weeks ago. Until yesterday, that is, when I needed to sign into the site’s support forums, and couldn’t.

My password’s been reset! — Now what?

You can’t miss the notice about the password reset: it’s placed right above the forums’ login form.

WPPWLoginScreen

Clicking on the link in the notice takes you to the announcement on the WordPress News blog.

WPPWResetAnnouncement

It explains the reason for the password reset and, in the second paragraph, tells users that …

[t]o use the forums, trac, or commit to a plugin or theme, you’ll need to reset your password to a new one.

The link in that sentence leads directly back to the login form.

What’s problematic is that neither the login page nor the announcement make it sufficiently clear just how you request a new password. In part, this is the result of using inconsistent terms to refer to the corresponding process.

Consistency makes instructions easier to understand

Between the login screen and the news announcement, the authors used three different terms to describe the same thing:

  • “request a new [password]”
  • “recover your password”
  • “reset your password”

The third one is especially confusing: Didn’t the site’s administrators already do exactly that, namely “reset” all passwords?

In most cases, users will want to “recover” their password, because they have forgotten or misplaced it. In this particular situation, however, that term doesn’t quite have the right feel, and “request a new password” seems like a more appropriate choice.

Aside from using this phrase consistently in all references to the global password reset, it would take just a few extra words in the instructions on the login page to make it perfectly clear what the user needs to do next:

On June 21, 2011, we reset all passwords, so you’ll need to request a new one by using the Password Recovery form below if you haven’t already.

When you first need to recover what you need to know to recover what you need

It’s not just the instructional text that leaves some room for improvement: the same applies to the password recovery process itself.

When I entered the username that I had stored in my 1Password vault, and clicked “Recover Password”, the site complained that “[t]he specified user does not exist”.

After trying a few other user names, as well as my email address, which all resulted in the same error, I decided to simply register a new account.

Alas, now the site complained that my “[e]mail [address] already exists” in their database.

WPRegistrationErrorMsg

And so I’m caught in a catch-22: I can’t recover my password, because I can’t remember my user name, and I can’t create a new account unless I would want to maintain a new, additional email address.5

For most of us, our email address is the one “digital identifier” that we use most often and, thus, is the easiest for us to remember. It’s a nasty flaw that the WordPress.org password recovery process does not allow you to use your email address to identify yourself.

Just give me something to identify you

Here’s an example for a more user-friendly way to help users deal with “Login Credentials Amnesia”.

TwitterPWResetScreen

The Captcha nuisance aside, Twitter’s password recovery form accepts both username and email address, and it even uses a single text field for either one.

The instructions on the page are more reassuring than WordPress.org’s, as well: Instead of the latter’s curt “To recover your password, enter your information below.”, the Twitter form not only tells you what to do now — “Please type …” –, but also explains what will happen once you’ve completed that step, namely that “Twitter will send you password reset instructions …”.

Admittedly, the target audience for the WordPress.org site is more tech-savvy than Twitter’s and, thus, more experienced with properly guessing what tech writers really mean with their instructions.

Nevertheless, whenever a user is faced with a serious problem, it’s a welcome courtesy when the options that are available to solve that problem are as helpful, accommodating, and forgiving as possible.


  1. After yet more guesses, I luckily did come up with the correct user name, and successfully retrieved my password. 

How One Extra Feature Reduces a Hotel Safe’s Usability

When staying at hotels, in-room strongboxes provide safe and convenient storage for valuable electronics like laptops and cameras. All you need to do to lock away your precious geek gear is to place it in the strongbox, close the door, and type in a four-digit code.

Type in the same code to unlock the strongbox, and that’s all there is to it. Or is it?

Typing in your code

Here’s the safe I found in my room while staying in Munich for the fabulous IA Konferenz last May.

Front view of a hotel safe

A four-digit LED display and a number pad are its only user controls.6 They are located on the device’s front panel. Concise instructions on how to use the safe are printed between the two.

Close up of the hotel safe's keypad and display

When you press any of the keys, the entire keypad lights up, so you can easily use the safe even if it has been mounted in a tight, dark closet compartment, or under dim lighting.

The number corresponding to the selected key appears in the display, whose number segments are bright enough to also be readable in less-then-ideal lighting conditions.

Typing a key on the safe's backlighted keypad

Every keypress is accompanied by a short beep, with each key’s beep having its own pitch. This may help visually impaired users with remembering and re-entering their code.

The “5” key at the center of the keypad features two small tactile “spikes” on its surface, which make it easier to navigate the keypad by touch alone.

Unfortunately, the designers of this safe decided to implement a very short time-out for entering the code: if you pause for a mere 2 or 3 seconds, the display goes dark, the keypad’s backlighting is switched off, and you have to start over.

Although the vast majority of time-outs constitute serious design flaws, this specific one does make sense, because it helps reduce the safe’s energy consumption by switching off the display and keypad backlighting. Its duration is simply too short, however: The user should have more time for entering the code than just a few seconds.

Your valuables under lock and key

To close the safe, you shut its door, type in an arbitrary four-digit code, and press the LOCK key. You then hear the lock bolt move into position, accompanied by an “animation” in the LED display, and followed by a mildly annoying confirmation melody.

Finally, “Clsd” appears in the display, followed for a few seconds by the lock code. Seeing the lock code one more time is a very welcome opportunity to confirm that what you had entered is, indeed, what you thought you had entered.

To unlock the safe, you just type in your code again. The safe is unlocked immediately after you enter the code’s fourth digit, unless you made a mistake.

Although it is not mentioned in the instructions, the CLR key clears your recent entry so you can start over if you made a mistake. It is, however, possible to operate the safe without ever using this key. Ironically, it’s the short time-out that makes this possible.

You did it wrong!

The safe is a bit less user-friendly if you do make a mistake: Enter fewer than four digits before pressing the LOCK key, and “Er04” is displayed, and a not-so-mildly annoying error beep is played.

Since I did not encounter any other numbered errors, I wonder why the designers included the somewhat confusing number instead of displaying a plain “Err” message.

In case you enter an incorrect code, the safe responds be displaying “Code” and playing an error beep.

While I’m on the subject of the display: Interestingly, the mapping of the animation on that display, which represents the lock bolt moving inside the safe door, is reversed in this specific device.

In basically every door, the lock bolt is located opposite from the door’s hinges so that, when the door is locked, the bolt moves away from the hinges. On this safe, however, the animation moves towards the hinges (which are mounted at the left edge of the safe’s door) when it locks.

Apart from these two criticisms — numbered error code and animation mapping –, the only other idea I thought of while observing this device is to set the “LOCK” and “CLR” keys apart from the number pad and/or color them differently, so as to make them stand out more visually.

One socket to charge them

But there’s one more thing! And a seriously cool thing at that: this safe is equipped with an internal power outlet.

A standard (European) power socket mounted inside the hotel safe

Thanks to this brilliant feature, you can charge your laptop while it is safely stowed away inside the strongbox. It’s one of those rather rare “I wish you’d see this everywhere!” ideas.

Works just as advertised

A hotel safe is a fairly simple device, and the specimen from Munich is as easy to use as it should be:

  • The controls are easy to discover.
  • Clear and simple instructions are found right next to the controls.
  • There are no confusing modes.
  • Visual as well as acoustic feedback abounds and clearly communicates the device’s state.

While attending Musikmesse in Frankfurt back in March7, I encountered a similar safe that had one additional feature. Undoubtedly, the designer’s intent when adding this feature was to make the safe more convenient to use.

As it turned out, this one feature made the safe more difficult to use.

Let’s make this more complicated (with best intentions)

This safe has a slightly different visual appearance, but essentially works the same way.

Unlike the other safe’s instructive LOCK and CL[EA]R key labels, this model’s non-numeric keys are labeled with generic pound “#” and asterisk “*” characters. It’s unlikely that you can predict what either key does without first reading the instructions.

Another safe's front view, showing a differently laid-out number pad

When you do consult the instructions, you learn that resetting the safe is the first step. The reason for this is that, while unlocked, the safe can operate in two different modes:

  • Mode 1 allows entering a new lock code
  • Mode 2 allows re-locking the safe with the previously entered code by pressing just the “*” key

Successfully un-locking the safe makes it switch to mode 2. In this mode you cannot enter a new code, though. If that is what you want to do, you first have to press the pound key to switch back to mode 1.

As if that wasn’t confusing enough, there also is a timeout involved here, after which the safe automatically switches to mode 1 when you leave its door open for a longer period of time after un-locking it. And there is no status indicator for this “feature”, so you can only guess what mode the safe is in.

Consequently, it is impossible to tell whether pressing the asterisk “*” key will immediately lock the safe. In that case, the currently active four-digit code is not displayed — you better make sure that you properly remembered which code you entered, or you risk being unable to un-lock the safe anymore!

The feature guessing game

The instructions that are printed onto the front panel of the safe don’t mention this re-locking feature. Also, the instruction’s phrasing is a bit unfortunate.

For example, my initial reaction to reading “1. Reset #” was: “Yeah, but how do I reset this thing?”. Only after my brain made the connection between the “#” in the instructions and the key labeled with that character did it become clear that I needed to press the “#” key. Which begs the question why the instructions don’t simply state just that: “1. Press the # key”.

What’s more, without being aware of the re-locking feature, the reset step hardly makes any sense to begin with. Why can’t I simply tap in a new code right away?

When one set of instructions is not enough

Inside the safe, I found a cardboard sign with slightly more detailed instructions, and these also mention the re-locking feature.

Cardboard sign with step-by-step instructions on how to use the safe

As you can see in the photo, they do not, however, mention the associated time-out. I guess that quite a few of this hotel’s guests press the “*” key, expecting the safe to lock — and are stumped by the fact that nothing happens at all. Because this “faulty” use of the device does not result in an error message or any other kind of feedback.

Simplicity vs. features

At first sight, the second safe’s re-locking feature appears to be a welcome convenience feature. But it is unreliable, because you don’t know which of the two modes the safe is in, nor when the time-out kicks in to switch back to mode 1.

When following the instructions step by step, entering a new code always requires the reset step even when the safe would be in mode 1 and, thus, accept a new code straight away.

And finally, unless you read and fully understand the additional instructions found inside the safe, the necessity of the first step will likely remain a mystery for you.

The first safe that lacks the re-locking feature may be just that little bit less convenient to use in some situations, but it is more user-friendly: Operating the device is more straight-forward and requires fewer steps; the instructions are simpler and shorter; and there is no guessing about any modes that the device may be in.

Especially when it comes to devices that many people will use for the first time, and then only use for a limited amount of time, it is more important that a device be easy to understand and convenient to use, than that it surprises more experienced users with more advanced features.


  1. Unless you count the door handle, of course… 

  2. If you’re interested in music technology, you may enjoy reading “iPad Rocks Musikmesse 2011” which I wrote for The Mac Observer.