Freeware Coolness Crushes iCal Shortcoming
The folks at Apple are supposed to eat their own dog food, but it seems to me that the people who write iCal clearly don’t use iCal. That’s the thought that occurred to me, anyway, as I contemplated having to switch away from my favorite, long-time calendering companion, Dave Warker’s Remember? (see “Remember? Not Forgotten,” 30 June 2003).
Abandoning Remember? wasn’t going to be easy, but this utility hasn’t made the progress I’d hoped for in recent years; it’s still a PowerPC app running under Rosetta in Snow Leopard, and its choice of years runs only to 2018 (believe it or not, I have events to schedule beyond that date). Despite my offers to help port it to Cocoa, this program has been giving off that old abandonware smell since its last update three years ago, and I started looking about for a replacement. But I was darned if I was going to spend any money (as I’m also a notorious cheapskate), so I started looking into iCal, which comes with Mac OS X.
To my surprise, iCal proved remarkably acceptable in many ways. It can post reminders (alerts) on the screen without the application itself actually running, and these can be “snoozed” temporarily, which was one of my favorite Remember? features. And it has a reasonably good notion of repeating events. The interface is fairly horrendous – configuring an event in Remember? is insanely slick and fast in comparison to all the clumsy clicking you have to do in iCal, and nothing will ever beat Remember?’s compact calendar display – but I could live with it.
But there was one thing that seriously threatened to put the kibosh on the whole deal: iCal was irreducibly organized into calendrical units. This means, for example, that if today is 30 July 2010 (a Friday) and you launch iCal, no view – not week view, not month view – will inform you that you have something important coming up across the week/month boundary at the start of August. In other words, iCal doesn’t show you what’s coming up: you have to hunt, paging through the future weeks and months yourself. And that was utterly unacceptable, especially in comparison to Remember?’s wonderful view of all events upcoming in the next 40 days that has greeted me every morning for almost as long as I’ve been using a Mac.
It looked like the deal was off, until I got to thinking: iCal does have one major advantage here; it is eminently queryable. And I don’t just mean via AppleScript, which requires iCal to be running. The iCal “store” (the calendrical data) itself can be queried directly through the system without launching iCal at all. So in theory I could write a little app that would show me the upcoming events, just as Remember? used to do.
At this point, however, one of my major virtues intervened – laziness. Why should I do any work? Surely someone has already solved this problem for me. A moment’s googling brought me to the Web pages of Ali Rantakari, who has solved it indeed, and then some. His wonderful command-line tool, icalBuddy, looked to be just the ticket.
Before you could say “the first Sunday after the first full moon after the vernal equinox,” I had downloaded icalBuddy, examined the ReadMe file, double-clicked on install.command, opened Terminal, and entered this little incantation: “icalBuddy eventsToday+40”.
That command produces a textual list of all events upcoming in the next 40 days, without launching iCal – just the sort of thing I was after. Problem solved. All I had to do was remember to run Terminal every morning and type that command, and then leave the Terminal window open all day… Uh, no. That wasn’t going to be acceptable. I needed a way to make sure I was shown this data every day, automatically.
Back to Ali Rantakari’s Web site, where I found him saying, in effect, “If you like icalBuddy you’re probably going to want to run it using GeekTool.” I had never heard of GeekTool, but I quickly realized that it was the missing piece of the puzzle.
GeekTool, by Yann Bizeul, is a system preference pane along with a background application. Using the preference pane, you configure a rectangular area on your desktop – effectively, a borderless window that sits (by default) in front of your desktop background and behind your desktop icons – and displays the output of a shell command. Moreover, this shell command can be configured to be repeated at regular intervals.
So I set up the lower left-hand corner of my desktop to display the output of the following:
date; echo; /usr/local/bin/icalBuddy -nrd -nc eventsToday+80
What that means is: First, let’s see the date and time right now. That way, I can gauge both when this window was last refreshed and how long I’ve got until the first event displayed. Next, put a blank line, to separate the current date and time from the events. Finally, use icalBuddy to show all events for the next 80 days, with no relative dates and no calendar names. The result looks like the screenshot.
The “80 days” specification is a bit misleading, since what I really mean is, “enough events to fill the window, if there are that many,” and if there are more, I don’t care. The point is that I always see what’s coming up, and that’s sufficient to remind me to open iCal and look directly if the occasion warrants. This GeekTool window is configured to refresh itself every hour, so I’m always up-to-date. The slight transparency (through which you can see part of a photo centered on my desktop) and the font and size are my choices.
Indeed, what struck me most about this whole process, as I congratulated myself on a job well done, was the generosity of the people who had provided the tools I was using. I don’t just mean that the software is free; I mean that it gives me the power to do what I please. GeekTool doesn’t make just one window: it can make many, and besides running a script, a window can also monitor a file or display an image. And icalBuddy, too, has a gazillion options of its own. Both these free tools solve real problems that many users might have, and they do so by letting the user customize their behavior.
So we live in a great time – an age of cool freeware tools. And thanks to these two, my switch to iCal has been made a lot less painful than it otherwise might have been.
Cool. You may actually want to check out BusyCal, which has a nice list view, but best of all, it has "scrolling week view" on the month view. This always shows you your next 5 weeks of events, because it keeps the current week at the top. It also has "scrolling day view" on the day view, which does the same thing. Plus, the development team is very responsive to feature requests.
I can absolutely second that. However BusyCal currently doesn't support the "beta"-version of iCal running on the MobileMe server at the moment - and it is not free... but worth the money!
Honestly, I thought everyone had heard of Geektool by now. I wish Panic would buy it and overhaul it visually, tho.
I don’t have Remember? entries that I care about beyond 2018, but I may have in 8 years. I am, however, glad to read that I have options beyond what appears to be an abandoned application that I use daily.
Right on about GeekTool - take a look at the calendar app list view in iOS - gives you a scrollable list view of upcoming events as far ahead as you want to flick it. You can set the number of calendars to include in the list too.
You can easily pull up an agenda view by typing a "." in the search field and scroll as far ahead as you like.
The search results region won't stretch larger than 10 items tall (lame), but you can scroll indefinitely into the future.
Perhaps it somewhat more constrained than you'd prefer, but it's a lot simpler.
You could also use iDeskCal, which is not free but is a whole lot better looking.
PS - Good to see I'm not the only one who uses the max time to file their taxes.
Indeed, iDeskCal puts your calendars on your desktop with some fancier look, and it includes tasks as well. I am a fan of it.
Another vote for iDeskCal!
if you use Menucalendarclock you can see a whole month of iCal appoints. The limited version is free and quite useful.
I've been using MenuCalendarClock for a few years and really like it. It can show you upcoming Events, To Do's and also lets you create New Events and To Do's without ever opening iCal.
I was going to mention you could use "List" view, but then realized that was a feature of BusyCal and not iCal. No wonder I use BusyCal
Sadly GeekTool caused a kernel panic whilst I was configuring its display windows :( I don't know if anyone else has had similar experiences.
My biggest peeve about iCal is the limited number of choices of time snoozed. I often have to endure resetting the snooze timer half a dozen times because there are no choices between one interval and the next larger one.
Although I would really prefer a calendar that could be advanced by a week so you could always see at least 3 weeks in advance, I think John's suggestion of typing a period into the search field works very well for bringing up a future list as Matt would like. And it seems a lot less trouble, unless you are one who enjoys tinkering.
Simply put, the tasks supported by iCal and BusyCal aren't good enough. No Start Day, only a Due Day. No contexts and no projects.
The Today-application should be able to work with a to-do app like OmniFocus. It can be done with AppleScript.
Per is touching on a topic here, close to my heart. I have long used iCal & am trialling BusyCal, but what I REALLY want, is a Cal app that has a bit more focus on logging time spent against a Project Number, for the purpose of creating timesheets and invoicing. The Tags in BusyCal offer a very crude proxy, but look to have a high maintenance requirement. I have Daylite installed, but am struggling with its complexity. It would be nice if iCal could link with a searchable Pick-list called from an Excel or Bento file.
There's also Ben Kazez's Dashboard widget iCal Events, which can show events up to two weeks in advance.
“and its choice of years runs only to 2018 (believe it or not, I have events to schedule beyond that date)”
I don't. I was born in 1932, so schedules for 2018 and beyond are of concern to you, but not to me. Enjoy.
I'm planning to live 100 years, myself, fate notwithstanding.
Over the last year, I've duplicated all events in Remember? to Google Calendar. Its variously colored calendars serve the same purpose as Remember?'s event formatting. What's kept me from finally abandoning Remember?, though, is the simplicity of making an event persistent in that program (ex. pay the phone bill every 15th of the month) until I complete it -- something Google calendar lacks entirely.
Remember's notion of persistence is pretty special. iCal lets you create a 15-of-every-month repeating event along with an alarm that starts, say, a week beforehand, so that's what I use instead. In other words I use the ability to snooze the event or modify the event in iCal to implement persistence.
Dumb that the Mac version of iCal doesn't have a list view. The *iPhone* version of iCal has a list view!
And dumb that the iPhone version of iCal doesn't have a week view. The Mac version has a week view!
I'm a huge Remember? fan and user... paid my first shareware fee to Dave back, I think, on System 7. (I'm guessing he was still in high school!) Have upgraded the Mac over and over and use iCal heavily, but nothing beats Remember? popping up each morning showing me the next 8 days. Support his great program: http://warker.com/sw/remember/
Love it! Let's pay the shareware fee and send a copy to the iCal development team.
Matt, you rOcK!
" This means, for example, that if today is 30 July 2010 (a Friday) and you launch iCal, no view - not week view, not month view - will inform you that you have something important coming up across the week/month boundary at the start of August."
This is incorrect. In iCal's preferences, set "Scroll in week view by:" to "Days" and then hitting Cmd-T will show today at the left edge of the week view, and the next six days to the right of that.
We don't have to worry about Remember?s y2018 problem. I have it on good authority from John Cusack that the world will end in 2012, right? Now let's go back to using MORE™ and WordPerfect. Afterwards we can relax with a game of Crystal Quest.