Archive for February 2009

Everything old is new again redux

Lindsay did an excellent blog post yesterday titled “Everything old is new again“, about the re-emergence of multi-dimensioned databases.

Great title, but just to prove his point, it applies even better to a post he shared on Google Reader a few days ago, written by Kurt Schrader and titled “Living in a Post Rails World“. To quote that post:

I think that the Ruby world is eventually going to end up in a model like this, writing small simple apps that all talk to each other, and can be replaced or upgraded at any time.

<snip two paragraphs>

All of my hard/long running logic is well tested, encapsulated, and most likely running in little agents on the wire.

Sound familiar? It should. Kurt has re-discovered the same principles that the Holy Fathers of Unix discovered, over a quarter of a century ago. Doug McIlroy, circa 1978:

(i) Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.

(ii) Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.

Later, he simplified it:

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

Of course, Henry Spencer said it the best:

Those who don’t understand UNIX are condemned to reinvent it, poorly.

iPhone/Google Sync tips

Some hints about using the Google Sync for iPhone. These will probably also apply to the Windows Mobile sync – but I’ve not used that, so I’m not sure. I’m going to say “iPhone” consistently – but the same will apply to an iPod touch as well (modulo the things that involve a 3G connection, of course).

  • BACK UP YOUR DATA. Really can’t stress this enough. The process of setting up the sync WILL WIPE ALL YOUR CONTACTS AND CALENDARS. Back up first.
  • You can choose up to 5 calendars (not including your primary calendar) to sync.
    • If you have a gmail/googlemail account, visit m.google.com/sync on your iPhone, follow the prompts, and you’ll be able to choose up to 5 additional calendars to sync.
    • If you have a Google Apps account, visit http://google.com/m/a/<<domain.com>>, then click “More” and then “Sync”. For this to work, your domain administrator will have to have enabled Google Sync for your domain first.
    • [update]It’s been pointed out to me that Apps users can actually access the sync settings from m.google.com/sync. Click on “Google Mobile” on the bottom left-hand corner of the page, and you’ll be taken to a page  with lots of icons for different Google services. Scroll down and make sure there’s a link that says “Not in United States?”. If it lists another country, click it and change your contry to the United States – this won’t work in any other country. Once you’ve changed that and you’re back at the page with service icons, find the “Google Apps user?” button, and enter your domain into the popup. You’ll now have icons for your Apps domain – including a Sync icon. Click it, and once again just follow the directions from there.[/update].
  • I have one Google Apps account for work and one personal Google Apps account. However, the iPhone only allows me to set up one Exchange account, so I have to pick which of the two I’m going to sync, right? Wrong! I’ve shared my personal calendar with my work account, giving it “Make changes to events” permissions. I’ve then set up my work account to sync with my iPhone, and chosen my personal calendar as one of the additional calendars to sync.
  • If you go with the default setup, it will sync both Calendars and Contacts. This is almost certainly not what you want. It does have the benefit of pushing changes to contacts straight into the cloud – but it also has the effect of breaking the sync between your Google contacts and your Address Book. That is – assuming you used to sync the two – which a lot of people did not, due to Google’s contacts manager being rather broken. However, it’s easy enough to set the sync to Calendar only. If you look at step 13 of the official instructions, you’ll see both Calendar and Contacts selected. If you choose to sync only Calendar, Contacts will still be synced with Address Book by iTunes whenever you sync your iPhone. If you’ve chosen to sync Address Book with Google Contacts as well, that will still happen too.
  • You can sync calendars with both an Exchange and MobileMe cloud at the same time; but as soon as you enable one of them, you can’t sync calendars with iTunes any more. You can only have one MobleMe account and one Exchange account.

I used to have a messy messy setup involving Spanning Sync pulling all my Google Calendars into iCal; then using Mobile Me to push them into the cloud; then using the iPhone’s Mobile Me sync to pull them onto the phone. Many moving parts, 3 different sync stages for something to go wrong. Only works if you have a permanently online machine that can be doing the translation between the Google cloud and the Apple cloud. I’m much happier with this direct sync.

[update]About the contact sync thing. See, you only get the option to sync your Address Book and your Google Contacts visible in iTunes if you’re syncing contacts with your iPhone. If you’re syncing contacts with the cloud, you’re not syncing with your iPhone, so you don’t get the option. If you do use Google Contacts, that means that the cloud and your iPhone are both up-to-date – but your desktop is not.

If you really want instant syncing between your phone and your desktop, turn on cloud-syncing of your contacts. If you’d prefer to keep your phone, desktop, and the cloud all in sync, turn off cloud-syncing, and let iTunes handle the sync instead. [/update]

[update 2009-09-09] As of Snow Leopard, it’s no longer necessary to have an iPhone/iPod in order to get Address Book <-> Gmail Contacts syncing. So, it’s now perfectly possible to have your iPhone cloud-syncing your contacts AND have your Mac also cloud-syncing. To turn it on on your Mac, just go into the Address Book’s preferences and look under the Accounts tab.[/update]

[update]Facebook Events? Magically pushed into your iPhone calendar? Easy!

Go to your Facebook Events page. On the top left (below the blue Facebook bar; above the big word “Events”) you’ll see “Export Events”. Click on that link, and you’ll get a popup with a long URL. Copy this URL.

Next, go to your Google Calendar. Click “Settings”, “Calendars”, “Import Calendar”, “Add By URL”, and paste that URL into the box.

Now visit the Sync Settings page, and choose your new Facebook calendar as one of the 5 to import. Now if you RSVP to any events in Facebook, that event will appear in your Google Calendar and your iPhone.[/update]

Bad taste in advertising award for the day goes to: SMH!

At first glance, I assumed that this was related to the horrible fires in Victoria. Nope, just advertising. Well done SMH!

badtaste-1