twitter meetup at the hacker dojo

101
TM 1

Upload: matt-harris

Post on 26-Jan-2015

110 views

Category:

Technology


0 download

DESCRIPTION

What's Next & Big with Twitter

TRANSCRIPT

Page 1: Twitter Meetup at the Hacker Dojo

TM

1

Page 2: Twitter Meetup at the Hacker Dojo

TM

What's Next & Big with Twitter

@hackerdojoJuly 1, 2010

#tmeetup @themattharris @raffi @hackerdojo

2

Page 3: Twitter Meetup at the Hacker Dojo

TM

About us

3

Page 4: Twitter Meetup at the Hacker Dojo

TM

The team

4

Page 5: Twitter Meetup at the Hacker Dojo

TM

@themattharrisAbout us

5

Page 6: Twitter Meetup at the Hacker Dojo

TM

@raffiAbout us

6

Page 7: Twitter Meetup at the Hacker Dojo

TM

7

Page 8: Twitter Meetup at the Hacker Dojo

TM

160,000

8

Page 9: Twitter Meetup at the Hacker Dojo

TM

160,000Registered third-party Applications

9

Page 10: Twitter Meetup at the Hacker Dojo

TM

75%

10

Page 11: Twitter Meetup at the Hacker Dojo

TM

75%Traffic on Twitter comes from places outside of twitter.com

11

Page 12: Twitter Meetup at the Hacker Dojo

TM

65 Million

12

Page 13: Twitter Meetup at the Hacker Dojo

TM

65 MillionTweets per day

13

Page 14: Twitter Meetup at the Hacker Dojo

TM

65%

14

Page 15: Twitter Meetup at the Hacker Dojo

TM

65%Users are outside of the United States

15

Page 16: Twitter Meetup at the Hacker Dojo

TM

3.5 Billion

16

Page 17: Twitter Meetup at the Hacker Dojo

TM

3.5 BillionRequests per day to the API

17

Page 18: Twitter Meetup at the Hacker Dojo

TM

2,928

18

Page 19: Twitter Meetup at the Hacker Dojo

TM

2,928Tweets-per-second (June 14 2010, Brazil vs North Korea)

19

Page 20: Twitter Meetup at the Hacker Dojo

TM

2,928 3,283Tweets-per-second (June 24 2010, Japan vs Denmark)

20

Page 21: Twitter Meetup at the Hacker Dojo

TM

What is ? The Twitter Platform

21

Page 22: Twitter Meetup at the Hacker Dojo

TM

What is ? ‣ REST API

‣ provides the “basic” Twitter functionality - tweet, follow, etc.

‣ all functions available on your timeline on twitter.com

‣ Search API

‣ real-time search index

‣ get “top tweets” / relevant search results

‣ Streaming API

‣ HTTP long-poll connection

‣ tweets come out of the system in real-time

22

Page 23: Twitter Meetup at the Hacker Dojo

TM

The goals of ‣ To be ridiculously simple

‣ To be obvious

‣ To be self-describing

23

Page 24: Twitter Meetup at the Hacker Dojo

TM

Authenticating to ‣ OAuth 1.0a

‣ Signing “write” requests

‣ Give Twitter visibility into the stack

‣ Applications don’t have the user’s username / password

‣ User can change password at any time

‣ User is secure in knowing his/her password is not stored

‣ User can revoke permissions to app at any time

‣ User has one place to see which applications have access to their account

24

Page 25: Twitter Meetup at the Hacker Dojo

TM

twurl‣ http://github.com/marcel/twurl

‣ Command line tool to interact with using OAuth

‣ Transparently handles OAuth signing against

‣ POST and GET data

‣ Trace requests

25

Page 26: Twitter Meetup at the Hacker Dojo

TM

Limits‣ 175 API calls/hour using OAuth against api.twitter.com

‣ Unauthenticated it goes against the source IP address

‣ Authenticated it goes against the calling user

‣ “Natural” limits on

‣ number of tweets sent

‣ number of DMs sent

‣ number of followings / unfollowings

‣ Status limits

‣ No duplicate tweets

‣ No malware links in tweets

26

Page 27: Twitter Meetup at the Hacker Dojo

TM

