I’m Almost There

This iPhone app was conceived by my brilliant friend, Lucas Ryan. I helped him out a bit in building it.

Are you ever running late to meet someone? It’s a pain to keep calling them with updates on where you are, traffic conditions, etc.? I’m Almost There lets you send the person you’re meeting a beacon that shows where you are on a map.

The App’s Flow

1) Choose someone to receive your location.

2) The app sends that person an SMS with a link.

3) When the click the link in the SMS, they see your location on a map.

Their location updates every few seconds, so you can see their progress toward you in real time.

Where are You?

Another cool thing is the app works in the reverse use case, when you’re waiting for someone and want to know where they are (“Where are you” vs. “I’m almost there“). In this case, if your friend opens the message on a smart phone, his browser sends his location, which we display on a map in the app.

Geolocation

We learned a couple things about geolocation.

  • If you have a loop that continuously sends out location, the iPhone will send a new location every 2-3 seconds, and doing so will consume about 12% of the battery in an hour.
  • The locations start off very inaccurate, and quickly converge.  Nonetheless, every now and then, the phone will send a location that’s a mile or so off.  Luckily, the phone also sends and accuracy parameter, so you can disregard outliers.

Privacy

Geolocation brings up lots of privacy concerns.  Our solution is:

  • The user explicitly chooses who sees their location, and
  • We expire the location beacon quickly (defaults to 20 minutes).

Long Polling

We use long polling in both the client app as well as the receiver’s browser to show continuous location updates.  Location info is sent using a channel publish / subscribe model, with a Tornado server routing the data.

You can find I’m Almost There in the app store.