April 10, 2008
To follow up on last week’s item about parsing the kinds of dates and times that people actually write, Google Calendar’s Quick Add feature looks like the clear winner. Here’s a test page with expressions like:
Third Saturday of Every Month, 10 - 11:30 am
Let’s try the Chronic module from Ruby:
irb(main):007:0> Chronic.parse('Third Saturday of Every Month, 10 - 11:30 am')
=> nil
No joy.
As David French pointed out, Google Calendar’s Quick Add gets this right. Or anyway, close enough. There seems to be a small bug that pokes an instance of the event into today’s slot, whether or not today is a 3rd Saturday. But otherwise it works great.
There are tougher challenges on that test page, like:
9:00 am - 1:30 pm, North Conference Room 1
April: April 5 and 12
May: May 3 and 10
June: June 7 and 14
I doubt think anything we’ve mentioned so far can touch that, though I’d be happy to be proven wrong.
Meanwhile, the ability to capture recurring events like ‘Third Saturday of Every Month, 10 - 11:30 am’ for my aggregated community calendar has raised a new question. When I use Google Calendar for this purpose, its iCal export doesn’t enumerate the series, it defines a rule:
LOCATION:Cheshire Medical Center RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=3SA;WKST=MO
When I pull that event into elmcity.info/events, the RRULE (recurrence rule) only fires once each time the feed is fetched. And that’s fine. I don’t necessarily want to see these recurring events on the the calendar into the far future.
But while I can syndicate these events directly from Google Calendar into elmcity.info, I would rather route them through Eventful.com. The reason is social not technical. Although I’m herding almost all these events into my aggregator for the time being, I want their rightful owners to claim them at some point and take care for them thereafter. Eventful is better suited for the kind of commons-based peer production I’m hoping to encourage.
But, I don’t see how to inject dynamic rules, rather than static events, into Eventful. You could run the rule yourself, then poke the generated events into Eventful, but that’d create maintenance woes when events are rescheduled, modified, or cancelled. I’d rather syndicate the rule than the data.
April 10, 2008 at 11:56 am
The combination of Chronic + Duration gives you some amazing date flexibility.
Duration is Chronic in reverse, go from seconds to something the user can intuitively read and understand.
April 12, 2008 at 12:06 am
In the iCalendar (RFC2445) spec, the RRULE isn’t a script that gets run by some calendar server, it just describes the rules and exceptions. So, your program which ingests the iCal data would have to “expand” it.
One thing to attempt: create a new calendar in Outlook, open the .ics file, then export all to iCalendar - I _think_ Outlook will “expand” it.
April 12, 2008 at 11:05 am
> So, your program which ingests the iCal data would have to
> “expand” it.
Yes, I’ve now had occasion to do that. Of course many expansions are infinite unless arbitrarily bounded.
Eventful does a bounded expansion for you, and doesn’t pass you the rule, it passes you the data, when you ask for an iCal feed.
Google Calendar passes the rule which you get to expand.
Interesting tradeoffs. Ideally you could ask the iCal provider, with a parameter on the URL, whether or not to expand and if so how far.
April 13, 2008 at 1:25 am
I’m not sure if this was mentioned earlier in the series, but did Lotus Agenda do this correctly back in the day?
Also, is there a way to get a ping of sorts when someone responds to this comment? Having to come back every once in a while just to check is pretty suboptimal.
April 14, 2008 at 9:36 am
> did Lotus Agenda do this correctly back in the day?
Can’t remember :-)
> Also, is there a way to get a ping of sorts when someone
> responds to this comment?
That’s a good question. I thought wordpress.com did per-article comment feeds, but I’m not finding that feature now that you mention it.
April 15, 2008 at 6:47 am
Will Eventful import iCalendar? Seems like it ought to, since they are members of CalConnect (http://www.calconnect.org) - the consortium trying to improve calendar interoperability (Microsoft is a member too, I believe)