The calendar fiasco

Ray Ozzie reminds us what a fiasco calendars still are:

Each fall, as I manually enter the entire Celtics season schedule, my company's holidays and my childrens' school calendars into my own personal calendar, I am again reminded how ridiculous it is that The Net has not yet ubiquitously embraced the everyday exchange of virtual objects so basic as calendars and as vCards - which can also likewise be subscribed-to, aggregated into Contact Lists and auto-updated via personal RSS feeds. Bizarre. [Ray Ozzie's Weblog]
The situation is perhaps slightly less dismal than that, but not much less. I asked Google for Celtics schedules. It found a CSV file from nba.com that I could download into Outlook, and also an iCal calendar at iCalShare.com that I could subscribe to on the Mac. I don't know how many people have bothered to acquire the Outlook-compatible data, but according to iCalShare's stats, an underwhelming number of Mac folk have subscribed to that version.

Let's look at the formats used by these two services. First the CSV file:

START_DATE,START_TIME,START_TIME_ET,SUBJECT,LOCATION,\
 DESCRIPTION,END_DATE,END_TIME,END_TIME_ET,\
 REMINDER_ON_OFF,REMINDER_DATE,REMINDER_TIME,REMINDER_TIME_ET
"10/29/2003","07:00 pm","07:00 pm","Celtics vs. Miami","FleetCenter",\
 "Regular Season - Celtics vs. Miami","10/29/2003","10:00 pm","10:00 pm",\
 "TRUE","10/29/2003","01:00 pm","01:00 pm"
"10/31/2003","08:00 pm","08:00 pm","Celtics @ Memphis","The Pyramid",\
  "Regular Season - Celtics @ Memphis","10/31/2003","11:00 pm","11:00 pm",\
 "TRUE","10/31/2003","01:00 pm","01:00 pm"

And then the iCal data:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
X-WR-TIMEZONE;VALUE=TEXT:US/Eastern
X-WR-CALDESC;VALUE=TEXT:Boston Celtics
METHOD:PUBLISH
PRODID:-//Apple Computer\, Inc//iCal 1.0//EN
X-WR-RELCALID;VALUE=TEXT:109067FB-EC55-11D7-8B7F-0003937196E0
X-WR-CALNAME;VALUE=TEXT:Celtics
VERSION:2.0
BEGIN:VEVENT
SEQUENCE:2
DTSTAMP:20030917T173759Z
SUMMARY:Celtics vs Heat
LOCATION:FleetCenter
LOCATION: Boston
UID:108F66AE-EC55-11D7-8B7F-0003937196E0
DTSTART;TZID=US/Eastern:20031029T190000
DURATION:PT2H30M
END:VEVENT
BEGIN:VEVENT
SEQUENCE:2
DTSTAMP:20030917T173759Z
SUMMARY:Celtics at Grizzlies
LOCATION:The Pyramid
LOCATION: Memphis
UID:108F6A6D-EC55-11D7-8B7F-0003937196E0
DTSTART;TZID=US/Eastern:20031031T200000
DURATION:PT2H30M
END:VEVENT
...
END:VCALENDAR

If you want to translate between formats like these, God help you. It's a game I call the import/export shuffle. In one version of this game, you run all your Outlook mail and contacts through Mozilla in order to send them to another application. An item I posted last year about this insane procedure is still drawing hits.

Here's another example of the import/export shuffle:

A tip for anyone trying to get info from Outlook to iCal (or even just into Entourage for that matter!) using Palm Desktop 4 for OS X as a middleman:

Export your calendar events from Outlook as a tab-delimited text file, open the text file in Excel (or other spreadsheet which can read delimited text files), change the appropriate column headings to read: Title, Date (Start), Start Time, End Date, End Time, Category 1, Category 2, and Private. Delete any remaining columns. Save in the same delimited text format as the file was when you opened it.

Now download and install the newest free Palm Desktop for OS X, import this freshly edited delimited text file into the Palm Desktop datebook, then turn around and export the datebook from Palm Desktop as a vCal file, which imports just fine into iCal. Also, Entourage says it will import from Palm Desktop, though I've not tried that.

Phew! That was easy wasn't it? [Mac OS X Hints]
Indeed. Procedures like this make me want to lie down until the urge to accomplish whatever I was trying to do just fades away.

Why are we in this terrible mess? It seems to me that the Net has yet to embrace ubiquitous sharing of any kind of structured data. Weblogs as we know them today take two steps in the right direction. They make it easy to share unstructured information. It's now as trivial as it should be to post some text up on the Web at an URL that anybody else can access. Weblogs also make it easy to share a very specialized kind of structured data. The items we post are wrapped in XML metadata can be aggregated and mined. We call this wrapper RSS.

Ray asks:

Has a method to embed xCal [a hypothetical XMLization of iCal] events/etc ever been suggested as a viable item type for RSS?

For months now I've been asking, and trying to answer, another question: What if the items we can now so easily publish and subscribe to were made of, not merely wrapped in, XML? Here are a couple of cells in an XHTML table:

October 29, 2003
Celtics vs Heat
FleetCenter
Boston
October 31, 2003
Celtics at Grizzlies
The Pyramid
Memphis

Here is the XHTML markup behind it:

<table border="1" cellspacing="0" cellpadding="4" class="ical">
<tr class="week">
<td class="day" date="20031029">
<div class="event" start="20031029T190000" duration="PT2H30M">
<span class="date">
October 29, 2003
</span><br/>
<span class="eventSummary">
Celtics vs Heat
</span><br/>
<span class="Location">
FleetCenter
</span><br/>
<span class="Location">
Boston
</span><br/>
</div>
</td>
<td class="day" date="20031031">
<div class="event" start="20031031T200000" duration="PT2H30M">
<span class="date">
October 31, 2003
</span><br/>
<span class="eventSummary">
Celtics at Grizzlies
</span><br/>
<span class="Location">
The Pyramid
</span><br/>
<span class="Location">
Memphis
</span><br/>
</div>
</td>
</tr>
</table>

I posted this chunk of data over on Kimbro Staken's site to explore what kinds of access his engine makes possible. Some examples:

Celtics games in October.

Home games (fuzzy match for Boston).

Home games (exact match for Boston).

I am in violent agreement with Ray. It's crazy that we haven't got a ubiquitous way to share this kind of data. And weblogs-plus-RSS clearly ought to be helping us do that. An "RSS item type" for event records is one approach. A few months ago, I was envisioning a similar kind of thing for job postings. But now I'm asking myself: Which comes first? The chicken of Web content that's derived from a structured format (as this calendar view is derived from this data), or the egg of the structured data itself?

The answer that keeps coming back is: Neither. Maybe the chicken and the egg are really the same thing. An XHTML table with a certain structure, whose rows and cells are decorated in a certain way, can render calendar entries (or job postings) directly on the Web for people to read. That same XHTML table, flowing out in the xhtml:body of an item in an RSS feed, or accessed by way of a blog's XPath (or other) API, can be manipulated by applications.

I realize of course that XHTML was never intended to be used this way. The right answer is, arguably, to create special-purpose XML vocabularies for events, jobs, and other "virtual objects," then extend our content-producing and -consuming tools accordingly. But at the rate we invent special-purpose XML vocabularies and standardize on tools that support them, that could take a very long time.

Meanwhile, we are busily publishing and subscribing to information flows that come so close to being made of general-purpose XML stuff that I see low-hanging fruit everywhere I look.


Former URL: http://weblog.infoworld.com/udell/2003/09/21.html#a801