Social applications have been venues for people to converse, emote, and share -- and in those applications, "when" has always been inherent and well captured, but the other contextual signal, "where", has been (usually) conspicuously missing. Location, when taken into account, can provide rich signals to help understand social connectivity whilst helping to discover and surface content. Numerous devices and infrastructure services have the ability to expose location, but comprehending how to best make use of these technologies can be complex. Additionally, after the infrastructure is put in place, the next hurdle to overcome is understanding how to create a useable location-based feature that users can comprehend and love while also feeling safe and secure.
This session is targeted to those who want to learn about these technologies, and to those who want to understand how to think about their users' needs, their security, and their privacy. We'll also review web and mobile services that have been designed with location at their core, or location as a feature. And, finally, we'll talk about how Twitter thinks about adding "where" to our "when".
3. What am I going to talk about?
‣ What is a “place”?
‣ How do users expect to use “where” information?
‣ Where do you actually get “location” from?
‣ What is doing?
5. Location = Relevancy + Context
‣ Transforming the “What’s happening?” to
“What’s happening here?”
‣ 140 characters is our limit
‣ We wanted metadata
‣ People want to talk about places
14. A place is: coordinates
‣ 36o5’19.176”N, 115o10’36.084”
‣
15. A place is: coordinates
‣ 36o5’19.176”N, 115o10’36.084”
‣ A pair of decimals
‣ Gets a bit complicated when
trying to account for “precision”)
‣ Doesn’t mean much to people
16. A place is: coordinates
‣ 36o5’19.176”N, 115o10’36.084”
‣ A pair of decimals
‣ Gets a bit complicated when
trying to account for “precision”)
‣ Doesn’t mean much to people
‣ Needs a map to make sense
19. A place is: a name
‣ 3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
20. A place is: a name
‣ 3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
‣ West Hacienda Avenue and Las Vegas Boulevard South
21. A place is: a name
‣ 3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
‣ West Hacienda Avenue and Las Vegas Boulevard South
‣ “The Strip” / Las Vegas / Nevada
22. A place is: a name
‣ 3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
‣ West Hacienda Avenue and Las Vegas Boulevard South
‣ “The Strip” / Las Vegas / Nevada
‣ Mandalay Bay Resort and Casino
23. A place is: a name
‣ 3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
‣ West Hacienda Avenue and Las Vegas Boulevard South
‣ “The Strip” / Las Vegas / Nevada
‣ Mandalay Bay Resort and Casino
‣ WOEID 2436704 / Twitter ID 5c2b5e46ab891f07
24. A place is: a name
‣ 3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
‣ West Hacienda Avenue and Las Vegas Boulevard South
‣ “The Strip” / Las Vegas / Nevada
‣ Mandalay Bay Resort and Casino
‣ WOEID 2436704 / Twitter ID 5c2b5e46ab891f07
‣ Names are, of course, tricky when it comes to internationalization
26. Sharing coordinates
‣ More aptly named “geotagging”
‣ Good for sharing photos
‣ Possibly good for talking about a specific place
(e.g. store, restaurant)
‣ People don’t understand numbers and without
a map, there is a lack of context
‣ Huge privacy implications
27. Sharing polygons
‣ Privacy implications are
potentially better
‣ If you thought sharing one pair
of numbers was bad...
‣ Questions around polygon
definition
‣ Still unable to visualize unless
on a map
28. Sharing names
‣ Has the potential to make a
connection with users
‣ Distinguishes a “named place” from
simply a “place”
‣ Inverse relationship between granularity
and connection
‣ Rather large internationalization /
context implications
31. Triangulation: cellular
‣ 200m to 1km accuracy
‣ Measuring signal strength to cell towers with known locations
‣ If can only see one cellular tower, then fallback to cellular tower
identification - better than nothing, but really inaccurate
‣ Requires cellular modem, software, and lookups
32. Triangulation: WiFi
‣ Sub 20m accuracy
‣ Works indoors and in urban areas
‣ Doesn’t need dedicated hardware just a 802.11 radio
‣ Relatively quick time to get a position
33. Triangulation: GPS
‣ Sub 1m accuracy
‣ Need dedicated GPS hardware
‣ Prone to multi-path confusion especially in cities
‣ Needs line of sight to the sky
‣ Doesn’t work well indoors
‣ Potentially takes a few minutes to get a lock
34. Association
‣ IP address to geographical mapping
‣ All done on the server side
‣ Maybe “good” for city level
‣ Maxmind has 83% at 40km
‣ Very error prone
‣ Gets wonky when dealing with cellular
connections or rather large ISPs
‣ Database needs to be refreshed fairly frequently
35. Extraction
‣ Read the text and understand intent
‣ Hard to understand whether talking from
a place, or about a place
‣ Running text through a geocoder
(Google, Yahoo, Geocoder.us)
‣ Parsing structured URLs and then
crawling “place pages”
36. Location in browser
‣ Geolocation API Specification for JavaScript
navigator.geolocation.getCurrentPosition
‣ Does a callback with a position object
‣ position.coords has
‣ latitude and longitude
‣ accuracy
‣ other stuff
‣ Support in Firefox 3.5, Chrome, Opera, and others with Google Gears
40. Implicit vs Explicit
‣ Do you automatically add location content,
or does the user have to explicitly do
something?
‣ Because this is a privacy sensitive issue -
users want to “be in control”
41. Workflow
‣ Plan for asynchronicity
‣ May need server to do something
‣ May need client to do something
‣ Client may get “streamed” updated
information stream to act on
‣ Almost certainly need human
intervention
‣ If you have the infrastructure, learn from
your users actions
42. Lying is a feature
‣ Not just falsification
‣ Understand if you’re building a “verifiied” location service
‣ Sometimes just want to annotate a comment with a place
‣ “Context” means different things
‣ Making a comment after the fact
‣ Pointing somebody else to a location
43. Privacy
‣ Give the user control
‣ For Twitter, you had to explicitly opt
into the feature
‣ We also provide the ability to purge
location information
‣ Communicate to the user what’s
happening both in the client and
the server
‣ Can somebody else tag your house?
45. Original attempts
Adding it to the tweet
‣ Use myloc.me, et. al. to add text to the tweet
‣ Localizes mobile phone and puts location “in band”
‣ Takes from 140 characters
Setting profile level locations
‣ Set the user/location of a Twitter user
‣ There is an API for that!
‣ Not on a per-tweet basis and not designed for high frequency updates
48. Geotagging API
Adding it to the tweet
‣ Per-tweet basis
‣ Out of band / pure meta-data
‣ Does not take from the 140 characters
Native Twitter support
‣ Simple way to update status with location data
‣ Ability to remove geotags from your tweets en masse
‣ Using GeoRSS and GeoJSON as the encoding format
‣ Across all Twitter APIs (REST, Search, and Streaming)
49.
50.
51.
52.
53.
54. Streaming / Geo-hose
location filtering
curl "http://stream.twitter.com/1/statuses/filter.xml?
locations=-74.5129,40.2759,-73.5019,41.2759"
locations is a bounding box specified by “long1,lat1,long2,lat2” and can
track up to 10 locations that are most 1 degree square (~60 miles
square and enough to cover most metropolitan areas)
57. Trends API
Global trends
‣ Currently on front page of Twitter.com and on search.twitter.com
‣ Analysis of “hot conversations”
‣ Does not take from the 140 characters
Location specific trends
‣ Tweets being localized through a variety of means into trends
‣ Locations exposed over the API as WOEIDs
‣ Can ask for available trends sorted by distance from your location
‣ Querying for a parent of a location will return all locations under it
58.
59. Geo-place API
‣ Reverse geocoder to get
a list of places that a
Tweet can be attached to
‣ Place can then be
permanently attached to
the Tweet and appears in
all APIs
‣ Allows for “location
obfuscation”