One more thing, or: Wherein I paste my emails to a friend about task management and iCal

January 3, 2009 11:57:07 PM CST

Ok, so the lowdown is:

The iPhone has a Notes app that stores its data in an SQLite db, and seems to be entirely independent of Mail.app’s Notes (which are individual, separate email messages).

AND

Mac OS X has a system-wide “To Do” list, which are actually ICS text files stored in ~/Library/Calendars/{unique id}/Events/

BUT

Which are not in the iCal sense truly “Events.” They show up on the “To Do” side bar in iCal, and they show up in Mail.app’s To Do list, or any other GTD style app that chooses to use or sync with the system-wide To Do items.

THEREFORE

Since these system-wide To Dos are not iCal Events, and do not show up in the Calendar, and thus cannot have alarms attached, etc. There appears to be no option or any automated way whatsoever to have your To Dos also be calendar Events.

ADDITIONALLY

Because iPhone’s Calendar.app only syncs your Calendar Events, and has no To Do support at all, anything added to the system-wide To Dos does not sync to your iPhone, and thus will not have any alarm capability.

SO

If you absolutely need the alarm, then you’ll have to keep using iCal for those things, and maybe Things.app will be useful to you for everything else. That’s what I’m doing. But there’s just a such opportunity for integration here that it’s frustrating as hell it isn’t happening. Why can’t there be a single, synchronized version of calendars, events, to dos, and notes? I hope they have it planned and just haven’t gotten around to it yet.

If there’s a way to shellscript To Dos into becoming alarmable Events, I’m going to figure it out, and I’m not going to sleep until I do.

January 4, 2009 11:41:03 AM CST

Okay, after some work, I’ve come to a few conclusions.

Scripting to turn a To Do into an Event isn’t that difficult. They are both ICS files, and the only difference is that Events contain a BEGIN:VEVENT line near the top and an END:VEVENT line near the bottom (and BEGIN:VTODO and END:VTODO for To Do items). Events also contain DTSTART and DTEND lines so the calendar knows what time frame to use for the duration of the event.

So while the actual scripting part isn’t difficult, what is difficult is figuring out just how a To Do practically becomes an Event. Even the items on my To Do list with do have due dates do not have time windows, and short of setting a default option for all To Dos with due dates, it’s just logistically difficult to implement.

The reason is that To Dos and Events _are_ fundamentally different. Events are scheduled items, not just by date, but also by time, and usually Events happen whether you attend to them or not. They are often inherently tied to the time in which they happen. To Dos, however, are less like unstoppable windows in time, and more like things absolutely under your control. So, even for those To Dos with due dates, a _due date_ is not the same thing as an Event reminder. A due date can come and go, and the task remain unfinished and still finishable, and exist as “overdue” until you do get around to it. A Event, like for example a doctor’s appointment, is not something that can be “overdue.” You either attend to it at the specified time or you miss it and reschedule for another specific time.

So, there seems to be 3 levels of specificity here:

To Dos (general)
Stuff that needs doing, but is not tied to a particular day or time. It is completed when you complete the task.
Ex: “Fix broken end table leg”

Events (specific)
Stuff that happens on a specific day and time, regardless of whether you’re involved or not.
Ex: “Niece’s birthday party”

To Dos w/ due date (in-between)
Tasks that need completing /by/ a certain date, but can usually be done earlier, can exist as “overdue” and not necessarily
tied to a specific time window.
Ex: “Pay credit card bill”

So, it makes no sense for the first group to be calendar events, and only partial sense for the third group to be calendar events. I suppose if you could decide on the time window, it would be possible to do it (maybe any To Do with a due date is set as an “All day Event”), but it’s still awkward and ill fitting. So let’s say you get a reminder on the due date, but if you miss it, you don’t get any more reminders but it stays unchecked and overdue in your To Do list? The problem is that semantically, Events and To Dos are completely different, but in practice, we *need* reminders for To Do items at times.

Another solution would be if there existed some other kind of alarm reminders. If it was possible to just attach alarms to To Do items with due dates, which is not possible currently. Not exactly sure how that would work, would it just alarm you at 12:00:01AM on that day? Would you set a default time (e.g. 8:00AM) for iCal/Calendar to pummel you with all the To Dos that are due that day?

I think for now, I’m just going to keep using Things.app and habitually peruse my list.

January 4, 2009 12:10:03 PM CST

Ok, so To Dos do support their own alarms, but the “Add a default alarm to all new Events and Invitations” excludes To Dos from getting a default alarm.

They are trying to drive me mad.