Diving and digital data For example: Fotografie Name all the - - PowerPoint PPT Presentation

diving and digital data for example fotografie name all
SMART_READER_LITE
LIVE PREVIEW

Diving and digital data For example: Fotografie Name all the - - PowerPoint PPT Presentation

Diving and digital data For example: Fotografie Name all the Fish.... Talk about accomadations.... and the dangers for you and your data... Clouds Google Data APIs Frank Mantek The benefit [of GData] is that you'd have a single API that


slide-1
SLIDE 1
slide-2
SLIDE 2

Diving and digital data

slide-3
SLIDE 3

For example: Fotografie

slide-4
SLIDE 4

Name all the Fish....

slide-5
SLIDE 5

Talk about accomadations....

slide-6
SLIDE 6

and the dangers for you and your data...

slide-7
SLIDE 7

Clouds

slide-8
SLIDE 8

Google Data APIs

Frank Mantek

slide-9
SLIDE 9

“The benefit [of GData] is that you'd have a single API that could be used to query, update, and index structured data on the web--anywhere on the web. It's a pretty powerful vision and something I didn't expect to see for a couple more years.”

Jeremy Zawodny, Yahoo

slide-10
SLIDE 10

Contrast this with the API efforts on Yahoo! Developer Network or Windows Live Dev which are an inconsistent glop of incompatible RESTful protocols, SOAP APIs and XML-RPC methods all under the same roof. In the Google case, an app that can read and write data to Blogger can also do so to Google Calendar or Picasa Web Albums with minimal changes. This is not the case when using APIs provided by two Yahoo! services (e.g . Flickr and del.icio.us) or two Windows Live services (e.g. Live Search and Windows Live Spaces) which use completely different protocols, object models and authentication mechanisms even though provided by the same vendor."

Dare Obasanjo, Architect, Microsoft

slide-11
SLIDE 11

QCon 2008

11

Google’s APIs

  • Google Offers Many APIs

– AJAX APIs – Presentation Oriented APIs

  • Maps, Search, Feeds

– Google Data APIs – Full Fidelity Data APIs

  • Calendar, Blogger, Base, ...

– AdWords API – SOAP based RPC API – Gadgets API – Portable JavaScript “Applets” – Checkout API – ReST based API – Desktop API – Extended Search – ... and many more ...

slide-12
SLIDE 12

QCon 2008

Building Web Services the REST way

slide-13
SLIDE 13

QCon 2008

Building Web Services the REST way

  • SOAP:

– Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL)

slide-14
SLIDE 14

QCon 2008

Building Web Services the REST way

  • SOAP:

– Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL)

  • REST:

– Common actions (HTTP Get, Post, Put, Delete) – Operate on whole resources (XML documents) – Uniform resource names and links (URIs)

slide-15
SLIDE 15

QCon 2008

Building Web Services the REST way

  • SOAP:

– Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL)

  • REST:

– Common actions (HTTP Get, Post, Put, Delete) – Operate on whole resources (XML documents) – Uniform resource names and links (URIs)

  • Why REST over SOAP?

– It’s how the web works! (stateless, cachable, scalable) – It’s easy on the programmer

slide-16
SLIDE 16

QCon 2008

13

  • Simple Format

– Atom Syndication

Format

  • Simple Protocol

– HTTP

  • Google Extensions

– Data Model – Query – Concurrency – Authentication

Elements of the Data API

Google Data APIs Atom Publishing Protocol

slide-17
SLIDE 17

QCon 2008

14

Data Model: Standard Atom

<entry xmlns:gd="http://schemas.google.com/g/2005"> <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/> <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id> <published>2005-01-18T21:00:00Z</published> <updated>2006-01-01T00:00:00Z</updated> <title>Discuss BazMat API</title> <content>We will discuss integrating GData with BazMat.</content> <author> <name>Jo March</name> </author> <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'> <gd:reminder minutes='15'/> </gd:when> <gd:where valueString='Building 41, Room X'/> <gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/> <gd:visibility value="http://schemas.google.com/g/2005#event.public"/> </entry>

slide-18
SLIDE 18

QCon 2008

15

Data Model: Google Kinds and Extensions

<entry xmlns:gd="http://schemas.google.com/g/2005"> <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/> <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id> <published>2005-01-18T21:00:00Z</published> <updated>2006-01-01T00:00:00Z</updated> <title>Discuss BazMat API</title> <content>We will discuss integrating GData with BazMat.</content> <author> <name>Jo March</name> </author> <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'> <gd:reminder minutes='15'/> </gd:when> <gd:where valueString='Building 41, Room X'/> <gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/> <gd:visibility value="http://schemas.google.com/g/2005#event.public"/> </entry>

slide-19
SLIDE 19

QCon 2008

Querying a Feed

  • Full Text Search

– http://www.example.com/feeds/friends?q=John

  • Categories (Tags)

– http://www.example.com/feeds/friends/-/work|play

  • Update Time

– http://www.example.com/feeds/friends?

updated-min=2005-08-09T10:57:00-08:00

  • Custom ...

– eg. spreadsheets supports min-row, max-row, ...

  • Output Format

