Monday, October 17, 2011

Location Sensitive Posts: Do It Right, Or Don't Do It At All

When I posted that, I was at home. I live in Wandsworth (post code: SW18) in London; Camden (post code: N1) is 8 miles away according to Google Maps. To be very clear, I was nowhere near Camden at the time I posted that. (at least not as a Londoner would know it).

On my way home from work, Facebook somehow decided in a different post that I was in South Kensington (post code: SW7), even though I never crossed the river, going straight from OpenGamma HQ to Wandsworth and staying the entire time south of the river.

This is a problem.

No, You Can't Turn It Off

I'm running an iPhone 4S with iOS 5 running the most recent Facebook iOS update. Everything is as far up to date as you can possibly get.

I've tried to turn off location-sensitive Facebook updates. I've tried under Settings/Facebook. I've tried in the Facebook application. There appears to be no way that I (an otherwise relatively computer savvy individual) can figure out to turn it off.

Twitter lets you geo-encode a tweet. You can turn it on, you can turn it off. You can change your defaults and change a particular tweet (usually I tweet geo-encoded off, sometimes I turn it on for a location-sensitive post). You can take a look at where Twitter thinks you are, and if it's off, you can turn it off again. There's no such option for Facebook.

Why This Matters

In London, a distance of 8 miles is the other end of town. It's so far given our geography that it beggars the mind that if I claimed that I was at home, but some computer verified me as being in Camden, that this would not be an acceptable fudge the way that a distinction like Southwark/Lambeth, or Westminster/Kensington might be. I might as well be in Paris.

What I've noticed is that as geo-location gets better and better, people start assuming that the technology must be correct. Part of this is surely the CSI-culture that Hollywood has given us, telling us that computers are never infallible, and that all answers are on the other end of an infallible evidentiary chain. But part of this is that these days people probably do lie more than computers.

Which is why I'm so annoyed at Facebook's failures in this respect. If I tell someone (a friend; a family member; my significant other) that I'm at home watching Glee, and they see a Facebook update that says that I'm in Camden, one of the following will happen:

  • They will think I'm lying and am actually at an Amy Winehouse memorial concert;
  • They will think I'm probably telling the truth, but in the back of their mind think I might be lying and am shopping for Doc Martins;
  • They will 100% know that I'm telling the truth, and immediately blame Facebook's bad software engineering.

Which do you think is the most likely?

Worse off, imagine that we're talking about something where there are Serious Stakes on the line: a divorce ("you claim you were home watching Glee but your phone claims you were in Camden visiting your mistress"); a criminal trial ("you claim you were home watching Glee but your phone claims you were stabbing someone to death in Camden"); a terrorist investigation ("you claim you were home watching Glee but your phone claims you were making a bomb in Camden"). As technology advances, can you even doubt one of those will happen on a regular basis? Do you think the people evaluating the technology are going to ask things like "how accurate was the GPS receiver?" or "how was the coordinate-to-placename database compiled?"

We Owe It To The Humans

As a software engineer, please let me ask for the following code of conduct to prevail:

  • If you enable location-aware anything, make it obvious to turn it off, both as a default, and as a one-off action, before and after the location is determined;
  • Never imply more sensitivity than your entire system (hardware, software, and databases) are capable of;
  • Until and unless you have run your location system past a local in a particular region, don't enable it.

If we all follow these three maxims, we'll not repeat Facebook iOS's current failures putting me in Camden against my will.

Friday, October 14, 2011

Multi-Device Sync in iMessage

So faithful readers will know that I was a big Kik Messenger fan,, and used it to handle keeping in touch with world + dog given my nearly insane transatlantic flight schedule.

I decided, however, to give up the Android experience (keep meaning to blog about that) and use my old iPhone 3GS as my US phone, and my new (on its way) iPhone 4S as my UK phone. This, plus my iPad 2 (whose SIM I change in the plane in between London and New York), means that I can hopefully get my multi-device sync on and communicate with the vast majority of people that I SMS/IM to, who all have iOS devices.

However, I upgraded both my iPad and my iPhone to iOS 5, and iMessage wasn't synchronizing properly. Apparently this, the killer feature in iMessage (and the only one that's superior to Kik thus far in my experimentation), doesn't work out of the box. You have to change your phone settings to enable it.

  1. Go to Settings > iMessage
  2. Select "Receive At":
  3. Make sure at least one Email is set (and is set on any other iOS device you have), and then choose "Caller ID":
  4. Pick the email address you want to use (and make sure it's the same on all iOS devices):

And then you're in business! Shame they didn't make it default to this...