• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Programming Social Applications
 

Programming Social Applications

on

  • 7,063 views

Programming Social Applications talk at ConvergeSE 2011 (Columbia, SC)

Programming Social Applications talk at ConvergeSE 2011 (Columbia, SC)

Statistics

Views

Total Views
7,063
Views on SlideShare
7,039
Embed Views
24

Actions

Likes
19
Downloads
127
Comments
3

7 Embeds 24

http://lanyrd.com 14
http://www.schoox.com 5
http://127.0.0.1:51235 1
http://paper.li 1
http://www.akamido.com 1
http://netadblog.com 1
http://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

13 of 3 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • zenMonkey - here's the SVN directory for the Shindig 3.0 Beta 2 release: http://svn.apache.org/repos/asf//shindig/tags/shindig-project-3.0.0-beta2/

    Just checkout the source code from that location.
    Are you sure you want to
    Your message goes here
    Processing…
  • how do i download apache shindig 3.0?
    Are you sure you want to
    Your message goes here
    Processing…
  • The audio track from this presentation is available at http://www.archive.org/details/ProgrammingSocialApplicationsWithOpenSource-JonathanLeblanc-
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Not just living on a platform like Facebook- Can consist of a profile, activities, connections, contacts, etc.- Any application that uses social data from users- LivingSocial share to 3 friends for a free purchase- Using Facebook social data
  • Graph = our connections to people and things- Sharing = how we share our content and activities- relationships = how we follow and interact with people
  • - Person to person relationships- Entity relationships- Direct relationship = greatest benefit for companies
  • - Cluster in groups (no connect)- Easy part: clustering- Bad part: manual grouping- Hard part: privacy (Google Buzz story)
  • Opt-in = user has to enable sharing before activities are pushedOpt-in example = location based app that has to request your permission to use your locOpt-out = activity push enabled by default and user has to disable to stopMost companies use a blend, where activities are promoted to a “trusted” group like friends
  • Follower (Twitter) – user has a one to many relationshipConnection (Facebook) – user has a one to one relationshipGroup (Y! / Google Groups - simple) – user has a one to few relationshipPrivacyFollower – content is mostly public (unless you take extensive steps like protecting tweets)Connection – Complex & confusing security (not sure what sharing) especially with hosted application environmentsGroup – simple version is quite secure, complex version is almost impossible since it’s about understanding human relationships
  • Activity = Jon added a photo to his albumComment Activity = Heather / Kimberly posted a comment on a photo

