![Page 1: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/1.jpg)
![Page 2: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/2.jpg)
Diving and digital data
![Page 3: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/3.jpg)
For example: Fotografie
![Page 4: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/4.jpg)
Name all the Fish....
![Page 5: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/5.jpg)
Talk about accomadations....
![Page 6: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/6.jpg)
and the dangers for you and your data...
![Page 7: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/7.jpg)
Clouds
![Page 8: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/8.jpg)
Google Data APIsFrank Mantek
![Page 9: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/9.jpg)
“The benefit [of GData] is that you'd have a singleAPI 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 moreyears.”
Jeremy Zawodny, Yahoo
![Page 10: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/10.jpg)
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
![Page 11: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/11.jpg)
QCon 200811
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 ...
![Page 12: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/12.jpg)
QCon 2008
Building Web Services the REST way
![Page 13: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/13.jpg)
QCon 2008
Building Web Services the REST way
• SOAP: – Arbitrary actions (verbs)– Arbitrarily data payloads– Complex service description and behavior (WSDL)
![Page 14: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/14.jpg)
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)
![Page 15: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/15.jpg)
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
![Page 16: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/16.jpg)
QCon 200813
• Simple Format– Atom Syndication
Format
• Simple Protocol– HTTP
• Google Extensions– Data Model– Query– Concurrency – Authentication
Elements of the Data API
Data APIs
AtomPublishingProtocol
![Page 17: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/17.jpg)
QCon 200814
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>
![Page 18: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/18.jpg)
QCon 200815
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>
![Page 19: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/19.jpg)
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
![Page 20: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/20.jpg)
QCon 200817
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
![Page 21: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/21.jpg)
QCon 200818
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)
![Page 22: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/22.jpg)
QCon 200819
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 ...
![Page 23: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/23.jpg)
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
![Page 24: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/24.jpg)
QCon 200821
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
![Page 25: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/25.jpg)
QCon 200822
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
![Page 26: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/26.jpg)
QCon 200823
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
![Page 27: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/27.jpg)
QCon 200824
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
![Page 28: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/28.jpg)
QCon 200825
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
![Page 29: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/29.jpg)
QCon 200826
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
![Page 30: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/30.jpg)
QCon 200827
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
![Page 31: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/31.jpg)
QCon 2008
What Some Developers are Doing
Ambient Clock(Calendar)
Timesheets withGoogle Office Tools
(Spreadsheets,Calendar)
Phixr OnlinePhoto Editor(PicasaWeb)
![Page 32: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/32.jpg)
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
![Page 33: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/33.jpg)
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
![Page 34: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/34.jpg)
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
![Page 35: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/35.jpg)
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
![Page 36: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/36.jpg)
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
![Page 37: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/37.jpg)
QCon 200834
Using the Atom Publishing Protocol ...
![Page 38: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/38.jpg)
QCon 200834
Using the Atom Publishing Protocol ...
• Good REST based design
![Page 39: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/39.jpg)
QCon 200834
Using the Atom Publishing Protocol ...
• Good REST based design• Missing Query:
– Solution: query parameters – Not always sufficient ... an open issue
![Page 40: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/40.jpg)
QCon 200834
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
![Page 41: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/41.jpg)
QCon 200834
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
![Page 42: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/42.jpg)
QCon 200835
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 ...
![Page 43: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/43.jpg)
QCon 200836
Using Atom Data Format ...
![Page 44: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/44.jpg)
QCon 200836
Using Atom Data Format ...
• Originally designed for blogs not data
![Page 45: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/45.jpg)
QCon 200836
Using Atom Data Format ...
• Originally designed for blogs not data
• Drawbacks– syntax constraints (atom:content, atom:updated)
![Page 46: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/46.jpg)
QCon 200836
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!)
![Page 47: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/47.jpg)
QCon 200836
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
![Page 48: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/48.jpg)
QCon 200837
Modeling Data in Atom ...
![Page 49: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/49.jpg)
QCon 200837
Modeling Data in Atom ...
• How to indicate extensions / semantics?– Solution: atom:category URI to indicate “kind”– Should have been human readable string
![Page 50: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/50.jpg)
QCon 200837
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
![Page 51: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/51.jpg)
QCon 200838
Designing New Data Formats ...
![Page 52: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/52.jpg)
QCon 200838
Designing New Data Formats ...
• The Idea: GD-namespace– Create reusable extensions and kinds– Manage extensions in one namespace
![Page 53: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/53.jpg)
QCon 200838
Designing New Data Formats ...
• The Idea: GD-namespace– Create reusable extensions and kinds– Manage extensions in one namespace
![Page 54: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/54.jpg)
QCon 200838
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)
![Page 55: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/55.jpg)
QCon 200838
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)
![Page 56: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/56.jpg)
QCon 2008
Care for your Developers
• Protocol Centric & Language Agnostic
• Open your Code
• Give Fair Warnings of Changes
• Meet your Developers
![Page 57: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/57.jpg)
QCon 2008
Do you feel lucky?
• Questions, comments?
40
![Page 58: Google G Data Reading And Writing Data On The Web 1](https://reader033.vdocuments.site/reader033/viewer/2022060109/5555be9dd8b42afe5d8b51a8/html5/thumbnails/58.jpg)