Organizing my life

I’ve been slightly side-tracked from my quest to host my own blog by the search for a good calendar and todo list application. It is still sort of relevant, because I’d like to embed my calendar in my blog. It’s really useful to point family members to a web calendar and say, “You pick a free night for us to have dinner.”

My current setup is just not working. I’ve been keeping my todo list and events in a plain text file in a git repository. I usually only check the file when I’m adding a new task or event. This means I’m suddenly faced with the
mountain of undone tasks during a (usually) stressful moment. It’s no wonder I’ve slowly started avoiding looking at that file at all. I need something pretty that I can bear to look at every morning.

I’d like to have a nice GUI to display my calendar and todo list, and a way to do offline edits for both. A way to publish my calendar on the web and keep some events private is a must.

I’ve found a partial solution with Google Calendar + Sunbird + GCalDaemon + Remember the Milk. As of today, I can view and edit my Google Calendar with Sunbird, and I can view my Remember the Milk (RTM) todo lists in Sunbird. The only thing lacking is the support to edit my RTM todo lists in Sunbird, both online and offline.

Screenshots of the integrated goodness:

Having separate work and personal todo lists is wonderful because I can hide the tasks by unclicking the RTM calendar that they’re associated with. Now I won’t think about putting out the garbage when I really should be figuring out how to use the signing-party package to sign Matthew Wilcox and James Perkins’ GPG keys.

Web Calendar interface: Google Calendar

I’ve ranted about Google Calendar before. What changed
since then?

I stopped using my iPAQ, so my syncing issues aren’t relevant anymore. The replacement for my iPAQ, my Nokia e70, has some icky proprietary Windows software to sync the phone’s calendar. I could do some reverse engineering to pull out the magic strings to allow OpenSync to work with it, but it hasn’t been high on my todo list. (Or it’s never gotten on my todo list; this is part of my disorganization problem.)

Google calendar finally writes reoccurring events in a sane way, although I’m not sure if it allows for exceptions. It also allows you to mark events as public or private. Private events will be shown as “busy” blocks on your public HTML calendar, with no details. This is a big bonus because I have work events that I don’t want people to see. I’m not entirely comfortable with giving Google all this data. But other big companies have paid Google to manage their corporate email and calendars, and Google just published an application to sync your Google Calendar and your Outlook Calendar. Google can’t be too evil, right?

Desktop Calendar: Sunbird

Sunbird is a calendar application from the Mozilla folks. It can be integrated with the Thunderbird mail client, and is called Lightning when used that way. It’s still very beta (0.7 since last June). I haven’t explored the interface too much, but it seems fairly sane and simple. It was *very* slow on my quad core at work, but I think that was because of proxy issues and misconfiguration on
my part.

Syncing: GCalDaemon

Sunbird has a plugin for two-way syncing with a Google Calendar. Unfortunately, the plugin doesn’t handle syncing reoccurring events, doesn’t handle proxies, and it only allows editing while you’re online. Total loss. If I was online, I’d just edit my Google calendar through the web front-end!

It’s not surprising that the first Google search result for “sunbird google calendar sync” is not the official plugin. The first search result is GCalDaemon, a simple Java app that keeps a local copy of your Google Calendar and syncs it when you have network access. Sunbird thinks it’s syncing with an iCalendar file on the network, but it’s really only talking to GCalDaemon through localhost:9090. The GCalDaemon website has pretty pictures of how it works:

I just followed the Linux install and Sunbird syncing instructions. Worked great out of the box. Now I’ve got to set it up as part of my init scripts. I should make a todo item for that…

Todo Lists: Remember the Milk

Remember the Milk, affectionately known as RTM, was started because Google Calendar didn’t have a task list. It has a very good web interface, IMHO:

RTM can install a plugin for your Google Calendar that displays a small checkmark in each day. If you click the checkmark, you get a list of todo items for the day.

RTM also integrates with Gmail, Twitter, and much more. You can have todo reminders coming out nearly any orifice you want. It has offline support through Google Gears, so you can open a browser and add tasks whenever you want. However, what I really want is to be able to edit my task list from Sunbird. I can add the RTM iCalendar to Sunbird, and the tasks will just show up in the task list. I just can’t edit them through Sunbird.

Remaining improvements

The only thing that is less than ideal in this entire setup is not being able to edit my task list in Sunbird. GCalDaemon has an open syncing API, and Remember the Milk has an open web API. The only thing that needs to be done is put the two together. People have been talking about this since January 2008, but no one has done it, as far as I can tell. Fixing this involves Java and web API, which is the only reason I’m not jumping right into hacking
it together.

I’ll try the RTM web interface and see how awful it is to use two programs to edit my tasks. I might even try the Gnome-based RTM editor (as long as I don’t have to switch to Gnome from KDE). I’ll let you know how it works out in a
couple weeks. Hopefully this combination of software will make me more productive, and less likely to worry about my todo list.