– http://www.example.com/feeds/friends?alt=json

slide-20
SLIDE 20

QCon 2008

17

Optimistic Concurrency

GET /feeds/entry1 200 OK <link rel="edit" href="http://www.example.com/feeds/entry1/version1/"/> PUT /feeds/entry1/version1/ 200 OK <link rel="edit" href="http://www.example.com/feeds/entry1/version2/"/> DELETE /feeds/entry1/version1/ 409 CONFLICT

slide-21
SLIDE 21

QCon 2008

18

Security and Authentication

  • Authentication for Desktop Apps

– Users authenticates to Google Authentication Service – Google returns Auth Token to Application

  • Authentication for Web Apps

– Web Application redirects to Google Auth Service (1) – Login to Google, redirect back to app with Auth Token (2) – Web Application uses Token to proxy GData (3) – Password remains secure

Accounts Authentication Web App

Client Browser

Calendar data API (1a) (2a) (2b) (3) (1b)

slide-22
SLIDE 22

QCon 2008

19

Atom Publishing Everywhere?

  • Google Apps data API
  • Google Base data API
  • Blogger data API
  • Google Calendar data API
  • Google Code Search data API
  • Google Notebook data API
  • Picasa Web Albums data API
  • Google Spreadsheets data API
  • Google Doclist data API
  • YouTube data API
  • ... and the list is growing ...
slide-23
SLIDE 23

QCon 2008

Developer Support

  • Open Source Client Libraries

– Java – PHP – Objective C

  • Contributed Client Libraries

– Ruby

  • Documentation

– Developer Guides – Knowledge Base

  • Active Developer Community (Google Groups)

– Google Data API Group, ... – Google Groups Wiki ... – .NET – Python – JSON (JavaScript) – Perl – Lisp

slide-24
SLIDE 24

QCon 2008

21

Google Apps data API

  • Functionality

– Programmatically enable access to these Google Apps

applications

– Create, retrieve, update and delete user accounts,

nicknames and email lists.

  • Supported Client Libraries

– Basic HTTP – Java – .NET

slide-25
SLIDE 25

QCon 2008

22

Google Base data API

  • Functionality

– Query Google Base data to create applications and

mashups.

– Input and manage Google Base items programmatically.

  • Supported Client Libraries

– Basic HTTP – Java – .NET – PHP – Python

slide-26
SLIDE 26

QCon 2008

23

Blogger

  • Functionality

– Create new blog posts, edit or delete existing posts, and

query for posts that match particular criteria.

  • Supported Client Libraries

– Basic HTTP – Java – .NET – PHP – Python – Objective C

slide-27
SLIDE 27

QCon 2008

24

Google Calendar

  • Functionality

– Create new events, edit or delete existing events, and query

for events that match particular criteria.

  • Supported Client Libraries

– Basic HTTP – Java – .NET – PHP – Python – Objective C

slide-28
SLIDE 28

QCon 2008

25

Google Code Search

  • Functionality

– Read Only - Query for public code snippets that match

particular criteria.

  • Supported Client Libraries

– Basic HTTP – Java – .NET – PHP – Python – Objective C

slide-29
SLIDE 29

QCon 2008

26

Picasa Web Albums

  • Functionality

– Request a list of a user's albums, photos, comments, or

tags, edit or delete content in an existing entry, and query the content in an existing entry

  • Supported Client Libraries

– Basic HTTP – Java – .NET support soon

slide-30
SLIDE 30

QCon 2008

27

Google Spreadsheets

  • Functionality

– Request a list of a user's spreadsheets, edit or delete

content in an existing Spreadsheets worksheet, and query the content in an existing Spreadsheets worksheet

  • Supported Client Libraries

– Basic HTTP – Java – .NET – Python

slide-31
SLIDE 31

QCon 2008

What Some Developers are Doing

Ambient Clock (Calendar) Timesheets with Google Office Tools (Spreadsheets, Calendar) Phixr Online Photo Editor (PicasaWeb)

slide-32
SLIDE 32

QCon 2008

Spanning Sync (www.spanningsync.com)

  • two way synchronization between iCal and Google

Calendar

  • Client/Server architecture, all GData operations happen on

the server

  • Straight HTTP calls using PHP
  • around 6M GData API calls per day

29

slide-33
SLIDE 33

QCon 2008

Gumiyo (www.gumiyo.com)

  • Buyer/Seller platform using Google Base data api
  • Allows creation of ads completely on your mobile device

(take picture, send MMS to your account)

  • Searching/buying on the phone
  • Rule based alert system that sends real time

notifications to your phone

30

slide-34
SLIDE 34

QCon 2008

Bloghud (www.bloghud.com)

  • This is a Second Life “Heads Up” device (900 Linden for

the Pro Version)

  • It allows you to post to your blog from inside the virtual

world, using Google Authentication for Web Apps

  • /9 “your message” posts or drag text based notecards on

the Hud

31

slide-35
SLIDE 35

QCon 2008

Choosing REST over SOAP

  • Technologies of REST are well understood
  • HTTP, URIs, XML, Atom
  • Four actions are sufficient
  • most of the time (90% solution)
  • Developers like it
  • Every API behaves the same
  • REST was a good choice
