Webapps vs. Desktop Applications (plus an iPod idea)

This is a long one, folks. The advantages and disadvantages of web applications and desktop applications, and how they can work together.

A coworker and I were discussing the differences between web applications and desktop clients on Friday. The conversation started with the question of which model is better, but we then agreed that the best solution was to have both work together.

As a Mac user, user interfaces are very important to me. While Ajax is great, it still can't do everything a desktop application can. Alex Lindsay often claims that the iTunes Store would never have succeeded as a website because the interface would have been too clunky. However, I like to have access to my data even when I'm not at my personal computer, and I don't like the idea of trusting backups to only my own hard drives (but I DO like to have a local copy for myself and not just trust a business either). In short, I look for a great user experience without being tied to a single device.

The good news is that a lot of this already exists in some form. When I'm at my computer, Mail.app is always running in the background, and it's my preferred interface for composing, sorting, and viewing email. It's also nice that all of my many email accounts can be accessed in one place, so no matter which account something is sent to, I can see it in the same interface. When I'm away from my computer, I still have the convenience of checking all of my accounts via a web browser. Unfortunately, due to server storage limitations I am in the habit of using POP accounts and removing messages from the server after downloading. Gmail handles this pretty well though, since it offers a generous amount of space and archives downloaded messages instead of deleting them. An IMAP option would be nice though for better synchronization. I like .Mac's mail service as well, especially with their new Mail-like web interface, but since I share storage space with my website, there's still not enough room for me to host all of my 10,000+ (11,364 to be exact, not including junk mail, dating back to Sept. 2002) messages online.

As for chatting, I like that I can now chat away from my personal computer within a web browser using Gmail, but when I'm at my own computer I use iChat, which lets me chat with AIM and Jabber contacts at the same time. Adium is cool too, but I use the video feature in iChat almost every day, and I don't use text IMs enough for iChat's minor limitations to bother me.

