The number one thing that has confounded me about mobile devices (both my "old" Sprint Mogul / Windows Mobile 6.1 and my current iPhone) has been syncing calendars. My primary calendars are all Google calendars. With the Mogul and Outlook, there was a pretty good tool from Google for Windows that would sync outlook to Google and then you could sync the phone to Outlook with ActiveSync. The big problem with that is that it would consolidate all your calendars into one. The Mac iCal at least handles multiple calendars (and rather painlessly, I might add), syncing between iPhone and iCal is a snap, and you can "subscribe" to Google calendars, but that is read-only, which is pretty poopy imho. Things got a little better today.
Huge thanks to my twitter friend and fellow early-morning-of-the-day-of-iPhone-release-standing-in-line commiserater, Chip, for finding Google CalDAV! With a very few steps, I had iCal set up to automatically sync with my two primary calendars (work and home).
So, syncing between Google and iCal is no problem at all. Between iCal and iPhone is no problem at all. Between iPhone and Google ... not so much. Firstly, I don't think there is any support to automatically sync between the iPhone and Google directly. Secondly, apparently even after all this stuff is synced, you cannot edit the Google calendars from iPhone. So when you go to create a new event on the iPhone it makes a new local calendar and sticks your new events in there.
I am sure that in future there will be support for direct syncing between the iPhone and Google, so for now, this really isn't that bad. I will add events to my iPhone calendar, at the end of the day sync up to iCal, move all the events manually to the correct Google calendar (in iCal), let that sync up and I'm good to go.
The manual step is sort of a bummer, but it is vastly better than the alternatives, which were so klunky that my calendars have been so far out of sync for so long that they have been rendered effectively useless. Time now to sync it all up.