MobileMe Free: iPhone to iCal OTA syncing

I’ve been frustrated with my calendars not being in sync between my iPhone and my Mac’s iCal. I’ve inadvertently double-booked myself many times. I didn’t want to spend $99 a year for MobileMe because I already spent a lot on remote servers and don’t need most of what MobileMe offers. I just want calendar syncing. The below has been described by many others, in much greater detail and clarity. This is really a list of things I did so I can remember it.

The essential idea is both iCal and the iPhone Calendar program can talk to a CalDAV server, much like and iPhone Mail can talk to an IMAP server. Google Calendar is a CalDAV server, so let’s use that, since it’s free and already set up. If you already have a CalDAV server, you can use that instead as the intermediary.

1. Create calendars in Google Calendar

Sign into Google Calendar and set up however many calendars you want. Once you do that, go to the bottom of the settings details for a particular calendar you’re interested in and note its “calendar address”:

2. Set up iCal to sync with Google Calendar

In Preferences in iCal, go to Accounts, click the “+” to add an account, and choose “Google” as the account type. Fill in your info.

Click on the “Delegation” tab for the newly created account, and pick which other calendars you want besides your main one (if any). You’ll see them in a separate list in the calendar list pane.

Now you have calendars that sync between iCal and Google Calendar.

3. Set up iPhone to sync with Google Calendar

On the iPhone Settings app, go to the “Mail, Contacts, Calendars” section and scroll down to “Add An Account…”. Choose “Add CalDAV Account” and fill in your Google Calendar login info.

If you just have the one main calendar on Google Calendar, that was the last step, you’re done and any changes you make on the iPhone will get send to your Google Calendar, which iCal will then pick up. And vice-versa. If you want to add one of the secondary calendars, you have one more step.

4. Adding a “delegate” Google calendar to iPhone

To add secondary Google calendars (what iCal calls “Delegates”), you need to do step (3) again. Then with this second CalDAV account on the iPhone, go into its “Advanced Settings” section of that account’s information and edit the Account URL. Replace the “” part of the URL with the Calendar address you noted down from step (1).

That is, the full CalDAV URL for my main Google calendar is:
and the full CalDAV URL for my “things-to-do” calendar is:

You’ll probably find it easier if you email yourself this URL from your computer, pull it up on your phone, and use copy-n-paste to enter it.

Roomba Tilt Control and Holiday Buying Guide

Two updates from

First, if you’re unsure about how to get into hacking Roombas or just want some tips on how to get cheap Roombas, see the DIY Robotics with Roomba Holiday Buying Guide.

Second, if you’ve got a MacBook and a Roomba, try out this way of using the MacBook’s built-in tilt sensors and Perl to control your Roomba:

(revver link)

Full details available on the Hacking Roomba project page.

Better Video on OS X: NicePlayer & Perian

nice and happy

I watch movies on my Mac. I’ve been ripping my DVDs to DivX or h.264 to my hard drive simply because it’s easier to double-click a file than hunt around for a particular configuration of atoms. I used to use VLC for any files that Quicktime Player couldn’t play, but I’ve recently come across a better solution.

niceplayer50 NicePlayer — “Quite simply, the nicest media player for Mac.”

perian50 Perian — “The Swiss-army knife for QuickTime.”

Continue reading “Better Video on OS X: NicePlayer & Perian”

RoombaCtrl: Drive your Roomba with your cell phone

Ever since Bluetooth adapters for Roombas appeared, I’ve wanted to control my Roomba with a cell phone. All my recent phones have had Bluetooth. But getting a devkit for a phone was expensive and phone-specific. Trying to develop J2ME (aka “JavaME”) applications for cell phones has been a mess, especially for non-Windows users. Thankfully, Mobile Processing wraps up the ugly details, like Processing does for normal Java. It makes writing little programs for your phone pretty easy, and makes whipping up a program to control a Roomba possible.

So here’s “RoombaCtrl”, a small Java program for your Bluetooth- and J2ME-compatible phone that works with the build-your-own Bluetooth adapter shown in the book “Hacking Roomba” or the pre-built RooTooth.

RoombaCtrl Demo

Now you can drive your Roomba with your cellphone like so:

Continue reading “RoombaCtrl: Drive your Roomba with your cell phone”

RoombaMidi: Roomba as MIDI instrument

[Update: an improved version of this idea, called RoombaMidi2, is available on the Projects area.]

The Roomba has a piezo beeper that can play tunes. You’ve heard it.
And its motors make noise. Why not put them under MIDI control?

So here is RoombaMidi: a Mac OS X application that creates a virtual MIDI instrument for use by any Mac OS X MIDI sequencer, like Ableton Live, Logic, and so on.

If you don’t have a sequencer or just want to play with this quickly, grab the awesome and free app MidiKeys. It’s a little virtual MIDI keyboard.

RoombaMidi has the following features:
– provides GUI interface to controlling Roomba (MIDI not required)
– acts as normal MIDI interface to any MIDI application
– supports up to 16 Roombas, one per MIDI channel.
– responds to MIDI notes 32-127 as tones on Roomba beeper,
– MIDI notes 32-127 play corresponding pitch, velocity is duration in 1/64ths-second increments
– MIDI note 24 turns vacuum motor on-n-off for bass drum fun
– MIDI note 25 blinks the LEDs, velocity is color of Power LED
– MIDI note 28 & 29 spins left or right, velocity is speed of spin
– can act as general multi-Roomba test system
– written in Java, but acts like Mac OS X application

To download:, for Mac OS X 10.3, aka Panther

And if you really want to look at the source…

Here’s what RoombaMidi looks like:

The about page:
roomba midi about

Here’s one example use:

revver version

Other recorded compositions are forthcoming….

(as always thanks to MikeK for helping with this)

HOWTO: Mac OS X Bluetooth Serial Port

Setting up a Bluetooth serial adapter like the SparkFun BlueSMiRF isn’t very hard, but not very intuitive.

Bluetooth supports many “profiles” for doing various things (phone headset, address book syncing, file exchange, etc.) One of these profiles is the “COM” profile and is a simple serial port: raw binary data transmit and receive. That’s the profile these Bluetooth serial adapters speak. All Bluetooth stacks on computers appear to support the COM profile.

The SparkFun BlueSMiRF module speaks only the COM profile and when powered on and set up, looks just like a normal serial port to software. In truth it looks a little like a modem, because you can escape into a “command mode” that has an AT-compatible configuration language.

The full steps are below.
Continue reading “HOWTO: Mac OS X Bluetooth Serial Port”