Ever since Tony got me hooked on RSS, it's become one of the things that I miss the most when I'm without my computer. NetNewsWire is always open in the background, and I can be notified of and browse new headlines right from the dock icon without even having to open a new window and interrupt my workflow. (I really wish Apple would do the same and allow me to view message subjects from Mail's Dock icon.) I've recently started playing with Google Reader after exporting an OPML file of my feeds from NNW. I still prefer the NNW interface, but at least now I have an alternative for when I'm without my Mac. I'd like to see some way to synchronize "Read" and "Unread" data between feed readers.

Even if I'm on my own computer, I'll sometimes use a web interface instead of a separate application if I just need to do something quickly and I'm already in Safari, which I usually am. If I want to quickly find one of my photos, either for my own use or to share with a friend, I tend to just search my Flickr account instead of launching iPhoto. However, if I am going to be doing more than that, such as watching a slideshow, I prefer the more powerful specialized application. But tying this into the whole web synchronization theme, wouldn't it be great if iPhoto could actually sync with Flickr, so I could update something on either end (a photo title, for example) and have it automatically change everywhere else? And wouldn't it be great if the different web services would take advantage of each other's APIs and allow me to switch between Flickr, Picasa Web Albums, Webshots, Facebook, and others seamlessly?

A similar comparison can be made with Google Maps and Google Earth. If I find an address online and want to quickly get some driving directions, I'll just use the website. But, if I'm really exploring an area, such as this summer when I was new to California and searching for a mountaintop view of a meteor shower, it was much easier to move around in Google Earth, which also provided a nice 3D view of the terrain with a roadmap overlay.

Enough examples for you? Me too. I like the UI of my Mac and the portability of the web. We're moving toward the point where I can almost always enjoy both.

Now, let's move onto a tip, using a method developed by the same coworker mentioned at the beginning. This will let you synchronize Apple's iCal with Google Calendar. This will be accomplished by subscribing to your Google Calendar in iCal, and your iCal calendar in Google Calendar. It's a little roundabout, but it works, and since both interfaces are good at meshing the different sources together, once it's set up you won't know the difference. I tried to document the process as well as I could, but let me know if I made any mistakes or could make the process simpler.

Here we go:
1. Open iCal.
2. Select a calendar from your Calendars list that you wish to share with Google Calendar.
3. From the Calendar menu, choose Publish...
4. If you have a .Mac account, choose .Mac in the Publish on menu. If not, you will need an account on a WebDAV server. I haven't tried it, but it looks like you can use WebDAV with Box.net, a free file hosting service.
5. Name your calendar in the Publish calendar as field, which will determine its URL. I don't know how to make your personal calendar really secure, but if you're just out to thwart a casual stalker, give it a name that nobody would guess by having your cat or small child walk on the keyboard. Since neither are in my apartment, I used the password generator in Keychain. Open Keychain, and from the File menu choose New Password Item... and click on the key icon next to the Password field. The Password Assistant will open. Select Letters & Numbers in Type and drag the length out to 31. Copy the password and paste it into the Name field in iCal. It may help you find things later if you put the calendar name before the jibberish, i.e. Homekajhs2d7gf3oQu99eu5vbHxcb.
6. Go ahead and just check all the boxes, then click Publish.
7. A dialog box will appear confirming that your calendar has been published and will provide a subscription URL beginning with webcal://.
8. Select this URL and copy it, then click OK.
9. Open Google calendar.
10. Click the + button next to Other Calandars in the left column of the page, then select the Public Calendar Address tab.
11. Paste the URL from iCal into the Public Calendar Address field and click Add. I had better luck when I replaced the webcal:// bit with http://, but it might have just been because I hadn't given .Mac enough time to publish, so this may or may not do anything.
12. Repeat this for other calendars in iCal if you have multiple.
13. You can rename the calendars in Google Calendar to make things prettier. Click on Manage calendars in the left column of the page, click on the subscription URL, and then edit the Calendar Name field and click Save.
14. Now Google Calendar will see anything you put in iCal. But at this point, your iCal calendar is just read-only from the web, so you can't add events when you're using Google Calendar. What you need to do is get iCal to subscribe to your Google Calendar.
15. In the left column of Google Calendar, under My Calendars click the triangle pointing down next to your name. Select Calendar Settings from the pop-up menu.
16. Click on the green ICAL button next to Private Address if you have chosen not to share your calendar with the public. This does is the same thing we did in iCal and generates a random URL. As long as you don't share the address with anyone, it should remain private. Copy the link that appears (do not just click on it.) If you click on the link, iCal will simply import it as a one-time deal, and not update to reflect new changes you make in Google Calendar.
17. In iCal, go to the Calendar menu, choose Subscribe..., and paste the URL. Click the Subscribe button.
18. Give the calendar a name ("Google Calendar" works). Check the Refresh box and set an interval. I set mine to 15 minutes. I also unchecked Remove alarms and Remove To Do items so those should sync as well. Click OK.

Now, every time you add something to your calendar using either interface, it will be sent to the other one automatically. I'm sure there are many limitations, but the two most obvious ones that I can think of are that you can't edit or delete an event that was created on the other interface, and changes aren't instantly updated unless you manually refresh the subscriptions. The delay shouldn't be an issue during normal use however, as there is probably always some travel time between when you use your personal computer and when you access your calendar on the web.

Wow, I'm tired, but let's take advantage of the extra hour and get to the iPod idea, suggested by Chris.

Lots of us don't know what we want to listen to, and just use the shuffle feature. But what if a song comes on that matches your mood, and you want to hear more like it? It would be useful if you could just let the iPod know with a button press or two that you enjoy the song, and it will then adjust the playlist to contain similar songs, based on things like genre, artist, album, BPM (beats per minute), or even whether the song has vocals or not. With subsequent songs, you can let the iPod know whether it is one the right track or not, training it to create a more appropriate playlist. It would be really cool if the training could happen based on whether or not you skip a track. Of course, this feature could be enabled or disabled by the user. In the short term, it would be convenient to be able to tell the iPod to play songs from specific categories such as genre, artist, or album right from the Now Playing screen, instead of having to navigate through multiple menus and interrupt the current song.

This idea makes me think of Tangerine, a new application from Potion Factory that creates playlists based on the BPM and beat intensity of the songs. I haven't tried it yet, and at this point it doesn't work with music purchased from the iTunes Store, but it sounds pretty cool.

That's it for my long tech rant. It's pretty late, so I hope it was coherent.

Posted: Sunday - October 29, 2006 at 02:58 AM