@anywhere

27

Page 28: Twitter Meetup at the Hacker Dojo

TM

Core Features‣ Hovercards

‣ Tweet Box

‣ Follow Buttons

‣ Linkify

28

Page 29: Twitter Meetup at the Hacker Dojo

TM

Easiest Example<!DOCTYPE HTML><html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Anywhere Sample</title> <script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&amp;v=1"> </script> <script type="text/javascript"> twttr.anywhere(function(T) { T.hovercards(); T("#follow-placeholder").followButton('themattharris'); T("#tbox").tweetBox(); }); </script> </head> <body> <p>Some text with @twitter screen names in it.</p>

<div id="tweets"></div> <div id="tbox"></div> <span id="follow-placeholder"></span> </body></html>

29

Page 30: Twitter Meetup at the Hacker Dojo

TM

Easiest Example

30

Page 31: Twitter Meetup at the Hacker Dojo

TM

Easiest Example

<head> <script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&amp;v=1"> </script> <script type="text/javascript"> twttr.anywhere(function(T) { T.hovercards(); T("#follow-placeholder").followButton('themattharris'); T("#tbox").tweetBox(); }); </script> </head>

31

Page 32: Twitter Meetup at the Hacker Dojo

TM

Easiest Example

<head> <script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&amp;v=1"> </script> <script type="text/javascript"> twttr.anywhere(function(T) { T.hovercards(); T("#follow-placeholder").followButton('themattharris'); T("#tbox").tweetBox(); }); </script> </head>

32

Page 33: Twitter Meetup at the Hacker Dojo

TM

Easiest Example

<head> <script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&amp;v=1"> </script> <script type="text/javascript"> twttr.anywhere(function(T) { T.hovercards(); T("#follow-placeholder").followButton('themattharris'); T("#tbox").tweetBox(); }); </script> </head>

33

Page 34: Twitter Meetup at the Hacker Dojo

TM

Easiest Example

<head> <script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&amp;v=1"> </script> <script type="text/javascript"> twttr.anywhere(function(T) { T.hovercards(); T("#follow-placeholder").followButton('themattharris'); T("#tbox").tweetBox(); }); </script> </head>

34

Page 35: Twitter Meetup at the Hacker Dojo

TM

Complex Example twttr.anywhere(function (T) { var currentUser, screenName, profileImage, profileImageTag;

var onLogin = function() { currentUser = T.currentUser; screenName = currentUser.data('screen_name'); profileImage = currentUser.data('profile_image_url'); profileImageTag = "<img src='" + profileImage + "'/>";

document.getElementById('connect-placeholder').innerHTML = "Logged in as " + profileImageTag + " @" + screenName; document.getElementById('tbox').style.display = 'block'; document.getElementById('follow-placeholder').style.display = 'block'; document.getElementById('signout').style.display = 'block';

T("#follow-placeholder").followButton('themattharris'); T("#tbox").tweetBox({ label: "Careful! This is a real tweet box.", defaultContent: "tweet tweet ", height: 300, width: 700 }); },

35

Page 36: Twitter Meetup at the Hacker Dojo

TM

Complex Example cleanup = function() { document.getElementById('connect-placeholder').innerHTML = ''; document.getElementById('signout').style.display = 'none'; document.getElementById('tbox').style.display = 'none'; document.getElementById('follow-placeholder').style.display = 'none'; }, init = function() { if (T.isConnected()) { onLogin(); } else { T("#connect-placeholder").connectButton({ authComplete: function(user) { onLogin(); }, signOut: function() { cleanup(); init(); } }); } }; init(); T.hovercards({ expanded: true }); });

36

Page 37: Twitter Meetup at the Hacker Dojo

TM

Easiest Example

37

Page 38: Twitter Meetup at the Hacker Dojo

TM

More Info... Check outbit.ly/anywhere-begin

38

Page 39: Twitter Meetup at the Hacker Dojo

TM

OAuthpocalypseThe day is 30th June 16th August 2010

39

Page 40: Twitter Meetup at the Hacker Dojo

TM

What you need to know‣ All applications must be using OAuth for the REST API

‣ Streaming API will still support Basic Auth

‣ Search API has no auth

‣ OAuth key exchange for Open Source Applications

‣ Replace curl with twurl for debugging

http://dev.twitter.com/pages/auth_overview

http://github.com/marcel/twurl

40

Page 41: Twitter Meetup at the Hacker Dojo

TM

OAuth Methods‣ Web must use three legged OAuth

‣ Desktop and mobile apps can also use out-of-band OAuth

‣ Some desktop and mobile apps will be considered for xAuth

41

Page 42: Twitter Meetup at the Hacker Dojo

TM

xAuth not XAuth

xAuth is OAuth

http://dev.twitter.com/pages/xauth

42

Page 43: Twitter Meetup at the Hacker Dojo

TM

Check your host!

api.twitter.com

twitter.com

43

Page 44: Twitter Meetup at the Hacker Dojo

TM

Libraries

http://dev.twitter.com/pages/oauth_libraries

ActionScript/FlashC/C++C#/.NETClojureErlangJavaJavaScript

Objective-C/Cocoa & iPhone ProgrammingPerlPHPPythonQtRubyScala

44

Page 45: Twitter Meetup at the Hacker Dojo

TM

OAuth Echo

45

Page 46: Twitter Meetup at the Hacker Dojo

TM

‣ Delegation for Identity Verification

‣ Pass the header needed for an application to confirm your identify with Twitter

OAuth Echo

46

Page 47: Twitter Meetup at the Hacker Dojo

TM

Services offering it‣ yFrog

‣ TwitPic

‣ TwitVid

‣ TweetPhoto

‣ Mobypicture

‣ Twitgoo

‣ Posterous

‣ img.ly

‣ Vodpod

47

Page 48: Twitter Meetup at the Hacker Dojo

TM

Geo

48

Page 49: Twitter Meetup at the Hacker Dojo

TM

Endpoints‣ /1/geo/search

‣ /1/geo/similar_places

‣ /1/geo/reverse_geocode

‣ /1/geo/id/:id

‣ /1/geo/place

49

Page 50: Twitter Meetup at the Hacker Dojo

TM

/1/geo/search‣ Find places to use in status updates

‣ Search by lat, long, IP or free-form name. Also search by attribute.

‣ Limit to poi, neighborhood, city, admin or country

‣ Find only places within another if desired

‣ Set a callback

‣ Use authorisation to bias ordering to the users location history

http://api.twitter.com/1/geo/search.json

50

Page 51: Twitter Meetup at the Hacker Dojo

TM

http://api.twitter.com/1/geo/similar_places.json

/1/geo/similar_places‣ Find places to use in status updates

‣ Search by lat, long, free-form name. Also search by attribute.

‣ Find only places within another if desired

‣ Set a callback

‣ Search by attribute

51

Page 52: Twitter Meetup at the Hacker Dojo

TM

/1/geo/similar_places‣ Must make this call before creating a place

‣ Returns a creation token

http://api.twitter.com/1/geo/similar_places.json

52

Page 53: Twitter Meetup at the Hacker Dojo

TM

http://api.twitter.com/1/geo/reverse_geocode.json

/1/geo/reverse_geocode‣ Find 20 places around the provided lat, long

‣ Limit to poi, neighborhood, city, admin or country

‣ Set a callback

‣ /geo/search is better

53

Page 54: Twitter Meetup at the Hacker Dojo

TM

http://api.twitter.com/1/geo/id/:id

/1/geo/id/:id‣ Information on a place

‣ :id from /geo/search methods

54

Page 55: Twitter Meetup at the Hacker Dojo

TM

http://api.twitter.com/1/geo/place

/1/geo/place‣ create a place

‣ must have

‣ name

‣ contained_within - place_id of another place, e.g. city

‣ token

‣ lat, long

‣ Set a callback

55

Page 56: Twitter Meetup at the Hacker Dojo

TM

Create a place - the flow‣ /1/geo/search

‣ show what’s nearby

‣ /1/geo/similar_places

‣ not found in search, find by name

‣ /1/geo/place

‣ still not found, create a new place

http://api.twitter.com/1/geo/place

56

Page 57: Twitter Meetup at the Hacker Dojo

TM

Use in search‣ just pass place:place_id

