google day in cyberjaya at multimedia university - the social web is better when it's open
DESCRIPTION
My 1.5hr talk at Google Day Word Of Mouth event at Multimedia University in Cyberjaya near Kuala Lumpur in Malaysia.TRANSCRIPT
The Social Web Is Better When It's OpenGoogle Day, July 14, 2010
Timothy JordanDeveloper Advocate, Google
Hello, world!
Timothy JordanDeveloper Advocate, Google
buzz.timothyjordan.com@timothyjordan
The Social Web Is Better When It's Open
The Social Web Is Better When It's Open
• Let’s talk about us
The Social Web Is Better When It's Open
• Let’s talk about us
• Open Standards
The Social Web Is Better When It's Open
• Let’s talk about us
• Open Standards
• Google Buzz
The Social Web Is Better When It's Open
• Let’s talk about us
• Open Standards
• Google Buzz
• Google Buzz API
The Social Web Is Better When It's Open
• Let’s talk about us
• Open Standards
• Google Buzz
• Google Buzz API
• Examples
The Social Web Is Better When It's Open
• Let’s talk about us
• Open Standards
• Google Buzz
• Google Buzz API
• Examples
• Conclusion
The Social Web Is Better When It's Open
• Let’s talk about us
• Open Standards
• Google Buzz
• Google Buzz API
• Examples
• Conclusion
• Questions and Answers
Let’s talk about us...May I remind you that you have now been in that bath for over three years?*
*Hitchhiker’s Guide to the Galaxy, Douglas Adams
http://www.douglasadams.com/dna/19990901-00-a.html
“We are natural villagers. For most of mankind’s history we have lived in very small communities in which we knew everybody and everybody knew us. But gradually there grew to be far too many of us, and our communities became too large and disparate for us to be able to feel a part of them, and our technologies were unequal to the task of drawing us together. But that is changing.”
How to Stop Worrying and Learn to Love the InternetDouglas Adams
http://www.douglasadams.com/dna/19990901-00-a.html
“Interactivity. Many-to-many communications. Pervasive networking. These are cumbersome new terms for elements in our lives so fundamental that, before we lost them, we didn’t even know to have names for them.”
How to Stop Worrying and Learn to Love the InternetDouglas Adams
http://www.douglasadams.com/dna/19990901-00-a.html
1) everything that’s already in the world when you’re born is just normal
How to Stop Worrying and Learn to Love the InternetDouglas Adams
http://www.douglasadams.com/dna/19990901-00-a.html
2) anything that gets invented between then and before you turn thirty is incredibly exciting and creative and with any luck you can make a career out of it;
How to Stop Worrying and Learn to Love the InternetDouglas Adams
http://www.douglasadams.com/dna/19990901-00-a.html
3) anything that gets invented after you’re thirty is against the natural order of things and the beginning of the end of civilisation as we know it until it’s been around for about ten years when it gradually turns out to be alright really.
How to Stop Worrying and Learn to Love the InternetDouglas Adams
http://www.ted.com/talks/clay_shirky_how_cellphones_twitter_facebook_can_make_history.html
“These tools don’t get socially interesting until they get technologically boring. It isn’t when the shining new tools show up that their uses start permeating society. It’s when everybody is able to take them for granted.”
Clay Shirky
context
Open Standards
Identity
Activity Streams
Identity
Activities
Activity Streams
Identity
Activities
Objects
Activity Streams
Timothy
Shares
A Link
Activity Streams
Barack Obama
Started Following
Timothy Jordan
Activity Streams
Timothy Jordan
Started Following
Barack Obama
Activity Streams
Google Buzz...and the conversational web
code.google.com/apis/buzz
Google Buzz API
Warning!
https://www.googleapis.com/buzz/v1/
https://www.googleapis.com/buzz/v1/
https://code.google.com/apis/buzz/docs/
https://www.googleapis.com/buzz/v1/
http://code.google.com/p/oacurl/
https://www.googleapis.com/buzz/v1/
http://code.google.com/p/buzz-php-client/
http://code.google.com/p/buzz-python-client/
http://code.google.com/p/buzz-java-client/
alt• alt=atom returns an Atom representation of the data.• alt=json returns a JSON representation of the data.
prettyprint• If prettyprint=true, the results returned by the server will be human readable• Default: prettyprint=false
https://www.googleapis.com/buzz/v1/activities/@me/@self?alt=json&prettyprint=true
https://www.googleapis.com/buzz/v1/
https://www.googleapis.com/buzz/v1/activities/@me/@self?max-results=20&c={token}
• preview=true preview the operation.• max-results=N maximum number of results.• max-liked=N maximum number of likes• max-comments=N maximum number of comments• c={token} continuation token
https://www.googleapis.com/buzz/v1/
https://www.googleapis.com/buzz/v1/activities/search?q={q}&lat={l}&lon={l}&radius={r}
• q={query} search.• lat, lon, radius geo location.• bbox bounding box.
https://www.googleapis.com/buzz/v1/
Timothy
Shares
A Link
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ], "replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] },
"actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "{url}/chabotc", "thumbnailUrl": "{url}/chabotc/thumb.jpg" }, "verbs": [ "post" ], "object": { "type": "note", "content": "content goes here", "links": { "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ] } },
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ], "replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] }, "actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "{url}/chabotc", "thumbnailUrl": "{url}/chabotc/thumb.jpg" },
"verbs": [ "post" ], "object": { "type": "note", "content": "content goes here", "links": { "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ] } }, "source": { "title": "Buzz" }, "visibility": { "entries": [
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ], "replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] }, "actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "{url}/chabotc", "thumbnailUrl": "{url}/chabotc/thumb.jpg" }, "verbs": [ "post" ],
"object": { "type": "note", "content": "content goes here" } }, "source": { "title": "Buzz" }, "visibility": { "entries": [ { "id": "https://www.googleapis.com/buzz/v1/people/@me/@groups/@public?alt\u003djson", "title": "Public" } ] } }
{ "kind": "buzz#activity",
"title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 0 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson",
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": {
"liked": [ { "href": "{url}/{userid}/@self/{commentId}/@liked?alt=json", "type": "application/json", "count": 4, "updated": "2010-05-09T02:53:13.730Z" } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json"
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ],
"replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] }, "actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "http://www.google.com/profiles/a/google.com/110242419133439594545", "thumbnailUrl": "" }, "verbs": [ "post" ], "object": {
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ], "replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] }, "actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "{url}/chabotc", "thumbnailUrl": "{url}/chabotc/thumb.jpg" }, "verbs": [ "post" ], "object": { "type": "note", "content": "content goes here", "links": { "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ] } },
"source": { "title": "Buzz" }, "visibility": { "entries": [ { "id": "https://www.googleapis.com/buzz/v1/people/@me/@groups/@public?alt\u003djson", "title": "Public" } ] } }
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ], "replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] }, "actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "{url}/chabotc", "thumbnailUrl": "{url}/chabotc/thumb.jpg" }, "verbs": [ "post" ], "object": { "type": "note", "content": "content goes here", "links": { "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ] } }, "source": { "title": "Buzz" },
"visibility": { "entries": [ { "id": "{url}/people/@me/@groups/@public?alt=json", "title": "Public" } ] } }
{ "kind": "buzz#activity", "title": "note to self", "published": "2010-05-09T02:53:13.000Z", "updated": "2010-05-09T02:53:13.730Z", "id": "tag:google.com,2010:buzz:foo", "links": { "liked": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4/@liked?alt\u003djson", "type": "application/json", "count": 4 } ], "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ], "self": [ { "href": "https://www.googleapis.com/buzz/v1/activities/110242419133439594545/@self/tag:google.com,2010:buzz:z13ispojgwqsinyij04chlupum2ytbspsa4?alt\u003djson", "type": "json" } ], "replies": [ { "href": "{url}/{userId}/@self/{commentId}/@comments?alt=json", "type": "application/json", "count": 2, "updated": "2010-05-09T02:53:13.730Z" } ] }, "actor": { "id": "110242419133439594545", "name": "Chris Chabot", "profileUrl": "{url}/chabotc", "thumbnailUrl": "{url}/chabotc/thumb.jpg" }, "verbs": [ "post" ], "object": { "type": "note", "content": "content goes here", "links": { "alternate": [ { "href": "http://www.google.com/buzz/a/google.com", "type": "text/html" } ] } }, "source": { "title": "Buzz" }, "visibility": { "entries": [ { "id": "{url}/people/@me/@groups/@public?alt=json", "title": "Public" } ] },
"geocode": "37.783471 -122.39922", "address": "701-737 Folsom St, San Francisco, CA 94103, USA", "placeName": "300 3rd St, San Francisco, CA 94107" } }
"object": { "type": "note", "content": "content goes here",
"attachments": [ { "type": "article", "title": "Name of the link", "links": { "alternate": [ { "href": "{url}/to/article.html", "type": "text/html" } ] } } ] }
"object": { "type": "note", "content": "content goes here",
"attachments": [ { "type": "photo", "links": { "preview": [ { "href": "{url}/image_thumb.jpg", "type": "image/jpeg" } ], "enclosure": [ { "href": "{url}/image.jpg", "type": "image/jpeg", "height": 190, "width": 260 } ] } } ] }
"object": { "type": "note", "content": "content goes here", "attachments": [ {
"type": "video", "title": "video description goes here", "links": { "alternate": [ { "href": "http://www.youtube.com/watch?v=abcdef", "type": "text/html" } ], "preview": [ { "href": "{url}/default.jpg", "type": "image/jpeg" }, { "href": "{url}/proxy?thumbnail_default.jpg", "type": "image/jpeg" } ] } } ]
FavoriteFollowFriendJoinPlayPostSaveShareTagUpdate
ArticleAudioBookmarkCommentFileFolderGroupListNotePerson
PhotoPhoto AlbumPlacePlaylistProductReviewServiceStatusVideo
Verbs Objects
FavoriteFollowFriendJoinPlayPostSaveShareTagUpdate
ArticleAudioBookmarkCommentFileFolderGroupListNotePerson
PhotoPhoto AlbumPlacePlaylistProductReviewServiceStatusVideo
Verbs Objects
Auth url: https://www.google.com/buzz/api/auth/OAuthAuthorizeTokenscope: https://www.googleapis.com/auth/buzzdomain: www.example.orgiconUrl: http://www.example.org/icon.png
https://www.google.com/buzz/api/auth/OAuthAuthorizeToken?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbuzz&domain=www.example.org&oauth_token=
mac:~ user$ echo \ '{ "data": { "object": { "type": "note", "content": "Bzz! Bzz! via JSON" } } }'| oacurl -t JSON -X POST \ "https://www.googleapis.com/buzz/v1/activities/@me/@self?alt=json"
http://code.google.com/p/oacurl/
mac:~ user$ echo '' | oacurl -X PUT \ "https://www.googleapis.com/buzz/v1/activities/@me/@liked/{activityId}"
http://code.google.com/p/oacurl/
mac:~ user$ oacurl -X DELETE \ "https://www.googleapis.com/buzz/v1/activities/@me/@liked/{activityId}"
http://code.google.com/p/oacurl/
Examples...for fun and profit
Buzzzy
Marginize SocialwokPing.fm
Meebo bar Shareaholic
Klout Seesmic
Tweetdeck
Boxee
TweetDeck
Seesmic
Buzz Bingobuzz-bingo.appspot.com
client = buzz.Client()client.build_oauth_consumer( OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET)client.oauth_scopes.append( buzz.FULL_ACCESS_SCOPE)
Sign-In & Auth for Buzz
request_token = \ client.fetch_oauth_request_token( 'http://example.com/oauth/callback/' )# Save request token to the data storeauthorization_url = \ client.build_oauth_authorization_url( request_token )
Sign-In & Auth for Buzz
# User visits the authorization_url
Sign-In & Auth for Buzz
verifier = request.get('oauth_verifier')# Lookup request_token in data storeclient.oauth_request_token = request_tokenaccess_token = \ client.fetch_oauth_access_token(verifier)# Save access token to the data store
Sign-In & Auth for Buzz
if post.attachments: for attachment in post.attachments: if attachment.type == 'article': self.award_badge('share') breakif post.geocode and \ post.actor.id != self.key().name(): self.award_badge('geo')elif post.geocode: self.award_badge('mobile')
Board Marked
# Create the attachments for the postbadge_attachment = buzz.Attachment( type='photo', enclosure=badge.badge_icon)link_attachment = buzz.Attachment( type='article', title='Buzz Bingo', uri='http://buzz-bingo.appspot.com/')
Board Marked
# Assemble our announcement Buzz postbadge_post = buzz.Post( content=post_content, attachments=[ badge_attachment, link_attachment ], geocode=VENUE_GEOCODE, place_id=VENUE_PLACE_ID)# Create the postself.client.create_post(badge_post)
Board Marked
if (5 in horizontal_counts) or \ (5 in vertical_counts): self.award_badge('bingo')
Bingo!
Buzz Bingo is open source!code.google.com/p/buzz-bingo
buzz-bingo.appspot.com
Conclusion
Social?
Social!
This is Natural
Open Standards
https://code.google.com/apis/buzz/docs/
https://groups.google.com/group/google-buzz-api
http://code.google.com/p/oacurl/http://code.google.com/p/buzz-php-client/
http://code.google.com/p/buzz-python-client/http://code.google.com/p/buzz-java-client/
Thank you
Questions and Answers
Timothy JordanDeveloper Advocate, Google
buzz.timothyjordan.com@timothyjordan