iPhone 4 More Camera-Like

Gruber points out that the flat edges on the iPhone 4 make it "feel much more like a camera." It occurs to me that those flat sides might also have the added benefit of allowing one to place the iPhone on a flat surface while shooting, for hands-free video recording, for instance, self-portraits, or longer FaceTime conversations.

Finally and Finally!

Two small but exciting improvements revealed today.

1. Google has at last made some design improvements to their search results (via Daring Fireball).

I wrote about my frustration with Google's lack of design vision some time ago. It's great to finally see them trying to improve their usability and their aesthetic at the same time.

For the record, Google's in the midst of a gradual roll out of the redesign, so you may not see the changes right away.

2. Rumor has it that the next iteration of the iPhone OS will include orientation locking. What's orientation locking, you say? It's the ability to keep the iPhone screen from switching to landscape mode.

I've lamented how the lack of this feature has been one of the major bothers of an otherwise great phone experience. I'm excited to finally have the feature on my phone.

It's definitely the little things I get excited about. But then, sometimes they're what really matter most to a fella.

CalDAV On iPhone

One of the exciting new features in the iPhone 3 OS is the ability to access calendars via plain old, standard, vanilla CalDAV. This allows you to finally keep an updated version of all your calenders without syncing your phone to your computer. Just subscribe to your calendars on your iPhone, just like you do in iCal on your Mac, and you'll always be up to date because you'll always be accessing the centrally-located, server-side calendar. This is right and proper and as it should be. But CalDAV over iPhone does have some quirks and limitations.

Subscribing to a Single Calendar

The first thing that's not readily obvious is how to connect to your CalDAV calendars. It is possible to subscribe to multiple Google calendars, for instance, but doing so is neither straightforward nor apparent. Still, once it's done it's done, and it's mostly better than the alternative.

Subscribing to a single Google calendar — your main Google calendar, if you only have one — is really what the iPhone is interface is designed for. Where to do this is also not necessarily obvious:

  1. Open the Settings app.

  2. Press Mail, Contacts, Calendars.

  3. Press Add Account...

  4. Press Other.

  5. Under the Calendars heading, press Add CalDAV Account

  6. Enter your CalDAV server URL (for Google it's just "google.com"), username, password and a short description, then hit the Next button.

  7. The iPhone will verify your information and then, if all goes well, your CalDAV calendar will appear in the Calendar app with the description you provided with the word CalDAV next to it in parentheses.

  8. Now wait. It can take a few minutes for the iPhone to suck down the CalDAV data. I'm not sure why. But it should appear after a few minutes or so.

Navigating to this calendar will cause the iPhone to read the calendar data right from the server. If you have write access you will also be able to add, delete and modify events right on your iPhone and have the changes propagate to the server.

Multiple Calendar Subscriptions

UPDATE: See the end of the article for a better way to sync multiple Google calendars over CalDAV.

In addition to connecting to your main Google calendar it is also quite possible to connect to other CalDAV calendars to which you might want to be subscribed, though the process is hardly as automatic as the one above. Connecting to a single CalDAV calendar is easy for both you and the iPhone because the URL is simple and easy to predict, so the phone just does it for you. If, however, you want to connect to a shared calendar, the URL that you'll need to supply to the iPhone is long and complicated and, unfortunately, must be manually entered.

To do so, you'll probably want to start by getting that URL into the iPhone's clipboard. There are lots of ways to do this. You can get it right from the Google calendar site (if it's a Google calendar) using Mobile Safari. You could also send it to yourself in an email. The way I handle this is that I actually keep a spreadsheet on Google Docs that contains all my shared CalDAV URLs, that way I always have copy/paste access to them from the iPhone or from a computer. But however you do it, just get that URL into your clipboard, because you don't want to type it by hand. Trust me.

The process for adding additional calendars follows the above steps almost exactly. The one exception is that for the Server entry in step 6 you must pass the long URL you just got into your clipboard. Just paste it right there into the field. After switching fields, it will present the Server text as just "google.com" again, but it should have the full URL stored away in its memory. Continue with the process and you should see the new calendar in the Calendar application as before.

Advanced Options

If a problem occurs during subscription an Advanced Settings button will appear.

This button also becomes available after the calendar has been set up. There are three options to set here:

  1. Use SSL

    This allows you to configure your iPhone to connect via SSL, which is required by some servers. Google allows this option and may or may not require it. Generally it's best to have this on if possible. Or at least more secure. If you're having troubles, though, you can try toggling this setting.

  2. Port

    This allows you to set the SSL port, in case your server uses something other than the default of 443.

  3. Account URL

    This is the actual URL to your calendar. The one you pasted into the Server field. If something went wrong during that step you can check and fix it here.

In Practice

There are some advantages and disadvantages to this system. And while I really believe this is how any serious calendaring system should work — all your computers are clients that simply get the calendar data from the cloud — the implementation on the iPhone is not exactly mature.

For one, CalDAV calendars other than your main Google one are a major pain to add to the phone. Google provides an app for doing this on you desktop system, but for the iPhone it must all be done by hand. If you have many calendars it is a long and tedious process.

For two, receiving CalDAV data on your iPhone is, in my experience, very slow. Any changes made on the server will not be immediately seen by the iPhone. It can be several minutes after opening the Calendar app before you see the changes and there's no indication that the sync is even taking place. This can be frustrating and misleading and requires you to always remember that there might be a change that's coming that your iPhone just hasn't seen yet.

Also, from time to time, though very rarely, calendars fail to load. I can't blame this entirely on the iPhone, though. This happens to me even in the browser on my desktop system. It seems to be a problem with Google's implementation and large numbers of calendars. Apparently Apple's not the only one whose CalDAV implementation is immature.

Still, for me this system has worked pretty well thus far. I have a buttload of calendars to which I must stay subscribed, and which I must keep current. And I just don't sync with my computer that often — plus, calendar changes are made at work — so that system was equally dodgy. My calendars don't change that often either, so waiting for data to sync is less of an issue for me, though when there are major changes, getting everything re-synced really blows.

Overall, now that it's in place, I'm very happy with CalDAV on my iPhone, though there is certainly room for improvement. I suspect it will only get better with time.

UPDATE: It looks like it did just get better. I've just discovered a better way to subscribe to multiple Google Calendars that I'm pretty sure wasn't there when I set all this up a few months ago. It's much easier and doesn't require signing in to each calendar. Just subscribe to your main calendar as described in the above outlined steps, and then, on your iPhone, go to this page:

https://www.google.com/calendar/iphoneselect

Here you can select the calendars that will sync over your main Google account.

This is for Google accounts only. If you just have regular old CalDAV accounts that you want to sync with, manual entry will still be required.

UPDATE 2: This method seems to speed calendar syncing as well. I think the old method required the iPhone to log into each individual calendar, whereas this new method logs in once and syncs all the calendars with the one account. Much less work for the iPhone than before. Nice!

Native App Superiority

I was recently reading an article on the Tao of Mac that said, among other things:

"I’ve long preferred to use iPhone Twitter and Facebook clients over desktop ones..."

It's true, there are a handful of iPhone applications that are actually better than the original apps they replace — Facebook, for sure, and my recent fave, the Zipcar app among them. Of course the original ones — the "Desktop ones" referred to in the article — are actually web applications.

Native vs Web Apps

The fact is that, despite the push towards — and what many believe is the inevitability of — the web as the primary source of applications, native apps are still vastly superior in almost every instance. This is why Apple had to finally give developers —  and consumers, of course — the App Store. Web apps just weren't cutting it on the iPhone. And while they do somewhat better inside a full-sized browser on a full-powered computer, I still think web apps have a long way to go — a very long way — before they'll ever rival the experience of native apps. Platforms like the iPhone and continued interest in things like Site Specific Browsers offer very convincing evidence that native apps will continue to thrive for a long time to come. To be honest, I have my doubts that web apps will ever completely replace native ones.

I should also point out the probably obvious fact that there are certain apps that will always be best on a mobile platform because they just happen to be particularly well-suited to mobility. The Zipcar iPhone app is a perfect example. It's an app for finding, renting and controlling cars, for Chrissake. Where better to have an app about travel than on a mobile device? In fact, having the Zipcar app on an iPhone gives it certain powers the web app will likely never be able to match. But I'd venture to say that there are very few, if any, application experiences that are better in a web browser than they would be in a dedicated, native app.

No doubt about it, web apps are supremely useful, especially for certain tasks. But that's like saying the web is useful. The ironic fact that many of us prefer surfing Facebook on our iPhones to using the original web app version on a full-sized computer should give you an idea of just how hard it will be and how long it will take to supplant native apps with web apps.