http://search.twitter.com/search?q=place%3A247f43d441defc03

57

Page 58: Twitter Meetup at the Hacker Dojo

TM

Attributes { "name": "Twitter HQ", "polylines": [

], "country_code": "US", "country": "The United States of America", "attributes": { "street_address": "795 Folsom St", "1166:id": "49547", "623:id": "210176" }, "url": "http://api.twitter.com/1/geo/id/247f43d441defc03.json", "id": "247f43d441defc03",}

58

Page 59: Twitter Meetup at the Hacker Dojo

TM

Timelines

59

Page 60: Twitter Meetup at the Hacker Dojo

TM

Timeline Endpoints‣ /1/statuses/public_timeline

‣ /1/statuses/home_timeline

‣ /1/statuses/friends_timeline

‣ /1/statuses/status_timeline

‣ /1/statuses/mentions

‣ /1/statuses/retweeted_by_me

‣ /1/statuses/retweeted_to_me

‣ /1/statuses/retweets_of_me

60

Page 61: Twitter Meetup at the Hacker Dojo

TM

Modifiers‣ include_rts

Accepted values: true, 1, t

61

Page 62: Twitter Meetup at the Hacker Dojo

TM

Modifiers‣ include_rts

‣ include_entities

Accepted values: true, 1, t

62

Page 63: Twitter Meetup at the Hacker Dojo

TM

Modifiers‣ include_rts

‣ include_entities

‣ trim_user

Accepted values: true, 1, t

63

Page 64: Twitter Meetup at the Hacker Dojo

TM

What is a Tweet?The anatomy of a status update

64

Page 65: Twitter Meetup at the Hacker Dojo

TM

Dissecting a status object

{"id"=>12296272736,

"text"=>

"An early look at Annotations:

http://groups.google.com/group/twitter-api-announce/browse_thread/thread/fa5da2608865453",

"created_at"=>"Fri Apr 16 17:55:46 +0000 2010",

"in_reply_to_user_id"=>nil,

"in_reply_to_screen_name"=>nil,

"in_reply_to_status_id"=>nil

"favorited"=>false,

"truncated"=>false,

"user"=>

{"id"=>6253282,

"screen_name"=>"twitterapi",

"name"=>"Twitter API",

"description"=>

"The Real Twitter API. I tweet about API changes, service issues and

happily answer questions about Twitter and our API. Don't get an answer? It's on my website.",

"url"=>"http://apiwiki.twitter.com",

"location"=>"San Francisco, CA",

"profile_background_color"=>"c1dfee",

"profile_background_image_url"=>

"http://a3.twimg.com/profile_background_images/59931895/twitterapi-background-new.png",

"profile_background_tile"=>false,

"profile_image_url"=>"http://a3.twimg.com/profile_images/689684365/api_normal.png",

"profile_link_color"=>"0000ff",

"profile_sidebar_border_color"=>"87bc44",

"profile_sidebar_fill_color"=>"e0ff92",

"profile_text_color"=>"000000",

"created_at"=>"Wed May 23 06:01:13 +0000 2007",

"contributors_enabled"=>true,

"favourites_count"=>1,

"statuses_count"=>1628,

"friends_count"=>13,

"time_zone"=>"Pacific Time (US & Canada)",

"utc_offset"=>-28800,

"lang"=>"en",

"protected"=>false,

"followers_count"=>100581,

"geo_enabled"=>true,

"notifications"=>false,

"following"=>true,

"verified"=>true},

"contributors"=>[3191321],

"geo"=>nil,

"coordinates"=>nil,

"place"=>

{"id"=>"2b6ff8c22edd9576",

"url"=>"http://api.twitter.com/1/geo/id/2b6ff8c22edd9576.json",

"name"=>"SoMa",

"full_name"=>"SoMa, San Francisco",

"place_type"=>"neighborhood",

"country_code"=>"US",

"country"=>"The United States of America",

"bounding_box"=>

{"coordinates"=>

[[[-122.42284884, 37.76893497],

[-122.3964, 37.76893497],

[-122.3964, 37.78752897],

[-122.42284884, 37.78752897]]],

"type"=>"Polygon"}},

"source"=>"web"}

The tweet's unique ID. These

