Published on

Making of Sleep No More

Nearly every Mac-addict uses or at least has heard about Caffeine — a small application that lives in a status bar and prevents your Mac from falling into a sleep mode if you asked it to. I was using Caffeine since I'd switched to a Mac from Linux and recently the idea to reimplement this app with a more modern appearance and behaviour has come and settled in my mind.

The first draft of the Sleep No More. Popovers are cool.

Basic Principles

Besides old-stylish look of Caffeine I had a major concern about its operation mode: one has an option to postpone sleep forever or choose one of a rigidly-preset amounts of time. Neither of presets ever satisfied my needs, moreover it's necessary to make a couple of additional clicks to reach them (not a thing you want to do repeatedly in a hurry). That's why I always used a default "indefinite" amount. Remember, this way you always have to manually disable the app, so your computer is not going to glow for ages.

I am strongly against the idea of permanently disabling sleep mode (use System Preferences, if you really want it to). By having such an option you push people to use it which results in a waste of energy. There is no such thing as an indefinite task. Oh, forget it, actually there is at least one: chasing perfection, but it's out of the today's agenda. When you open an app to quickly postpone sleep mode you already know how much additional sleep-free time you need, because it's usually pretty easy to estimate and then add 10-20% over. This forms the basic principle #1: let user easily choose a time interval from zero to 24 hours.

I wanted the app to resemble a real physical object, Pomodoro-like countdown timer, to be concrete, because most of the users are familiar with this concept. It's really easy: you set a time value, it ticks for a while (some process is active) and when it reaches zero you are again in a "off" state. A significant advantage of a timescale is that you always aware of how much time is left (as opposed to Caffeine). This forms the basic principle #2: use a continuous timescale instead of a various sorts of drop-down menus, text-entry fields, stepper cells and so on…

Sleep No More popover with a timescale window.

Iterations on UI

It was obvious from the first steps that the timescale defines the whole app. That's why I've been experimenting with logarithmic scale. Though logarithmic view is much more compact and defines the whole 24h range in a ~1000 pixels wide it lacks the constant step (it becomes bigger the more your approach the end) and suits only the power users who are familiar with math.

Logarithmic timescale.

Stripping down the unnecessary and focusing on relevant the following variant was born.

Sleep No More sketch with radio buttons.

I was not fond of it because of inappropriate aspect ratio of the timescale window, but the real problem was in "prevent computer sleep" and "prevent display sleep" options: they are not mutually exclusive. Let's try to replace radio buttons with checkboxes…

Sleep No More sketch with checkboxes.

Despite of being a plain reproduction of the app principle I found this design too rude and misleading: the checkboxes are good for expression of preferences and bad for initiating an action. It is counter-intuitive that placing a check mark would start prevention of a sleep mode.

Sleep No More sketches with action button.

By moving the only option to the preferences window it became possible to minimise the whole UI to the scale and a button, title of which changes to reflect the prefs: "Postpone sleep mode", "Postpone computer sleep" and "Postpone display sleep".

The HUD-styled Sleep No More became version 1.0.0 which was released directly on and submitted to the App Store for a review. After a long month of waiting in queue the rejection came along with the following rationale:

The user interface is not consistent with the Apple Human Interface Guidelines.

We have found that there is no obvious way to quit the app on the main application window, besides pressing Command-Q. This may be confusing to users. See screenshot attached.

On occasion, there may be apps on the App Store that don't appear to be in compliance with the App Store Review Guidelines. We work hard to ensure that the apps on the App Store are in compliance and we try to identify any apps currently on the App Store that may not be. It takes time to identify these occurrences but another app being out of compliance is not a reason for your app to be.

Please evaluate whether you can improve the user experience and resubmit your app for review.

As far as you know, building a dialog with Apple stuff is not an option, so I had to put an action menu on the popover which duplicated the context one (that was always available via the right-click on the status bar icon). In the result, I think, the app has only benefited of this decision.

The latest Sleep No More v1.1.0.

Download Sleep No More for free

Download Sleep No More for free.

I would appreciate your feedback about Sleep No More via e-mail, Twitter or App Store reviews. Remember, making software is hard, even if it is minimal as a tiny Sleep No More. Thanks for the attention!