Exploring Human Identity Through Personalization and Data Mining                                Jonathan LeBlanc          ...
What We’re Going to Cover             The Foundations of Human Identity             Tribalism and Social Grouping         ...
What We’re Going to Cover             The Foundations of Human Identity             Tribalism and Social Grouping         ...
Human Identity: User Types       Anonymous Users   Registered Usershttp://www.x.com             http://slideshare.net/jcle...
Human Identity: Open Identity Programming      OpenID (…and the upcoming OpenID Connect)      PayPal Access, Google, Yahoo...
Human Identity: Anonymous Usershttp://www.x.com        http://slideshare.net/jcleblanc
Human Identity: Tracking Anonymous Users             There are a few common options           Tracking Cookie     Local St...
Human Identity: Tracking Anonymous Users                   Program Overview      • On each page visited, track the URL    ...
Tracking Anonymous Users with Local Storage var storeName = "visited"; if (typeof(localStorage) == undefined ) {    //Loca...
Tracking Anonymous Users with Cookies    function readCookie(name) {      var nameEQ = name + "=";      var ca = document....
Tracking Anonymous Users with Cookies var storeName = "visited"; if (typeof(localStorage) == "undefined" ) {    var cookie...
Human Identity: Tracking Anonymous Users                   Next Steps / Improvements      • Remove oldest results when sto...
Human Identity: Registered Usershttp://www.x.com          http://slideshare.net/jcleblanc
Human Identity: Identity Sources                   Sources of Real Identity       Social (perceived)         Concrete (tru...
Human Identity: Concrete Identityhttp://www.x.com          http://slideshare.net/jcleblanc
PayPal Access: OAuth 2 + Commerce                   Seamless Checkout                   Prospect Scores                   ...
PayPal Access: The Common Code<?phpdefine(KEY, YOUR APPLICATION ID);define(SECRET, YOUR APPLICATION SECRET);define(CALLBAC...
PayPal Access: Forwarding for Login <?php require_once "common.php"; $auth_url = sprintf(   "%s?scope=%s&response_type=cod...
PayPal Access: Obtaining the Access Token   <?php   require_once "common.php";   //capture code from auth   $code = $_GET[...
PayPal Access: Using the Access Token    //construct URI to fetch profile information for current user    $profile_url =  ...
PayPal Access: Using the Raw Datahttp://www.x.com          http://slideshare.net/jcleblanc
PayPal Access: Using the Raw Datahttp://www.x.com          http://slideshare.net/jcleblanc
What We’re Going to Cover             The Foundations of Human Identity             Tribalism and Social Grouping         ...
Social Grouping: It’s Not A New Thing…http://www.x.com           http://slideshare.net/jcleblanc
Social Grouping: Foundation in Tribalism    Tribalism started as a way to keep us safe    …it has lead to some horrible pa...
Social Grouping: The Real Life Social Graphhttp://www.x.com               http://slideshare.net/jcleblanc
Social Grouping: The Online Social Graphhttp://www.x.com           http://slideshare.net/jcleblanc
Social Grouping: Group Types                   Follower Type                   Connection Type                   Group Typ...
Social Grouping: Data Miners are Rock Starshttp://www.x.com              http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer                   Program Overview      • Use all URLs from the previous program...
Social Grouping: Group Programming Primer                           Step 1: Obtain                           Website Conte...
Social Grouping: Group Programming Primer Step 2: Perform Keyword Density Searchhttp://www.x.com            http://slidesh...
Social Grouping: Group Programming Primer                         Step 3: Weight                         Keywordshttp://ww...
What We’re Going to Cover             The Foundations of Human Identity             Tribalism and Social Grouping         ...
Experimental Identity: WebFingerhttp://www.x.com          http://slideshare.net/jcleblanc
Experimental Identity: WebFinger                   Step 1: Perform Discovery  curl https://gmail.com/.well-known/host-meta...
Experimental Identity: WebFinger <XRD xmlns=http://docs.oasis.open.org/ns/xri/xrd-1.0   xmlns:hm=http://host-meta.net/xrd/...
Experimental Identity: WebFinger                   Step 2: Collect User Data                    curlhttp://www.google.com/...
Experimental Identity: WebFinger   User Profile   http://www.google.com/profiles/nakedtechnologist   Portable Contacts   h...
Experimental Identity: WebFinger         profileUrl      name         id               formatted         thumbnail url    ...
Experimental Identity: BrowserIDhttp://www.x.com          http://slideshare.net/jcleblanc
Experimental Identity: BrowserID     BrowserID Source     <script src="https://browserid.org/include.js"     type="text/ja...
Experimental Identity: BrowserIDnavigator.id.get(function(assertion) {    if (assertion) {       $.ajax({           url: h...
Experimental Identity: BrowserID Results        {            audience: "jcleblanc.com",            email: "nakedtechnologi...
What We’re Going to Cover             The Foundations of Human Identity             Tribalism and Social Grouping         ...
Social Identity Fail: Personal Safety  When Social Discovery Impacts Personal Safety                   “My privacy concern...
Social Identity Fail: Privacy Concerns      When Making Things Easy Impairs Privacy                   “Path Uploads Your E...
Social Identity Fail: The Fine Line    The Fine Line Between Insightful and Creepy                   “How Target Figured O...
Identity Programming Core Concepts            Identity is more than just a login            Have a social conscience      ...
Thanks! Any Questions?    http://slidesha.re/convergese_id                           Jonathan LeBlanc          Developer E...
Upcoming SlideShare
Loading in …5
×

2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

2,546 views
2,414 views

Published on

This workshop dives into the depths of how a person can be identified online, allowing for the delivery of highly personalized experiences. This will cover a few topics, including:
Building the identity foundation using authentication systems like BrowserID, PayPal Access and Facebook Connect.
Understanding how cultural identity concepts like tribalism play into how people group themselves innately online.
Building personality and interest profiles for users by tracking actions using keyword density scraping and categorization.

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,546
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Concepts of bound vs unbound scopes
  • Suck in web content via curlConvert to valid XML document (do not use as text and run Regex against it)
  • Search through text on the page and store words + how often they are usedStrip out common words
  • Use meta description and keywords to match against your keyword density searchUse Open Graph protocol tags to find more keywords and page content
  • http://gizmodo.com/5470696/fck-you-google
  • http://www.pcmag.com/article2/0,2817,2399970,00.asp
  • http://www.forbes.com/sites/kashmirhill/2012/02/16/how-target-figured-out-a-teen-girl-was-pregnant-before-her-father-did/The statistician is now a rock star
  • 2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

    1. 1. Exploring Human Identity Through Personalization and Data Mining Jonathan LeBlanc Developer Evangelist: X.commerce Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc
    2. 2. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Failhttp://www.x.com http://slideshare.net/jcleblanc
    3. 3. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Failhttp://www.x.com http://slideshare.net/jcleblanc
    4. 4. Human Identity: User Types Anonymous Users Registered Usershttp://www.x.com http://slideshare.net/jcleblanc
    5. 5. Human Identity: Open Identity Programming OpenID (…and the upcoming OpenID Connect) PayPal Access, Google, Yahoo! OAuth (1.0a + 2.0) PayPal Access, Facebook, Twitter BrowserID Mozillahttp://www.x.com http://slideshare.net/jcleblanc
    6. 6. Human Identity: Anonymous Usershttp://www.x.com http://slideshare.net/jcleblanc
    7. 7. Human Identity: Tracking Anonymous Users There are a few common options Tracking Cookie Local Storagehttp://www.x.com http://slideshare.net/jcleblanc
    8. 8. Human Identity: Tracking Anonymous Users Program Overview • On each page visited, track the URL • HTML5 Local Storage as primary storage • Cookies as secondary storagehttp://www.x.com http://slideshare.net/jcleblanc
    9. 9. Tracking Anonymous Users with Local Storage var storeName = "visited"; if (typeof(localStorage) == undefined ) { //Local Storage Not Available } else { try { var sites = localStorage.getItem(storeName); sites = (sites === null) ? window.location : sites + window.location; localStorage.setItem(storeName, sites + "|"); } catch (e) { if (e == QUOTA_EXCEEDED_ERR) { //quota exceeded } } }
    10. 10. Tracking Anonymous Users with Cookies function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(;); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ){ c = c.substring(1, c.length) }; if (c.indexOf(nameEQ) == 0){ return c.substring(nameEQ.length, c.length); } } return null; }
    11. 11. Tracking Anonymous Users with Cookies var storeName = "visited"; if (typeof(localStorage) == "undefined" ) { var cookieVal = readCookie(storeName); var value = ((cookieVal === null) ? window.location : cookieVal + window.location); var days = 1; var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); var expires = "; expires=" + date.toGMTString(); document.cookie = storeName + "=" + value + "|" + expires + "; path=/"; } else { //Use Local Storage }
    12. 12. Human Identity: Tracking Anonymous Users Next Steps / Improvements • Remove oldest results when storage fills • Build categorization mapping prior to storage to save space (more on this later)http://www.x.com http://slideshare.net/jcleblanc
    13. 13. Human Identity: Registered Usershttp://www.x.com http://slideshare.net/jcleblanc
    14. 14. Human Identity: Identity Sources Sources of Real Identity Social (perceived) Concrete (true)http://www.x.com http://slideshare.net/jcleblanc
    15. 15. Human Identity: Concrete Identityhttp://www.x.com http://slideshare.net/jcleblanc
    16. 16. PayPal Access: OAuth 2 + Commerce Seamless Checkout Prospect Scores Recommendationshttp://www.x.com http://slideshare.net/jcleblanc
    17. 17. PayPal Access: The Common Code<?phpdefine(KEY, YOUR APPLICATION ID);define(SECRET, YOUR APPLICATION SECRET);define(CALLBACK_URL, YOUR CALLBACK PATH - TO COMPLETE.PHP);define(AUTH_ENDPOINT, https://identity.x.com/xidentity/resources/authorize);define(TOKEN_ENDPOINT, https://identity.x.com/xidentity/oauthtokenservice);define(USER_ENDPOINT, https://identity.x.com/xidentity/resources/profile/me);function run_curl($url, $method = GET, $postvals = null){ ... }?>
    18. 18. PayPal Access: Forwarding for Login <?php require_once "common.php"; $auth_url = sprintf( "%s?scope=%s&response_type=code&redirect_uri=%s&client_id=%s", AUTHORIZATION_ENDPOINT, urlencode("https://identity.x.com/xidentity/resources/profile/me"), urlencode(CALLBACK_URL), KEY); //forward user to PayPal auth page header("Location: $auth_url"); ?>
    19. 19. PayPal Access: Obtaining the Access Token <?php require_once "common.php"; //capture code from auth $code = $_GET["code"]; //construct POST object for access token fetch request $postvals = sprintf("client_id=%s&client_secret=%s&grant_type=authorization_code& code=%s&redirect_uri=%s", KEY, SECRET, $code, urlencode(CALLBACK_URL)); //get JSON access token object $token = json_decode(run_curl(ACCESS_TOKEN_ENDPOINT, POST, $postvals));
    20. 20. PayPal Access: Using the Access Token //construct URI to fetch profile information for current user $profile_url = sprintf("%s?oauth_token=%s", PROFILE_ENDPOINT, $token- >access_token); //fetch profile of current user $profile = run_curl($profile_url); var_dump($profile); ?>
    21. 21. PayPal Access: Using the Raw Datahttp://www.x.com http://slideshare.net/jcleblanc
    22. 22. PayPal Access: Using the Raw Datahttp://www.x.com http://slideshare.net/jcleblanc
    23. 23. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Failhttp://www.x.com http://slideshare.net/jcleblanc
    24. 24. Social Grouping: It’s Not A New Thing…http://www.x.com http://slideshare.net/jcleblanc
    25. 25. Social Grouping: Foundation in Tribalism Tribalism started as a way to keep us safe …it has lead to some horrible parts of history but it is also a foundation of many of our social relationshipshttp://www.x.com http://slideshare.net/jcleblanc
    26. 26. Social Grouping: The Real Life Social Graphhttp://www.x.com http://slideshare.net/jcleblanc
    27. 27. Social Grouping: The Online Social Graphhttp://www.x.com http://slideshare.net/jcleblanc
    28. 28. Social Grouping: Group Types Follower Type Connection Type Group Typehttp://www.x.com http://slideshare.net/jcleblanc
    29. 29. Social Grouping: Data Miners are Rock Starshttp://www.x.com http://slideshare.net/jcleblanc
    30. 30. Social Grouping: Group Programming Primer Program Overview • Use all URLs from the previous program. • Obtain content category for page. • Categorize user interest.http://www.x.com http://slideshare.net/jcleblanc
    31. 31. Social Grouping: Group Programming Primer Step 1: Obtain Website Contenthttp://www.x.com http://slideshare.net/jcleblanc
    32. 32. Social Grouping: Group Programming Primer Step 2: Perform Keyword Density Searchhttp://www.x.com http://slideshare.net/jcleblanc
    33. 33. Social Grouping: Group Programming Primer Step 3: Weight Keywordshttp://www.x.com http://slideshare.net/jcleblanc
    34. 34. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Failhttp://www.x.com http://slideshare.net/jcleblanc
    35. 35. Experimental Identity: WebFingerhttp://www.x.com http://slideshare.net/jcleblanc
    36. 36. Experimental Identity: WebFinger Step 1: Perform Discovery curl https://gmail.com/.well-known/host-metahttp://www.x.com http://slideshare.net/jcleblanc
    37. 37. Experimental Identity: WebFinger <XRD xmlns=http://docs.oasis.open.org/ns/xri/xrd-1.0 xmlns:hm=http://host-meta.net/xrd/1.0> <hm:Host xmlns=http://host-meta.net/xrd/1.0>gmail.com </hm:Host> <Link rel=lrdd template=http://www.google.com/s2/webfinger/?q={uri}> <Title>Resource Descriptor</Title> </Link> </XRD>http://www.x.com http://slideshare.net/jcleblanc
    38. 38. Experimental Identity: WebFinger Step 2: Collect User Data curlhttp://www.google.com/s2/webfinger/?q=nakedt echnologist@gmail.comhttp://www.x.com http://slideshare.net/jcleblanc
    39. 39. Experimental Identity: WebFinger User Profile http://www.google.com/profiles/nakedtechnologist Portable Contacts http://www- opensocial.googleusercontent.com/api/people/118167 121283215553793/http://www.x.com http://slideshare.net/jcleblanc
    40. 40. Experimental Identity: WebFinger profileUrl name id formatted thumbnail url family name urls given name photos display namehttp://www.x.com http://slideshare.net/jcleblanc
    41. 41. Experimental Identity: BrowserIDhttp://www.x.com http://slideshare.net/jcleblanc
    42. 42. Experimental Identity: BrowserID BrowserID Source <script src="https://browserid.org/include.js" type="text/javascript"></script> JQuery Source <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>http://www.x.com http://slideshare.net/jcleblanc
    43. 43. Experimental Identity: BrowserIDnavigator.id.get(function(assertion) { if (assertion) { $.ajax({ url: https://browserid.org/verify, type: POST, data:assertion=+assertion+&audience=jcleblanc.com, success: function(res) { console.log(res); } });});http://www.x.com http://slideshare.net/jcleblanc
    44. 44. Experimental Identity: BrowserID Results { audience: "jcleblanc.com", email: "nakedtechnologist@gmail.com", expires: 1320081400987, issuer: "browserid.org", status: "okay" }http://www.x.com http://slideshare.net/jcleblanc
    45. 45. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Failhttp://www.x.com http://slideshare.net/jcleblanc
    46. 46. Social Identity Fail: Personal Safety When Social Discovery Impacts Personal Safety “My privacy concerns are not trite. They are linked to my actual physical safety” --Harriet Jacobs (Gizmodo)http://www.x.com http://slideshare.net/jcleblanc
    47. 47. Social Identity Fail: Privacy Concerns When Making Things Easy Impairs Privacy “Path Uploads Your Entire iPhone Contact List By Default” --Mark Hachman (PCMag)http://www.x.com http://slideshare.net/jcleblanc
    48. 48. Social Identity Fail: The Fine Line The Fine Line Between Insightful and Creepy “How Target Figured Out A Teen Girl Was Pregnant Before Her Father Did” --Kashmir Hill (Forbes)http://www.x.com http://slideshare.net/jcleblanc
    49. 49. Identity Programming Core Concepts Identity is more than just a login Have a social conscience Find the tool that: – Has the raw data that you need – Works with your businesshttp://www.x.com http://slideshare.net/jcleblanc
    50. 50. Thanks! Any Questions? http://slidesha.re/convergese_id Jonathan LeBlanc Developer Evangelist: X.commerce Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc

    ×