Adding the “where”



Microsoft MIX:10            TM



March 16, 2010
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?
Location =
Context + Relevancy
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
Sometimes the location doesn’t matter
What is a “place”?
A place is: coordinates
‣   36o5’19.176”N,   115o10’36.084”

‣
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
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
A place is: a polygon
A place is: a name
A place is: a name
‣   3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
A place is: a name
‣   3950 Las Vegas Boulevard South, Las Vegas, Nevada, USA
‣   West Hacienda Avenue and Las Vegas Boulevard South
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
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
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
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
How do users expect to
use “where”?
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
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
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
Where do you actually
“get” location from?
Triangulation
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
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
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
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
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”
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
Brokered location
Brokered location
Working with users
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”
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
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
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?
“What’s happening here?”
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
curl -u USERNAME:PASSWORD 
-d location="San Francisco, California" 
http://twitter.com/account/update_location.xml

<user>
  <id>8285392</id>
  <name>raffi</name>
  <screen_name>raffi</screen_name>
  <location>San Francisco, California</location>
  ...
</user>
Geotagging API
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)
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)
Trends API
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
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”
We’re a platform
Questions?   Follow me at
             twitter.com/raffi




                           TM

Adding the "Where" to the "When"

  • 1.
  • 3.
    What am Igoing 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?
  • 4.
  • 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
  • 12.
    Sometimes the locationdoesn’t matter
  • 13.
    What is a“place”?
  • 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
  • 17.
    A place is:a polygon
  • 18.
  • 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
  • 25.
    How do usersexpect to use “where”?
  • 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
  • 29.
    Where do youactually “get” location from?
  • 30.
  • 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
  • 37.
  • 38.
  • 39.
  • 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 afeature ‣ 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?
  • 44.
  • 45.
    Original attempts Adding itto 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
  • 46.
    curl -u USERNAME:PASSWORD -d location="San Francisco, California" http://twitter.com/account/update_location.xml <user> <id>8285392</id> <name>raffi</name> <screen_name>raffi</screen_name> <location>San Francisco, California</location> ... </user>
  • 47.
  • 48.
    Geotagging API Adding itto 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)
  • 54.
    Streaming / Geo-hose locationfiltering 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)
  • 55.
  • 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
  • 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”
  • 60.
  • 61.
    Questions? Follow me at twitter.com/raffi TM