slide-36
SLIDE 36

QCon 2008

Is REST as flexible as SOAP?

  • Some Operations are not obvious

– eg. transactions – eg. send notification with reply

  • Be creative
  • notifications as side effects of update
  • drop box feeds (insert only)
  • virtually infinite feeds (get & update only)
  • REST is sufficient, but you may have to be creative
slide-37
SLIDE 37

QCon 2008

34

Using the Atom Publishing Protocol ...

slide-38
SLIDE 38

QCon 2008

34

Using the Atom Publishing Protocol ...

  • Good REST based design
slide-39
SLIDE 39

QCon 2008

34

Using the Atom Publishing Protocol ...

  • Good REST based design
  • Missing Query:

– Solution: query parameters – Not always sufficient ... an open issue

slide-40
SLIDE 40

QCon 2008

34

Using the Atom Publishing Protocol ...

  • Good REST based design
  • Missing Query:

– Solution: query parameters – Not always sufficient ... an open issue

  • Missing Authentication:

– Solution: Google Auth – More secure than Basic Auth, slowed integration

slide-41
SLIDE 41

QCon 2008

34

Using the Atom Publishing Protocol ...

  • Good REST based design
  • Missing Query:

– Solution: query parameters – Not always sufficient ... an open issue

  • Missing Authentication:

– Solution: Google Auth – More secure than Basic Auth, slowed integration

  • Concurrent Operations

– Solution: Optimistic Concurrency via Edit URIs – We should have used strong eTags

slide-42
SLIDE 42

QCon 2008

35

Extending the Atom Publishing Protocol ...

  • Engineers care about efficiency
  • Forced Read-Modify-Write

– Solution: URIs based on the data (ACL)

  • Batch Processing

– Solution: GData batch extension

  • Incremental Changes / Updates

– an open issue ...

slide-43
SLIDE 43

QCon 2008

36

Using Atom Data Format ...

slide-44
SLIDE 44

QCon 2008

36

Using Atom Data Format ...

  • Originally designed for blogs not data
slide-45
SLIDE 45

QCon 2008

36

Using Atom Data Format ...

  • Originally designed for blogs not data
  • Drawbacks

– syntax constraints (atom:content, atom:updated)

slide-46
SLIDE 46

QCon 2008

36

Using Atom Data Format ...

  • Originally designed for blogs not data
  • Drawbacks

– syntax constraints (atom:content, atom:updated)

  • Benefits

– standardized (IETF) – extensible – useful fields (atom:id, atom:updated) – can use a feed reader (cool!)

slide-47
SLIDE 47

QCon 2008

36

Using Atom Data Format ...

  • Originally designed for blogs not data
  • Drawbacks

– syntax constraints (atom:content, atom:updated)

  • Benefits

– standardized (IETF) – extensible – useful fields (atom:id, atom:updated) – can use a feed reader (cool!)

  • Overall, a very good choice
slide-48
SLIDE 48

QCon 2008

37

Modeling Data in Atom ...

slide-49
SLIDE 49

QCon 2008

37

Modeling Data in Atom ...

  • How to indicate extensions / semantics?

– Solution: atom:category URI to indicate “kind” – Should have been human readable string

slide-50
SLIDE 50

QCon 2008

37

Modeling Data in Atom ...

  • How to indicate extensions / semantics?

– Solution: atom:category URI to indicate “kind” – Should have been human readable string

  • How to indicate related feeds and entries?

– Solutions: ...

  • link@rel, gd:feedLink, gd:entryLink, content@href

– No clear standard, try to be consistent

slide-51
SLIDE 51

QCon 2008

38

Designing New Data Formats ...

slide-52
SLIDE 52

QCon 2008

38

Designing New Data Formats ...

  • The Idea: GD-namespace

– Create reusable extensions and kinds – Manage extensions in one namespace

slide-53
SLIDE 53

QCon 2008

38

Designing New Data Formats ...

  • The Idea: GD-namespace

– Create reusable extensions and kinds – Manage extensions in one namespace

slide-54
SLIDE 54

QCon 2008

38

Designing New Data Formats ...

  • The Idea: GD-namespace

– Create reusable extensions and kinds – Manage extensions in one namespace

  • Our Experience:

– Almost every Google API has extended it – Used only by Google APIs (so far)

slide-55
SLIDE 55

QCon 2008

38

Designing New Data Formats ...

  • The Idea: GD-namespace

– Create reusable extensions and kinds – Manage extensions in one namespace

  • Our Experience:

– Almost every Google API has extended it – Used only by Google APIs (so far)

  • Alternatives:

– Reuse existing XML schemas (GeoRSS, MediaRSS) – Create an ecology of ‘kinds’ (GData ACL)

slide-56
SLIDE 56

QCon 2008

Care for your Developers

  • Protocol Centric & Language Agnostic
  • Open your Code
  • Give Fair Warnings of Changes
  • Meet your Developers
slide-57
SLIDE 57

QCon 2008

Do you feel lucky?

  • Questions, comments?

40

slide-58
SLIDE 58