Programming Social Applications Programming Social Applications Presentation Transcript

  • Programming Social Applications
    Jonathan LeBlanc
    Principal Software Engineer
    Yahoo! Developer Network
    Twitter: @jcleblanc
    Web: http://www.jcleblanc.com
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • Core Concepts: What is a Social Application?
  • Core Concepts: What Makes up a Social Application?
    The Social Graph
    Sharing Model
    Relationship Model
  • Core Concepts: The Social Graph
  • Core Concepts: Applying the Real Life Social Graph Online
  • Core Concepts: The Different Sharing Models
    The Opt-in Model
    The Opt-out Model
  • Core Concepts: Relationship Models
    Follower Model
    Connection Model
    Group Model
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • WebFinger
    http://code.google.com/p/webfinger/
  • WebFinger: Origin Through the Finger Protocol
    finger jleblanc@yahoo-inc.com
    Login name: jleblanc
    In real life: Jonathan LeBlanc
    Home phone: 123-4567
    Office: Sunnyvale, CA
    Last Login: Tue Jun 21 15:41 on ttys000
    jleblanc@yahoo-inc.com
    http://www.jcleblanc.com
  • WebFinger: How it Works
  • WebFinger: How it Works
  • WebFinger: How it Works
  • WebFinger: PerformingWebFinger Discovery
    curl http://gmail.com/.well-known/host-meta
    <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
    xmlns:hm='http://host-meta.net/xrd/1.0'>
    <hm:Hostxmlns='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>
  • WebFinger: PerformingWebFinger Discovery
    curl http://www.google.com/s2/webfinger/?q=nakedtechnologist@gmail.com
    The User Profile: http://www.google.com/profiles/nakedtechnologist
    The portable contacts link: http://www-opensocial.googleusercontent.com/api/people/118167121283215553793/
    The public Google Buzz feed: https://www.googleapis.com/buzz/v1/activities/118167121283215553793/@public
  • WebFinger: Homework
    Using the well-known host-meta file, attempt to obtain your public profile from www.yahoo.com
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • The Open Graph Protocol
    http://ogp.me/
  • Open Graph Protocol: How Web Semantics Work
  • Open Graph Protocol: How Web Semantics Work
    Geo
    <span class="geo">
    <span class="latitude">52.48</span>,
    <span class="longitude">-1.89</span>
    </span>
    vCard
    <div class="vcard">
    <div class="fn">Joe Doe</div>
    <div class="org">The Example Company</div>
    <div class="tel">604-555-1234</div>
    <a class="url" href="http://site.com/">http://site.com/</a>
    </div>
  • Open Graph Protocol: Vision of the Semantic Web
  • Open Graph Protocol: Reality of the Semantic Web
  • Open Graph Protocol: What Changed?
  • Open Graph Protocol: How it Works
  • Open Graph Protocol: How it Works
  • Open Graph Protocol: How it Works
  • Open Graph Protocol: The Meta Data Format
    <html xmlns:og="http://ogp.me/ns#">
    <head>
    <title>Restaurant at Wente Vineyards – Livermore</title>
    <meta property="og:url"
    content="http://www.yelp.com/biz/gATFcG9HTaXJpg">
    <meta property="og:type" content="restaurant">
    <meta property="og:title"
    content="The Restaurant at Wente Vineyards">
    <meta property="og:image"
    content="http://media2.px.yelpcdn.com/iVSnIs">
    ...
    </head>
    ...
    </html>
  • Open Graph Protocol: What is Defined?
    • Basic Metadata
    • Location
    • Contact Information
    • Video Data
    • Audio Data
    • Objects
    • Activities
    • Businesses
    • Groups
    • Organizations
    • People
    • Places
    • Products and Entertainment
    • Websites
  • Open Graph Protocol: Drawbacks
    How do we differentiating like objects from one another?
    How do we define definitions for an entire page versus a single object?
  • Open Graph Protocol: Homework
    Construct an Open Graph meta-data parser, then extract Open Graph meta-data from a restaurant page on www.yelp.com
    Hint: The www.ogp.me page has parser helpers.
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • Activity Streams
    http://activitystrea.ms/
  • Activity Streams: What is an Activity?
  • Activity Streams: What is an Activity?
    Mary added to a new photo into her collection.
    • Mary: The Actor
    • Photo: The Object
    • Collection: The Target
  • Activity Streams: The Standard JSON Object
    {
    "items" : [{
    "verb": "post",
    "published": "2011-02-18T16:26:43Z",
    "provider": {
    "url": "http://providersite.com/activity-stream"
    },
    "title": "Mary added a photo to her album.",
    "actor": { ... },
    "object" : { ... },
    "target": { ... }
    }]
    }
  • Activity Streams: The Actor
    Mary added to a new photo into her collection.
    "actor": {
    "url": "http://providersite.com/mary",
    "objectType": "person",
    "id": "tag:provider.com,20110218,162643:mary",
    "image": {
    "url": "http://providersite.com/mary/image",
    "width": 125,
    "height": 125
    },
    "displayName": "Mary Smith"
    },
  • Activity Streams: The Object
    Mary added to a new photo into her collection.
    "object" : {
    "url": "http://site.com/mary/album/place.jpg",
    "objectType": "http://activitystrea.ms/schema/1.0/photo",
    "id": "tag:provider.com,20110218,162643:place",
    "image": {
    "url": "http://site.com/mary/album/thumb.jpg",
    "width": 100,
    "height": 100
    }
    },
  • Activity Streams: The Target
    Mary added to a new photo into her collection.
    "target": {
    "url": "http://targetsite.com/mary/album/",
    "objectType": "http://activitystrea.ms/schema/1.0/
    photo-album",
    "id": "tag:example.org,20110218,162643:album4323",
    "displayName": "Mary's Photo Album",
    "image": {
    "url": "http://site.com/mary/album/thumbnail.jpg",
    "width": 100,
    "height": 100
    }
    }
  • Activity Streams: Object Properties
    Object Properties
    attachments
    author
    content
    display
    name
    downstreamDuplicates
    id
    image
    object
    type
    published
    summary
    updated
    upstreamDuplicates
    url
    url
    width
    Media Object Properties
    duration
    height
  • Activity Streams: Homework
    Take one of your activities (with a photo) from Facebook and convert it to an activity stream object.
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • PubSubHubbub
    http://code.google.com/p/pubsubhubbub/
  • PubSubHubbub: How it Works
  • PubSubHubbub: How it Works
  • PubSubHubbub: How it Works
  • PubSubHubbub: How it Works
  • PubSubHubbub: How it Works
  • The Salmon Protocol
    www.salmon-protocol.org
  • The Salmon Protocol: How it Works
  • The Salmon Protocol: How it Works
  • The Salmon Protocol: How it Works
  • The Salmon Protocol: Things to Consider
    • Is the content coming from a trusted source?
    • How does the publisher prevent spam or abuse?
    • How does the publisher ensure the quality of the updates?
  • The Salmon Protocol: Determining Source
    Subscriber sends signed request to publisher (e.g. using acct:johndoe@subscriber.example.com).
    Publisher performs discovery on endpoint to verify identity provider.
    • Webfinger
    • LRDD (Link-based Resource Descriptor)
    Provider verifies signature via public keys obtained during discovery.
  • Pubsubhubbub and Salmon: Homework
    Construct a subscriber to subscribe to a hub, then create a publisher to push a feed to a hub.
    Hint: www.superfeedr.com has a hosted hub solution at http://superfeedr.com/hubbub
  • What We’re Going to Cover
    • The Social Application: Core Concepts
    • Finger to Webfinger: Find User Social Data
    • Return of the Semantic Web: The Open Graph Protocol
    • Defining User Actions: Activity Streams
    • Controlling Content Syndication: PubSubHubbub and Salmon
  • Resources
    This Presentation:
    http://www.slideshare.net/jcleblanc/programming-social
    Code Sources:
    https://github.com/jcleblanc/programming-social-applications
    Purchase the Book:
    Amazon:http://amzn.to/mQrUkE
    O’Reilly:http://oreil.ly/gzEKiM
    O’Reilly ebook code (50% off): DDM97
    Follow Updates:
    Facebook:www.facebook.com/programmingsocialapps
    Twitter: @socialappsbook
  • Questions?
    http://www.slideshare.net/jcleblanc/slideshare.net/jcleblanc/programming-social
    Jonathan LeBlanc
    Twitter: @jcleblanc
    E-Mail: jleblanc@yahoo-inc.com