programming social applications n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Programming Social Applications PowerPoint Presentation
Download Presentation
Programming Social Applications

Loading in 2 Seconds...

play fullscreen
1 / 59

Programming Social Applications - PowerPoint PPT Presentation


  • 1 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Programming Social Applications


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
    Presentation Transcript
    programming social applications

    Programming Social Applications

    Jonathan LeBlanc

    Principal Software Engineer

    Yahoo! Developer Network

    Twitter: @jcleblanc

    Web: http://www.jcleblanc.com

    what we re going to cover

    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 1

    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 makes up a social application

    Core Concepts: What Makes up a Social Application?

    The Social Graph

    Sharing Model

    Relationship Model

    core concepts the different sharing models

    Core Concepts: The Different Sharing Models

    The Opt-in Model

    The Opt-out Model

    core concepts relationship models

    Core Concepts: Relationship Models

    Follower Model

    Connection Model

    Group Model

    what we re going to cover 2

    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

    WebFinger

    http://code.google.com/p/webfinger/

    webfinger origin through the finger protocol

    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 performingwebfinger discovery

    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 1

    WebFinger: PerformingWebFinger Discovery

    curl

    http://www.google.com/s2/webfinger/?q=nake

    dtechnologist@gmail.com

    The User Profile:

    http://www.google.com/profiles/nakedtechnologist

    The portable contacts link: http://www-

    opensocial.googleusercontent.com/api/people/118167

    121283215553793/

    The public Google Buzz feed:

    https://www.googleapis.com/buzz/v1/activities/118167

    121283215553793/@public

    webfinger homework

    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 3

    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

    open graph protocol how web semantics work 1

    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 the meta data format

    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

    Open Graph Protocol: What is Defined?

    • Basic Metadata

    • Location

    • Contact Information

    • Video Data

    • Audio Data

    • Objects

    • People

    • Places

    • Products and Entertainment

    • Websites

    • Activities

    • Businesses

    • Groups

    • Organizations

    open graph protocol drawbacks

    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

    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 4

    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

    Activity Streams

    http://activitystrea.ms/

    activity streams what is an activity 1

    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

    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

    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

    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

    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

    Activity Streams: Object Properties

    Object Properties

    attachments

    author

    content

    display

    name

    downstreamDuplicates

    id

    image

    object

    type

    published

    summary

    updated

    upstreamDuplicates

    url

    Media Object Properties

    duration

    height

    url

    width

    activity streams homework

    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 5

    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

    PubSubHubbub

    http://code.google.com/p/pubsubhubbub/

    the salmon protocol

    The Salmon Protocol

    www.salmon-protocol.org

    the salmon protocol things to consider

    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

    The Salmon Protocol: Determining Source

    1. Subscriber sends signed request to publisher (e.g.

    using acct:johndoe@subscriber.example.com).

    1. Publisher performs discovery on endpoint to verify

    identity provider.

    •Webfinger

    • LRDD (Link-based Resource Descriptor)

    2. Provider verifies signature via public keys obtained

    during discovery.

    pubsubhubbub and salmon homework

    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 6

    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

    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

    Questions?

    http://www.slideshare.net/jcleblanc/slideshare.net

    /jcleblanc/programming-social

    Jonathan LeBlanc

    Twitter: @jcleblanc

    E-Mail: jleblanc@yahoo-inc.com