Keeping Application Data in Sync Across Multiple Computers

Sync is (somewhat sadly) a topic which is close to my heart. For years it's infuriated me that there are no good, widely applicable, solutions for syncing application data between computers.

Mr. Friedman has a nice article on how he's keeping his computers in sync with each other. It's a great summary with some new tricks for me, so I thought I'd share what I'm doing at the moment.

Update 15 May 2012: Much has changed since I wrote this. I changed over to Google Apps several years ago, and while I'm not particularly comfortable with giving all my personal data to Google, the feature set is compelling. With my families transition away from Windows/Linux to Mac, and with Apple's more recent introduction of iCloud, I've moved away from Google for everything but email (Calendar, Bookmarks, Addressbook) to iCloud (sadly iCloud doesn't allow you to use your own email address or do server side filters which are both deal breakers for me). I've pretty much given up on RSS as it became obvious that it was just another way to feel inundated with information (I now have Facebook when I need to waste huge amounts of time). I never really liked Google Docs, though it is convenient from time to time, and I'm now playing with iCloud for sharing documents simply for the better Mac/iPhone integration. Really though it turns out that Dropbox is a better, and more versatile, solution for sharing documents that either Google Docs or iCloud. Funambol was always quirky for me and fortunately the iPhone made all trickery around cellphone syncing irrelevant. Dropbox has also largely replaced my use of rsync and Unison for moving files around my computers. I still have dreams of using a version control system (probably Git or Mercurial) for keeping my home directory in sync across multiple computers, but the reality is that these days I'm low tech enough that it's unlikely that the itch will ever reach critical scratching point. In short nearly everything in this article is now different, perhaps I'll write an updated version at some point.

  • Mail: I use IMAP so that my email is accessible from any computer via any IMAP client. Currently I run my own IMAP server on a virtual private server provided by PDX Colo, if anyone is curious the software I use is Postfix, Amavisd-new, SpamAssassin, Dovecot, Posgrey, ClamAV and SquirrelMail. I've been tempted to move to a commercial IMAP provider for years because it actually takes a reasonable amount of time to keep the the anti-spam stuff working well but at the moment haven't bothered to switch. If Google starting offering IMAP access to their GMail service I'd probably switch.

  • Addressbook: When I left Weta I had to hand in my Mac and learn to use Windows again. Plaxo was actually the only tool I could find which would take my Mac Addressbook data in vCard 3.0 format and import it into Outlook. I tried hoards of various Outlook plugins and Windows solutions and they all sucked, yay Plaxo! For those that remember the bad old days when Plaxo spammed everyone with your ever address change, I can thankfully report that is now a thing of the past.

  • Bookmarks: Ironically Netscape 4 had a brilliant solution to this in the mid-ninties which allowed you to sync all of your browser data (bookmarks, cookies, configuration etc) to an LDAP or WebDAV server of your choice. I'm still bitter about the fact that Mozilla dumped this feature and it has never returned. Fortunately Google Browser Sync comes to the rescue. Not only does it sync bookmarks but it also syncs cookies, history, configuration and all the other stuff which the old Netscape solution did. Foxmarks is a viable alternative (though it only does bookmarks).

  • Calendar: On the Mac you can do this with iCal and any WebDAV server. On Linux you can do it with WebDAV and Sunbird (but beware the hoards and hoards of bugs) or Evolution (I think). On Windows the only real game in town is Outlook with an Exchange server (ICK!). Google Calendar is a viable alternative if you are okay with an online solution (it will send you text message reminders for free).

  • RSS: If you are happy with a web service then Bloglines has served me well for a couple of years. Otherwise BlogBridge is the best option available for Mac, Windows and Linux. You can configure it to sync's your feed collection and message status (read/unread/tags/etc) back to a free central server so you can keep multiple computers on the same page.

  • Documents and Spreedsheets: I'm starting to use Google Docs and Spreedsheets more and more. Completely cross platform and the ability to collaborate on a Word or Excel document is pretty compelling.

  • Passwords: A new one to me was Password Maker. It seems like a very cool service which uses a master password and a one-way hash to generate unique passwords for any web site. I'm not using this yet but I'll probably start soon. At the moment I'm using a custom script I wrote years ago which keeps all my passwords in an encrypted GNUPG file and allows me to easily add/remove things from it.

  • Cellphone: I haven't yet got it all working yet but this acticle describes an incredible solution for getting your addressbook data from your computer into your cell phone over the air. Funambol is another solution but it didn't seem to work as well as Schedule World for me.

  • Files: In my opinion the only viable option for doing this well is Unison. Yes it's command line, yes you have to run it periodically and yes it works best if you have a server which everything can sync back to. But it works on Mac, Windows and Linux ... and it's bad ass.