Fantastical and BusyCal

Back in December, there was a discount bundle that included both Fantastical and BusyCal. I thought it odd to have two calendar programs in one bundle, but it was actually a stroke of genius marketing, because I bought the bundle specifically to test out both calendar applications as replacements for iCal. I won’t keep you in suspense: Fantastical won.

In theory, I didn’t have to buy both applications to try them out. Each program can be downloaded and used for free for a couple of weeks. In practice, though, a calendar program—unlike, say, a text editor or a web browser—doesn’t get the kind of intense, hours-long use that allows it to be properly judged in a limited time.1 At least that’s the case for me; I’m sure there are heavily scheduled people who can judge a calendar in just a day or two.

So I’ve been using both programs in parallel since late December. I doubt I really need to describe either one—they were both given workouts by several reviewers back when Lion came out and everyone was horrified by the new iCal that came with it—but for completeness, here’s the nickel version:

Both Fantastical and BusyCal read and write iCal’s data files, so you can switch back and forth between all three calendars.

My reasons for wanting an iCal replacement?. Like everyone,2 I find the faux leather look annoying. It’s not the skeuomorphism per se that bothers me—a little skeuomorphism never hurt anyone3—it’s the jarringly ugly color Apple chose: a yellow-brown that brings to mind the phrases “puke” and “baby shit.” There’s also the problem with the dates being too pale for my 51-year-old eyes. And the navigation delays. If you want to look three months ahead, rapidly tapping the right arrow button or typing ⌘→ three times in succession won’t get you to the month you want because iCal waits until its page flipping animation is done before deigns to accept another “next month” command.

Fantastical has a simple month view that pops out of the menu bar when you click its icon or type its hotkey (⌃⌥-Space by default).

Fantastical

The day numbers, although gray, are dark enough for me to read easily, and today’s date is prominently marked.4 The entry field at the top of the window is where you type the sentence fragment that defines a new event. You can scroll forward and backward either by clicking the arrow buttons or typing the → or ← keys. As with iCal, ⌘T brings you back to today from wherever you’ve scrolled to. Clicking the mouse on another window or tapping the Escape key5 puts the window away.

Everything about Fantastical works as it’s described to work. The natural language parsing for event entries has never been confused in the three months I’ve been using it. The fields in the event definition area fill in as you type in the entry field.

Fantastical date entry

If you favor week or days views (I don’t), Fantastical is not for you—it’s month only. The only other downside I’ve noticed is that it has no facility for defining repeating events. You’ll need another calendar program for that or if you need to print your calendars.

Update 3/11/12
As pointed out by Alex Chan in the comments, Fantastical does have a syntax for entering repeating dates. I was confused by the layout of the event definition area, which doesn’t have a “repeat” field until you type one of the key words (like a day of the week or “every”) into the descriptive sentence.

Fantastical with repeating dates

There are examples in Fantastical’s help system (which, of course, I didn’t look at because why would I do that?) for defining yearly and weekly events.

For a while I thought BusyCal would be that second calendar program. It is, basically, iCal without the baby shit. I can see its date numbers clearly, I can tap ⌘→ as many times as I like in rapid succession and BusyCal will scroll that many months forward.

But there are two problems with BusyCal:

  1. It has no AppleScript dictionary. I was surprised to see this, as the folks at BusyMac want to position BusyCal as iCal Plus. Not being scriptable is a definite minus.
  2. It doesn’t sync to iCloud fast enough for me. More than once I’ve added an event to BusyCal on my MacBook Air, waited a few minutes, then closed the lid and headed out of the house. On checking my iPhone later, that last event was nowhere to be found. This has never happened with iCal or Fantastical—they seem to sync new events right away.

I can live without scriptability. After all, I still have iCal for scripting.6 But the uncertainty surrounding iCloud syncing is unacceptable.

So after three months of testing, I’m able to declare Fantastical a success. It’s not a complete replacement for iCal, but it does enough that I can keep iCal off most of the time. Even if Apple comes to its senses and reskins iCal in Mountain Lion (I’ve heard that some of Address Book’s problems have been fixed, but nothing about iCal) or some later version of OS X, I’ll keep using Fantastical for its fast and simple event entry method.


  1. I should clarify: it’s easy to judge in a short time whether a program is completely wrong for you. But it’s hard when a program is nearly right. 

  2. It really is everyone, isn’t it? I haven’t seen a single person step up to defend iCal’s new look. 

  3. Many design experts came out of the woodwork when Lion’s iCal and Address Book came out. These latter-day Corbusiers, armed with a new word, took to the ramparts to decry ornamentation in their computer user interfaces. None of them, oddly enough, have argued against the Trash or folder icons. 

  4. In a skeuomorphic way, which doesn’t seem to bother anyone. 

  5. There’s a symbol for the Escape key, ⎋, but I tend not to use it because I don’t think it’s as obvious as the others. 

  6. Surprisingly for a menubar application, Fantastical is scriptable. Its main command is parse sentence, which takes as its sole argument the string that you’d type in the entry field:

    tell application "Fantastical"
      parse sentence "Test Event on 3/13 at 2:45p"
    end tell
    

    Unfortunately, I haven’t found a way to query it for existing events.