Blog News about what we are doing

Fernando Dobladez

Google Dev Day Buenos Aires 2011

Written by José Rozanec

Code54 took part Google Dev Day 2011 at Buenos Aires. It was a great opportunity for us to meet with fellow developers and get a better understanding of the new technologies introduced by Google.

Facilities and organization were as good as last year’s edition.

We took some notes during the course of the conference and we would like to share them with you.

OAuth and OpenID for identification and access to web applications data

Speaker: Steve Bazyl / @stevenbazyl

This was a brief introduction to OAuth and OpenID that provided insight to the flows considered by the protocols and some services provided by Google to implement them.

  • OAuth is a protocol for authorization and delegation. It defines flows for different environments. Relies on short lived refreshable bearer tokens, avoids complex cryptography and leverages SSL/HTTPS
  • The main advantages of implementing OAuth and OpenID are
    • for the user: does not need to remember countless passwords, discourages password reuse, eliminates the need to share passwords between apps to share data, the sign-in process is simplified, authenticates with well-known services used by the user (mail or social)
    • for the developers: there is little code required to implement this, does not need to deal with the complexity of safely storing passwords, the authentication flows are standarized, can access some user data and be sure the users are real ones.
  • Tokens: access token (short lived credential for access), authorization code (intermediate token) and refresh token (long lived)
  • Flows: usr/psw, assertion, device, client credentials
  • Use Google for OpenID. Have a look at OpenID Connect, which asks for richer user profiles, was improved based on OAuth 2.0 and provides modular specification.
  • OAuth and OpenID may be easily implemented using Google APIs. At the front-end you may try the Account Chooser.
  • You may find a demo here
How to work without connection: HTML5 offline!

Speaker: Paul Irish

Paul Irish introduced us to web local storage. This technology provides a great user experience on web-apps when connection is not available or intermittent. He presented new local storage features (indexedDB!) and provided some tips how to use local storage on elder browsers.

  • Appcache: serve files depending on online status
  • The file:///... documents will be never cached
  • Now you can use an indexedDB; should use cursor to iterate the DB results
  • Shared workers allow to work across tabs to share information and work on the same information across the tabs (the app does not get outdated between tabs). Allows to provide consistency about connection status, data and avoid running duplicate code, making the app more performant.
  • Always use webstorage instead of cookies
  • For offline applications use unlimited storage and offline=enabled


Create enterprises on top of mobile applications

Speaker: Peter Fernandez

This was a great talk about AddMob, with concrete tips on how to monetize mobile apps. These tips applied for both beginners and advanced users. A two words summary would be: Use AddMob!

  • People today are more likely to consume mobile advertising than other kinds of adverts. Ex.: when watching TV, during the commercials you are more likely to play a mobile game, and there the adverts are served. That’s why AddMob is very relevant for advertisers (and for developers!)
  • Focus on the concept and execute: when creating an app do not spend time thinking which should be your business model, that should be done once the app takes off. Meanwhile you should use AddMob to get a revenue and focus on making a great app.
  • Keep it free: users are more likely to give it a try if it’s free. Using AddMob, you’ll get money from users usage.
  • Build a brand: description and icon are crucial as people will decide to install it based on them.
  • Leverage social circles: use them before releasing the app to a larger market. Use them to gain feedback from known people.
  • Use free advertising: make your apps display adverts for other apps you built.
  • Paid advertising: use it once your app becomes takes off. This will help to get more downloads and a better rating. The rating is mainly based on downloads. User qualifications are not as important as downloads.
  • Use analytics! Analytics allow to see which features are used and the user profiles of the one who use the apps.
  • The monetization depends on the quantity of users and page views.
  • AddMob may be used on BlackBerry devices.


+1 button

Speaker: Timothy Jordan

This talk had little tech content, mainly focused on promoting +1. Most of people went there looking for the “black pin”. This was a game Google organized, where by collecting five different pins, you won an Android robot built from legos. As you might be thinking, the black pin was not there.

Here we learned that the +1 will be affecting google search ranks…

  • Pay great attention to rel="canonical". This parameter shows which is the real url we want to be affected by the +1 button. This way we may provide the button on different urls, but all of them referring to a single url that groups the topic, so the +1 votes accumulate on a single link.
  • +1 should be used on public crawlable urls. If not public, the canonical url should refer to a public link.
  • The callback function may be used to provide more information to the user.
  • Use the same +1 button for the pages with the same content regardless the presentation (language is also considered a kind of view).
  • You can use the +1 button even if you are not using circles: just requires a google account.
  • When displaying search results, +1 information will be added to enhance user experience.
These Aren’t the Sites You’re Looking For: Modern Web Applications

Speaker: Pete LePage / @petele

Pete talk was an introduction to HTML5 features and on how provide a great user experience with them. Local storage, speech support, files API, authentication, layouts for different devices, and how to port this to older browsers was covered at a glance.

Some links:

Developer Guides:

Best Practices:


Speaker: Saurabh Gupta / @gluemesh

Great presentation! We learned how to automate and interact between different GDocs services and 3rd party APIs to build integrated solutions. There are many advantages to this approach: everything is written in JavaScript, and all the services are running on Google at no cost.

  • Allows to operate with different GDocs products to automate tasks by programming JavaScript code.
  • Allows interaction with 3rd party REST APIs.
  • Includes a GUI builder: complex GUIs could be easily build.
  • You may operate on GDocs data with JavaScript.
  • Code snippets can be shared: search them in the appscript galleries.
  • Scripts are executed on server side, so client side events are not supported yet.
Android usability

Speaker: Bruno Oliveira / @btco, @googledevlatam

Bruno introduced us to many useful tips on how to improve Android Apps.

  • Design a great “heroscreen”: the heroscreen is the screenshot that will be used to promote the app.
  • Support-screens: use different resources for each screen, use dp and sp (never pixels!). Don’t use absolute layout: it may not work on some devices!
  • You should remind the user that your app is there: create home-screen widgets for your app, promote your app wallpapers, etc.
  • Allow the user to configure interaction: defaults should be provided, but configuration options should exist. See shared preferences.
  • Always allow the app to be used offline.
  • Use C2DM to notify the user about new data available and avoid polling! See this link for details.
  • Use a broadcast receiver to detect connectivity changes.
  • All the operations should be undoable: avoid confirmation screens and alerts. Provide an undo link with a timeout: if the user does not undo the action in x seconds, send the post; otherwise cancel it.
Chrome dev tools: tips and tricks

Speaker: Paul Irish

We were introduced to the latest and powerful features of Chrome Dev Tools. If are doing web developing and not using them yet, you should seriously consider giving them a try!

  • Revision history for changes when editing on browser. Changes are highlighted and may be saved.
  • Remote debugging! See this link for details.
  • APIs to extend dev tools are provided (add custom validations, etc). To add a custom debug breakpoint for a non-listed event: document.addEvent('evtName', function(){debugger;},false);
  • Type the ? button for shortcuts.


Chrome Tools Extension APIs: