2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

2,608 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,608
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

    ×