IDs are roughly sorted &

developers should treat them

as opaque (http://bit.ly/dCkppc).

Text of the tweet.

Consecutive duplicate tweets

are rejected. 140 character

max (http://bit.ly/4ud3he).

Tweet's

creation

date.

DE

PR

EC

AT

ED

The ID of an existing tweet that

this tweet is in reply to. Won't

be set unless the author of the

referenced tweet is mentioned.The screen name &

user ID of replied to

tweet author. Truncated to 140

characters. Only

possible from SMS.

The a

uth

or

of th

e tw

eet. T

his

em

bedded o

bje

ct can g

et out of sync.

The a

uth

or's

user

ID.

The author's

user name.

The author's

screen name.

The author's

biography.

The author's

URL.The author's "location". This is a free-form text field, and

there are no guarantees on whether it can be geocoded.

Rendering information

for the author. Colors

are encoded in hex

values (RGB).The creation date

for this account.Whether this account has

contributors enabled

(http://bit.ly/50npuu). Number of

favorites this

user has.

Num

ber

of tw

eets

this

user

has.

Number of

users this user

is following.The timezone and offset

(in seconds) for this user.

The user's selected

language.

Whether this user is protected

or not. If the user is protected,

then this tweet is not visible

except to "friends".

Number of

followers for

this user.

Wheth

er

this

user

has g

eo

enable

d (

http://b

it.ly/4

pF

Y77).

DEPRECATED

in this context

Whether this user

has a verified badge.

The g

eo tag o

n this

tw

eet in

GeoJS

ON

(http://b

it.ly/b

8L1C

p).

The contributors' (if any) user

IDs (http://bit.ly/50npuu).

DEPRECATED

The place associated with this

Tweet (http://bit.ly/b8L1Cp).

The place ID

The URL to fetch a detailed

polygon for this placeThe printable names of this place

The type of this

place - can be a

"neighborhood"

or "city"

The country this place is in

The bounding

box for this

place

The application

that sent this

tweetMap of a Twitter Status Object

Raffi Krikorian <[email protected]>18 April 2010

65

Page 66: Twitter Meetup at the Hacker Dojo

TM

{"id"=>12296272736,

"text"=>

"An early look at Annotations:

http://groups.google.com/group/twitter-api-announce/browse_thread/thread/fa5da2608865453",

"created_at"=>"Fri Apr 16 17:55:46 +0000 2010",

"in_reply_to_user_id"=>nil,

"in_reply_to_screen_name"=>nil,

"in_reply_to_status_id"=>nil

"favorited"=>false,

"truncated"=>false,

"user"=>

{"id"=>6253282,

"screen_name"=>"twitterapi",

"name"=>"Twitter API",

"description"=>

"The Real Twitter API. I tweet about API changes, service issues and

happily answer questions about Twitter and our API. Don't get an answer? It's on my website.",

"url"=>"http://apiwiki.twitter.com",

"location"=>"San Francisco, CA",

"profile_background_color"=>"c1dfee",

"profile_background_image_url"=>

"http://a3.twimg.com/profile_background_images/59931895/twitterapi-background-new.png",

"profile_background_tile"=>false,

"profile_image_url"=>"http://a3.twimg.com/profile_images/689684365/api_normal.png",

"profile_link_color"=>"0000ff",

"profile_sidebar_border_color"=>"87bc44",

"profile_sidebar_fill_color"=>"e0ff92",

"profile_text_color"=>"000000",

"created_at"=>"Wed May 23 06:01:13 +0000 2007",

"contributors_enabled"=>true,

"favourites_count"=>1,

"statuses_count"=>1628,

"friends_count"=>13,

"time_zone"=>"Pacific Time (US & Canada)",

"utc_offset"=>-28800,

"lang"=>"en",

"protected"=>false,

"followers_count"=>100581,

"geo_enabled"=>true,

"notifications"=>false,

"following"=>true,

"verified"=>true},

"contributors"=>[3191321],

"geo"=>nil,

"coordinates"=>nil,

"place"=>

{"id"=>"2b6ff8c22edd9576",

"url"=>"http://api.twitter.com/1/geo/id/2b6ff8c22edd9576.json",

"name"=>"SoMa",

"full_name"=>"SoMa, San Francisco",

"place_type"=>"neighborhood",

"country_code"=>"US",

"country"=>"The United States of America",

"bounding_box"=>

{"coordinates"=>

[[[-122.42284884, 37.76893497],

[-122.3964, 37.76893497],

[-122.3964, 37.78752897],

[-122.42284884, 37.78752897]]],

"type"=>"Polygon"}},

"source"=>"web"}

The tweet's unique ID. These

IDs are roughly sorted &

developers should treat them

as opaque (http://bit.ly/dCkppc).

Text of the tweet.

Consecutive duplicate tweets

are rejected. 140 character

max (http://bit.ly/4ud3he).

Tweet's

creation

date.

DE

PR

EC

AT

ED

The ID of an existing tweet that

this tweet is in reply to. Won't

be set unless the author of the

referenced tweet is mentioned.The screen name &

user ID of replied to

tweet author. Truncated to 140

characters. Only

possible from SMS.

The a

uth

or

of th

e tw

eet. T

his

em

bedded o

bje

ct can g

et out of sync.

The a

uth

or's

user

ID.

The author's

user name.

The author's

screen name.

The author's

biography.

The author's

URL.The author's "location". This is a free-form text field, and

there are no guarantees on whether it can be geocoded.

Rendering information

for the author. Colors

are encoded in hex

values (RGB).The creation date

for this account.Whether this account has

contributors enabled

(http://bit.ly/50npuu). Number of

favorites this

user has.

Num

ber

of tw

eets

this

user

has.

Number of

users this user

is following.The timezone and offset

(in seconds) for this user.

The user's selected

language.

Whether this user is protected

or not. If the user is protected,

then this tweet is not visible

except to "friends".

Number of

followers for

this user.

Wheth

er

this

user

has g

eo

enable

d (

http://b

it.ly/4

pF

Y77).

DEPRECATED

in this context

Whether this user

has a verified badge.

The g

eo tag o

n this

tw

eet in

GeoJS

ON

(http://b

it.ly/b

8L1C

p).

The contributors' (if any) user

IDs (http://bit.ly/50npuu).

DEPRECATED

The place associated with this

Tweet (http://bit.ly/b8L1Cp).

The place ID

The URL to fetch a detailed

polygon for this placeThe printable names of this place

The type of this

place - can be a

"neighborhood"

or "city"

The country this place is in

The bounding

box for this

place

The application

that sent this

tweetMap of a Twitter Status Object

Raffi Krikorian <[email protected]>18 April 2010

Dissecting a status object

66

Page 67: Twitter Meetup at the Hacker Dojo

TM

{"id"=>12296272736,

"text"=>

"An early look at Annotations:

http://groups.google.com/group/twitter-api-announce/browse_thread/thread/fa5da2608865453",

"created_at"=>"Fri Apr 16 17:55:46 +0000 2010",

"in_reply_to_user_id"=>nil,

"in_reply_to_screen_name"=>nil,

"in_reply_to_status_id"=>nil

"favorited"=>false,

"truncated"=>false,

"user"=>

{"id"=>6253282,

"screen_name"=>"twitterapi",

"name"=>"Twitter API",

"description"=>

"The Real Twitter API. I tweet about API changes, service issues and

happily answer questions about Twitter and our API. Don't get an answer? It's on my website.",

"url"=>"http://apiwiki.twitter.com",

"location"=>"San Francisco, CA",

"profile_background_color"=>"c1dfee",

"profile_background_image_url"=>

"http://a3.twimg.com/profile_background_images/59931895/twitterapi-background-new.png",

"profile_background_tile"=>false,

"profile_image_url"=>"http://a3.twimg.com/profile_images/689684365/api_normal.png",

"profile_link_color"=>"0000ff",

"profile_sidebar_border_color"=>"87bc44",

"profile_sidebar_fill_color"=>"e0ff92",

"profile_text_color"=>"000000",

"created_at"=>"Wed May 23 06:01:13 +0000 2007",

"contributors_enabled"=>true,

"favourites_count"=>1,

"statuses_count"=>1628,

"friends_count"=>13,

"time_zone"=>"Pacific Time (US & Canada)",

"utc_offset"=>-28800,

"lang"=>"en",

"protected"=>false,

"followers_count"=>100581,

"geo_enabled"=>true,

"notifications"=>false,

"following"=>true,

"verified"=>true},

"contributors"=>[3191321],

"geo"=>nil,

"coordinates"=>nil,

"place"=>

{"id"=>"2b6ff8c22edd9576",

"url"=>"http://api.twitter.com/1/geo/id/2b6ff8c22edd9576.json",

"name"=>"SoMa",

"full_name"=>"SoMa, San Francisco",

"place_type"=>"neighborhood",

"country_code"=>"US",

"country"=>"The United States of America",

"bounding_box"=>

{"coordinates"=>

[[[-122.42284884, 37.76893497],

[-122.3964, 37.76893497],

[-122.3964, 37.78752897],

[-122.42284884, 37.78752897]]],

"type"=>"Polygon"}},

"source"=>"web"}

The tweet's unique ID. These

IDs are roughly sorted &

developers should treat them

as opaque (http://bit.ly/dCkppc).

Text of the tweet.

Consecutive duplicate tweets

are rejected. 140 character

max (http://bit.ly/4ud3he).

Tweet's

creation

date.

DE

PR

EC

AT

ED

The ID of an existing tweet that

this tweet is in reply to. Won't

be set unless the author of the

referenced tweet is mentioned.The screen name &

user ID of replied to

tweet author. Truncated to 140

characters. Only

possible from SMS.

Th

e a

uth

or

of

the

tw

ee

t. T

his

em

be

dd

ed

ob

ject

ca

n g

et

ou

t o

f syn

c.

Th

e a

uth

or's

use

r ID

.

The author's

user name.

The author's

screen name.

The author's

biography.

The author's

URL.The author's "location". This is a free-form text field, and

there are no guarantees on whether it can be geocoded.

Rendering information

for the author. Colors

are encoded in hex

values (RGB).The creation date

for this account.Whether this account has

contributors enabled

(http://bit.ly/50npuu). Number of

favorites this

user has.

Nu

mb

er

of

twe

ets

this

use

r h

as.

Number of

users this user

is following.The timezone and offset

(in seconds) for this user.

The user's selected

language.

Whether this user is protected

or not. If the user is protected,

then this tweet is not visible

except to "friends".

Number of

followers for

this user.

Wh

eth

er

this

use

r h

as g

eo

en

ab

led

(h

ttp

://b

it.ly/4

pF

Y7

7).

DEPRECATED

in this context

Whether this user

has a verified badge.

Th

e g

eo

ta

g o

n t

his

tw

ee

t in

Ge

oJS

ON

(h

ttp

://b

it.ly/b

8L

1C

p).

The contributors' (if any) user

IDs (http://bit.ly/50npuu).

DEPRECATED

The place associated with this

Tweet (http://bit.ly/b8L1Cp).

The place ID

The URL to fetch a detailed

polygon for this placeThe printable names of this place

The type of this

place - can be a

"neighborhood"

or "city"

The country this place is in

The bounding

box for this

place

The application

that sent this

tweetMap of a Twitter Status Object

Raffi Krikorian <[email protected]>18 April 2010

67

Page 68: Twitter Meetup at the Hacker Dojo

TM

Context is everything

68

Page 69: Twitter Meetup at the Hacker Dojo

TM

#hashtagsThose things you add to a Tweet for grouping

69

Page 70: Twitter Meetup at the Hacker Dojo

TM

@mentionsTalk about or to another user

70

Page 71: Twitter Meetup at the Hacker Dojo

TM

51.495466,-0.146341Locates a Tweet

71

Page 72: Twitter Meetup at the Hacker Dojo

TM

via My Appwhat created the Tweet

72

Page 73: Twitter Meetup at the Hacker Dojo

TM

dev.twitter.comThe developer portal

73

Page 74: Twitter Meetup at the Hacker Dojo

TM

Creating an appYour own small playground

74

Page 75: Twitter Meetup at the Hacker Dojo

TM

75

Page 76: Twitter Meetup at the Hacker Dojo

TM

76

Page 77: Twitter Meetup at the Hacker Dojo

TM

77

Page 78: Twitter Meetup at the Hacker Dojo

TM

Browsing docsRemembering how to read

78

Page 79: Twitter Meetup at the Hacker Dojo

TM

79

Page 80: Twitter Meetup at the Hacker Dojo

TM

80

Page 81: Twitter Meetup at the Hacker Dojo

TM

81

Page 82: Twitter Meetup at the Hacker Dojo

TM

Streaming APINear-Realtime Access to Public Statuses

82

Page 83: Twitter Meetup at the Hacker Dojo

TM

Streaming API‣ A persistent connection to Twitter servers

‣ Get pushed a tweet that matches your predicate in “real-time”

‣ Server to server integrations

83

Page 84: Twitter Meetup at the Hacker Dojo

TM

Basic Usage‣ Curl with Basic Auth or Twurl with OAuth

‣ One connection per username permitted

http://stream.twitter.com/1/statuses/sample.json

84

Page 85: Twitter Meetup at the Hacker Dojo

TM

Follow some users‣ Curl with Basic Auth or Twurl with OAuth

‣ One connection per username permitted

‣ Pass up to 400 user_ids, comma seperated

http://stream.twitter.com/1/statuses/filter.json

85

Page 86: Twitter Meetup at the Hacker Dojo

TM

Filter by keyword‣ Curl with Basic Auth or Twurl with OAuth

‣ One connection per username permitted

‣ Pass up to 200 keywords, comma seperated

‣ Example: Twitter will return statuses which contain: TWITTER, twitter, "Twitter", twitter., #twitter and @twitter

http://stream.twitter.com/1/statuses/filter.json

86

Page 87: Twitter Meetup at the Hacker Dojo

TM

Streaming API - Access Levels‣ Default

87

Page 88: Twitter Meetup at the Hacker Dojo

TM

Streaming API - Default Level‣ 200 x Keywords

‣ 400 x Follow userids

‣ 10 x 1-degree location boxes

88

Page 89: Twitter Meetup at the Hacker Dojo

TM

Streaming API - Access Levels‣ Default

‣ Shadow - many followings

‣ Birddog - many more followings

‣ Restricted Track - many keywords

‣ Partner Track - many more keywords

‣ locRestricted - many locations

89

Page 90: Twitter Meetup at the Hacker Dojo

TM

Streaming API - Access Levels‣ Default

‣ Shadow - many followings

‣ Birddog - many more followings

‣ Restricted Track - many keywords

‣ Partner Track - many more keywords

‣ locRestricted - many locations

‣ Firehose - all public statuses

90

Page 91: Twitter Meetup at the Hacker Dojo

TM

Streaming API - Firehose

91

Page 92: Twitter Meetup at the Hacker Dojo

TM

More Info... Check outbit.ly/streaming_api

92

Page 93: Twitter Meetup at the Hacker Dojo

TM

UserstreamsReal-time updates of all data needed to update a desktop application display

93

Page 94: Twitter Meetup at the Hacker Dojo

TM

UserstreamsReal-time updates of all data needed to update a desktop application display

BETA

94

Page 95: Twitter Meetup at the Hacker Dojo

TM

Keyfacts‣ Rate limits practically eliminated

‣ Hit the API for backfill of data

‣ Transition to userstream for real-time updates

‣ Social events streamed too

BETA

95

Page 96: Twitter Meetup at the Hacker Dojo

TM

More Info... Check outbit.ly/userstreams-betabit.ly/userstreams-overview

BETA

96

Page 97: Twitter Meetup at the Hacker Dojo

TM

Stay Informed... Joinbit.ly/twitter-anywhere-talkbit.ly/twitter-dev-talk

Important [email protected]/twitter-api-announce

97

Page 98: Twitter Meetup at the Hacker Dojo

TM

Help... Check outdev.twitter.com

98

Page 99: Twitter Meetup at the Hacker Dojo

TM

Join the Flock! Find out morejobs.twitter.com

99

Page 100: Twitter Meetup at the Hacker Dojo

TM

Questions? Follow us attwitter.com/twitterapitwitter.com/themattharristwitter.com/raffi

100

Page 101: Twitter Meetup at the Hacker Dojo

TM

101