Thursday, 28 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Compress data more densely with Zopfli

Author PhotoBy Lode Vandevenne, Software Engineer, Compression Team

Cross-posted with the Google Open Source Blog

The Zopfli Compression Algorithm is a new open sourced general purpose data compression library that got its name from a Swiss bread recipe. It is an implementation of the Deflate compression algorithm that creates a smaller output size compared to previous techniques. The smaller compressed size allows for better space utilization, faster data transmission, and lower web page load latencies. Furthermore, the smaller compressed size has additional benefits in mobile use, such as lower data transfer fees and reduced battery use. The higher data density is achieved by using more exhaustive compression techniques, which make the compression a lot slower, but do not affect the decompression speed. The exhaustive method is based on iterating entropy modeling and a shortest path search algorithm to find a low bit cost path through the graph of all possible deflate representations.

The output generated by Zopfli is typically 3–8% smaller compared to zlib at maximum compression, and we believe that Zopfli represents the state of the art in Deflate-compatible compression. Zopfli is written in C for portability. It is a compression-only library; existing software can decompress the data. Zopfli is bit-stream compatible with compression used in gzip, Zip, PNG, HTTP requests, and others.

Due to the amount of CPU time required — 2 to 3 orders of magnitude more than zlib at maximum quality — Zopfli is best suited for applications where data is compressed once and sent over a network many times, for example, static content for the web. By open sourcing Zopfli, thus allowing webmasters to better optimize the size of frequently accessed static content, we hope to make the Internet a bit faster for all of us.

Lode Vandevenne is a software engineer based in Zürich. He has a special interest in compression algorithms, and implemented Zopfli as his 20% time activity.

Posted by Scott Knaster, Editor

Improve your App Engine skills with Google Developers Academy

Author PhotoBy Wesley Chun, Developer Relations Team

Cross-posted with the Google App Engine Blog

Are you developing on App Engine today or interested in learning how to use it? If you've gone through all the great App Engine docs and Getting Started tutorials (Python, Java, or Go) but want to take your App Engine skills a step further, then Google Developers Academy (GDA) is the place to go! We launched GDA this past summer at Google I/O 2012, with content for beginners as well as seasoned developers. What can you find on App Engine in GDA today?

computers in a classroom

If you’re interested in getting more background on what cloud computing is and where App Engine fits into that ecosystem, then this intro class (Introduction to Google App Engine) is for you. Once you’re done with this class, you’ll be ready to tackle the Getting Started tutorial, and after that, move on to the App Engine 101 in Python class.

While some of the material found in App Engine 101 is similar to what's in the Getting Started tutorial, the 101 class targets developers who skipped the tutorial or completed it at some point in the past but don't want to repeat the exact same thing. The main differences include the following changes to the tutorial's content:
  • Use of the Python NDB API
  • Jinja2 templates
  • Discussion of data consistency and datastore indexes
You can use the relational MySQL-compatible Google Cloud SQL service as an alternative to App Engine's native non-relational datastore. Some applications do require a relational database, especially if you’re porting an existing app that relies on one. In this case, you want to learn about Cloud SQL and how to use it with App Engine. That’s why we have the Using Python App Engine with Google Cloud SQL class.

Of course, Google is best known for search. With App Engine's powerful Search API, you can index not only plain text, but also HTML, atoms, numbers, dates, and locations (lat/long). Getting Started with the Python Search API is a two-part class that will indeed get you started: in the first part of the class, you’ll create an application using a variety of data and learn how to index such data (using "documents"). In Part 2, you’ll learn how to execute queries as well as how to update your indexes when you modify your data.

If variety is what you're after, then look no further than the newest class in GDA: Getting Started with Go, App Engine and Google+ API. You will not only learn how to create an App Engine app using the Go programming language, but also learn how to connect to the Google+ API with the Google APIs Client Library for Go.

These are just a few examples of the types of classes you'll find in GDA. We also have content that features many other Google technologies, including Android, Chrome, YouTube, Maps, Drive, and Wallet. We invite you to swing by for a visit soon.

+Wesley Chun (@wescpy) is author of the bestselling Core Python books and a Developer Advocate at Google, specializing in cloud computing and academia. He loves traveling worldwide to meet Google users everywhere, whether at a developers conference, user group meeting, or on a university campus!

Posted by Scott Knaster, Editor

Wednesday, 27 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

DevFestW: developing diversity

Author Photo
By Stephanie Liu, Developer Relations, Global Programs Lead

The best part of my job (besides making alliterative blog post titles) is working with developer communities, especially the incredibly passionate Google Developer Groups. Many chapters have been working in their local regions to diversify their communities and make them more inclusive for women developers (e.g. the Android codelab in Tokyo pictured below, and GDG Philippines). Because of these great local initiatives, we’re collaborating with the global organizer community to launch a DevFestW season during the month of March.

developers at Android codelab in Tokyo

Like previous DevFests, DevFestW events are community-led efforts that feature technical sessions on Google’s developer tools and platforms. DevFestW also places an emphasis on bringing together women developers to teach, learn, code, and network.

Diversity is important to us at Google, both within the company and within our developer ecosystem. To truly innovate and grow, we need a diverse set of people coming up with solutions and creating products for a varied audience. We’re excited to support this initiative, and to see what foundation we can build for a lasting, vibrant community.

Visit to find and register for a DevFestW event in your region. Stay up-to-date on all things DevFestW by following and hashtagging posts with #gdg #devfestw. Join the conversation by becoming a part of the GDG Women community on Google+. Happy festing!

Want to learn more? Find your nearest GDG chapter, get involved in local events, and connect with Google developers 24/7/365 on Google Developers Live.

Stephanie Liu leads developer outreach for North America, as well as the global programs team. She likes to relax by speedcubing.

Posted by Scott Knaster, Editor

On the track with Chrome Super Sync Sports

Author PhotoBy Paul Kinlan, Chrome Developer Relations

Cross-posted with the Chromium Blog

Earlier today we launched Chrome Super Sync Sports. It’s an interactive web game that enables up to four friends to compete in running, swimming and cycling events on a shared computer screen, using their smartphones or tablets as game controllers.

Chrome Super Sync Sports was built with the latest browser technologies:
  • Touch APIs to recognise gestures made on your smartphone and tablet. 
  • WebSockets are used to deliver immediate real-time playback across all the players in your group and to update the main game screen as you play. 
  • Finally, CSS3SVG and Canvas provide rich visuals and an immersive experience. 
In the next few weeks, we’ll be publishing an article on HTML5 Rocks with more information on how we built this experience. You can follow +Google Chrome Developers to learn when the article will be live.

In the meantime, enjoy competing with your friends at and be sure to open Chrome’s developer tools to see what happens under the track!

Paul Kinlan is a Developer Advocate in the UK on the Chrome team specialising on mobile. He lives in Liverpool and loves trying to progress the city's tech community from places like DoES Liverpool hack-space.

Posted by Scott Knaster, Editor

Tuesday, 26 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Introducing Google+ Sign-In: simple and secure, minus the social spam

By Seth Sternberg, Director of Product Management, Google+

Cross-posted from the Google+ Developers Blog

Today we’re adding a new feature to the Google+ platform: application sign-in. Whether you’re building an app for Android, iOS or the web, users can now sign in to your app with Google, and bring along their Google+ info for an upgraded experience. It’s simple, it’s secure, and it prohibits social spam. And we’re just getting started.

In this initial release, we've focused on four key principles to make things awesome for users:

1. Simplicity and security come first 
If you sign in to Gmail, YouTube or any other Google service, you can now use your existing credentials to sign in to apps outside of Google. Just review the Google+ permissions screen (outlining the data you're sharing with the app, and the people who can see your activity), and you're all set. Google+ Sign-In also comes with the protections and safeguards you’ve come to expect from your Google account (like 2-step verification), so you can always sign in with confidence.

Managing your signed-in apps is easy too: visit at any time, or open the new Google Settings app on Android.

2. Desktop and mobile are better together 
Many developers offer web and mobile versions of their app, yet setting things up across a browser, phone and tablet is still a major hassle. Starting today, when you sign in to a website with Google, you can install its mobile app on your Android device with a single click.

3. Sharing is selective; spraying is just spam 
Sometimes you want to share something with the world (like a high score), but other times you want to keep things to yourself (like fitness goals). With Google+ Sign-In and circles you decide who to share with, if at all. In addition: Google+ doesn’t let apps spray “frictionless” updates all over the stream, so app activity will only appear when it’s relevant (like when you’re actually looking for it).

4. Sharing is for doing, not just viewing 
Pictures and videos are great for viewing, but sometimes you actually want to do stuff online. That's why, when you share from an app that uses Google+ Sign-In, your friends will see a new kind of "interactive" post in their Google+ stream. Clicking will take them inside the app, where they can buy, listen to, or review (for instance) exactly what you shared.

If you’re building an app for Android, iOS or the web, and you’d like to include Google+ Sign-In, simply dive into our developer docs and start checking stats once your integration is live. Android apps will require the latest version of Google Play Services, which is rolling out to all devices in the next day or so.

To see what other developers are doing with Google+ Sign-In, just visit any of the following sites, and look for the new "Sign in with Google" button (also rolling out gradually):

Written by Seth Sternberg, Director of Product Management, Google+

Posted by Scott Knaster, Editor

10 Responsive Navigation Solutions and Tutorials

As responsive design rapidly increases in popularity, we felt we would take a look at some of the varied solutions and techniques that are being adopted for managing the navigation/menu on smaller screened devices.

Planning and building your menu for mobiles will perhaps be the trickiest aspect of your responsive layout, not just with the coding but also having to decide what will stay and what will have to go to fit everything into the smaller screen. It is a juggling act between both readability and the desire to show as much on the screen as possible.

Hopefully the solutions we have for you below will help get you on your way.

Progressive And Responsive Navigation (Tutorial)

Progressive And Responsive Navigation

This tutorial, from Smashing Magazine, takes you through the steps for coding your navigation using a little forethought and considering the principles of progressive enhancement from the beginning and applying some responsive practices at the end, allowing your navigation to easily accommodate less-capable browsers and modern browsers in both desktop and mobile environments.

Responsive Navigation Menu (Tutorial)

Responsive Navigation Menu

With this tutorial you will learn how to code a simple and effective responsive navigation menu, with a grid layout, that you will be able to easily modify and reuse in your own projects.

TinyNav.js (jQuery Plugin)


TinyNav.js is a tiny jQuery plugin (362 bytes minified and gzipped) that converts <ul> and <ol> navigations to a select dropdowns for small screens. It also automatically selects the current page and adds selected="selected" for that item.

Responsive Drop Down Navigation Menu (Tutorial)

Responsive Drop Down Navigation Menu

The code for this menu is based on the famous Suckerfish Dropdown menu, restyled to make it responsive. It will work great in all modern desktop browsers without Javascript.

HorizontalNav (jQuery Plugin)


HorizontalNav is a jQuery plugin that spans a horizontal navigation to fit the full width of it's container. It comes with an option to make it responsive, allowing the navigation to auto-adjust when the window is resized.

Responsive, Mobile-First Navigation Menu (Tutorial)

Responsive, Mobile-First Navigation Menu

This tutorial demonstrates how to develop a complex responsive navigation menu using the "Mobile-First Approach". The aim is to present mobile users with a pseudo-native, touch-conducive and interactive interface that enables them to navigate the website with ease.

SelectNav.js (Javascript Plugin)


SelectNav.js is a JavaScript plugin that lets you convert your website navigation into a <select> drop-down menu. Used together with media queries it helps you to create a space saving, responsive navigation for small screen devices.

Convert a Menu to a Dropdown for Small Screens (Tutorial)

Convert a Menu to a Dropdown for Small Screens

Simple Responsive Menu

Simple Responsive Menu

This tutorial takes a typical desktop menu and shows you how to, using Modernizr, jQuery and media queries, convert it to a small menu button for smaller screens that only appears when pressed, and pressing it again will retract it.

Mobile Menu (jQuery Plugin)

Mobile Menu

Mobile Menu is a jQuery plugin that turns your site's navigation into a dropdown (<select>) when your browser is at mobile widths. It comes with a handful of options, including the really useful "combine", that allows you to convert multiple navigation lists into a single dropdown.

Friday, 22 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Fridaygram: I/O registration, SpaceX launch, calendar history

Author PictureBy Ashleigh Rentz, Google Developers Blog Editor Emerita

As Spring draws nearer in the northern hemisphere, so too does this year’s Google I/O. Earlier today, we announced that registration for this year’s event will open on March 13th at 7:00 AM PDT. Tickets are in high demand, so be sure to mark your calendar!  Of course, we’ll continue to offer live streaming and recordings of many sessions as we’ve done in the past for those who can’t join us at Moscone Center (and for attendees who can’t be in two sessions at once).

Another thing to mark on your calendar is the upcoming launch of the SpaceX Dragon spacecraft next Friday, March 1st. In the early hours of the morning (much earlier than Fridaygrams get posted), SpaceX will host a live webcast covering the launch. What’s more, they might just answer your question! Head over to their Google+ page for details on how to submit that burning question via YouTube.

If you find yourself scratching your head after looking at your calendar and wondering where this bizarre time-telling scheme ever came from, fear not! One YouTube user offers us “A Short History of the Modern Calendar”. It’s still annoying to deal with this mess of dates when coding, but at least it wasn’t devised purely to torment us. Why isn’t there an SI unit of month?

Once per 7-day week, Fridaygram puts away the compiler and brings you the latest in fun science and other nerd stuff. Occasionally, we meander through recorded history as well. “Those who cannot remember the past are condemned to GOTO 10.”

Thursday, 21 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Google Cloud Platform introduces new support packages

Author PictureBy Brett McCully, Google Cloud Platform Team

(Cross-posted with the App Engine and Enterprise Blogs)

Support is as important as product features when choosing a platform for your applications. And let’s face it, sometimes we all need a bit of help. No matter which Google Cloud Platform services you are using — App Engine, Compute Engine, Cloud Storage, Cloud SQL, BigQuery, etc. — or what time of day, you should be able to get the answers you need. While you can go to Stack Overflow or Google Groups, we realize some of you may need 24x7 coverage, phone support or direct access to a Technical Account Manager team.

To meet your support requirements, we’re introducing a comprehensive collection of support packages for services on Google Cloud Platform, so you can decide what level best fits your needs:

  • Bronze: All customers get access to online documentation, community forums, and billing support. (Free)
  • Silver: In addition to Bronze, you can email our support team for questions related to product functionality, best practices, and service errors. ($150/month)
  • Gold: In addition to Silver, you'll receive 24x7 phone support and consultation on application development, best practices or architecture for your specific use case. (Starts at $400/month)
  • Platinum: The most comprehensive and personalized support. In addition to Gold, you’ll get direct access to a Technical Account Manager team. (Contact Sales for more information)

Sign up or click here to find out more information about the new Google Cloud Platform support options.

Brett McCully is the Manager of the Google Cloud Platform Support team and is currently based in Seattle.

Posted by Ashleigh Rentz, Editor Emerita

Java 7 Runtime and Cloud Endpoints Preview

Author PictureBy Brad Abrams, Google Cloud Platform Team
(Cross-posted with the Google App Engine Blog)
Today we are announcing two new preview features: App Engine Java 7 runtime support and Google Cloud Endpoints.   Preview features are ‘experimental’ features on a path towards general availability.

Java 7 Runtime Support for App Engine

The App Engine Java 7 runtime allows App Engine developers to keep pace with innovations in the Java language and runtime. It is important that you begin testing your applications with the new Java 7 runtime before the complete rollout in a few months.
Some of the language features you now have access to include:
invokedynamic support, which allows developers, tools providers, and language implementations to take advantage of a new bytecode, invokedynamic, to handle method invocations efficiently even when there is no static type information. For example:

public static void invokeExample() {
String s;
MethodType mt;
MethodHandle mh;

MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodType mt = MethodType.methodType(String.class, char.class,
MethodHandle mh = lookup.findVirtual(String.class, "replace", mt);
s = (String) mh.invokeExact("App Engine Java 6 runtime",'6','7');
Try-with-resources, which helps avoid memory leaks and related bugs by automatically closing resources that are used in a try-catch statement.

public static void viewTable(Connection con, String query) throws SQLException {

  try (
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query)
) {
     while ( {
    // process results
  } catch (SQLException e) {
     // con resource is auto-closed, no need to do anything here!
Flexible Type Creation when using generics, enabling you to create parameterized types more succinctly. For example, you can write:

Map<String, List<String>> myMap = new HashMap<>();
instead of:
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
In addition to the language features listed above, the App Engine Java 7 runtime also includes:
  • Use of String class in Switch statements.
  • Expression of binary literals using simple prefixes 0b or 0B.
  • Single catch blocks that can handle multiple exceptions.
  • Simplified varargs method invocation.
Want to get started now? Download the latest App Engine Java SDK and then check out the docs here.

Cloud Endpoints Preview

Have you ever wanted a simple way to get a cloud backend for that Android or iPhone app you are working on?  Wish it was easier to expose RESTful APIs from your web application?  Google Cloud Endpoints simplifies building highly scalable and flexible backends for your web and mobile applications. Use Cloud Endpoints to store application data in the cloud that spans both devices and users. You can now easily expose your own authenticated, reliable, REST-based APIs hosted from an App Engine application and consume them in your Android, iOS, or web clients. Deeply integrated authentication support allows your users to have a transparent yet secure experience accessing your services. You have access to strongly typed client libraries for your custom service optimized for Android and iOS.
To use Cloud Endpoints, you simply write a Java or Python class with methods you want to expose to web or mobile clients. You then annotate the methods with attributes that control exactly how they are represented in REST interfaces on the wire. Finally, use Cloud Endpoints to generate your strongly-typed client libraries for Android, iOS and a lightweight JavaScript library.
For example, you can create a simple class to list some important data:

public class SuperHeroes {

   public List listSuperHeroes() {

List list = new ArrayList();
list.add(new SuperHero ("Champion of the Obvious", "Brad Abrams"));
list.add(new SuperHero ("Mr. Justice", "Chris Ramsdale"));

return list;

Then, expose it over a standard REST interface with a simple attribute and a versioning pattern.

@Api(name = "superheroes", version = "v1")
public class SuperHeroesV1 {
Now you have a simple REST interface.

$ curl http://localhost:8888/_ah/api/superheroes/v1/superheroes
"items": [
  "knownAs" : "Champion of the Obvious",
  "realName" : "Brad Abrams"
  "knownAs" : "Mr. Justice",
  "realName" : "Chris Ramsdale"
And you can make strongly typed calls from your Android clients:

Real result = superheroes.list().execute();
Or Objective-C iOS client:

GTLQuerySuperHeroesV1 *query = [GTLQuerySuperHeroesV1 queryForSuperHeroesList];
[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
GTLSuperHeroes *object, NSError *error) {
 NSArray *items = [object items];
Or the web client in JavaScript:
// ...
var ROOT = 'https://' + + '/_ah/api';
gapi.client.load('superheroes', 'v1',
                loadSuperheroesCallback, ROOT);

// Get the list of superheroes
gapi.client.superheroes.superheroes.list().execute(function(resp) {
Read the documentation for Java or Python to discover how you can build a simple tic-tac-toe game using Cloud Endpoints.
To get started with Cloud Endpoints, download the App Engine 1.7.5 SDK and the latest Google Plugin for Eclipse. Be sure to look at the docs and follow along in the discussion forums on Stack Overflow.
For more on using Cloud Endpoints with Python, check out +Danny Hermes and +Dan Holevoet on Google Developers Live.

Brad Abrams is a Product Manager on the Google Cloud Platform where he looks after the developer experience. Brad is currently learning to ride the unicycle, so far with no broken bones!
Posted by Ashleigh Rentz, Editor Emerita

Friday, 15 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Fridaygram: commerce analytics, fixing the kilogram, big prime number

Author Photo
By Scott Knaster, Google Developers Blog Editor

We all live together in one big blue world, but we do lots of things differently: like pay for our purchases in different currencies around the world, for example. That’s very important if you’re doing commerce on the web, because people like to pay for things in their local currencies. For e-commerce developers, Google Analytics just launched a feature to track revenue, tax, and shipping & handling costs in multiple local currencies on a single website.

This new feature, which is rolling out gradually to all Analytics users, lets you choose from 31 different flavors of local currencies when you set up your reports. With multi-currency support, you can give your site broader appeal while making the world seem like a smaller, more friendly place.

Speaking of shared international knowledge, you might know that the weight of a kilogram is defined by a cylinder of platinum-iridium alloy in France. Strangely enough, even though the International Prototype Kilogram is sealed in a vault, it’s getting infinitesimally heavier, about one-eighth the weight of a grain of sand per century. Obviously, that just won’t do. To fix this, scientists are going to clean the cylinder, and all will be well again.

Finally, spend some time this weekend contemplating the discovery of a new largest prime number, which is 17,425,170 digits long (and with the magic of the Internet, you can look at all those digits here). This prime number was discovered by Dr. Curtis Cooper – no, not that Dr. Cooper – via the Great Internet Mersenne Prime Search (GIMPS).

Each Friday we publish a Fridaygram to tell you about strange and wonderful stuff from Google and the world at large. And please don’t worry about memorizing that long prime number – there will not be a quiz. Not even for you, Sheldon.

Tuesday, 12 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Research Projects on Google App Engine

Author PhotoBy Andrea Held, Program Manager, Google University Relations

Last spring Google University Relations announced an open call for proposals for Google App Engine Research Awards. We invited academic researchers to use Google App Engine for research experiments and analysis, encouraging them to take advantage of the platform’s ability to manage heavy data loads and run large-scale applications. Submissions included proposals in various subject areas such as mathematics, computer vision, bioinformatics, climate and computer science. We selected seven projects and have awarded each $60,000 in Google App Engine credits recognizing their innovation and vision.

Today we would like to share a brief introduction of the winning projects and their Principal Investigators:
  • K. Mani Chandy, Simon Ramo Professor and Professor of Computer Science, California Institute of Technology
    Cloud-based Event Detection for Sense and Response: Develop a low-cost alternative to traditional seismic networks. The image below is taken from the Community Seismic Network map showing active clients and events in real time.
  • A dense network of seismic stations enables the Community Seismic Network to perform a finer-grained analysis of seismic events than possible with existing seismic networks.
  • Lawrence Chung, Associate Professor, The University of Texas at Dallas
    Google App Engine: Software Benchmark and Google App Engine Simulation Forecaster: Develop a tool to estimate software performance and cost on Google App Engine.
  • Julian Gough, Professor, University of Bristol, UK
    Personalised DNA Analysis: Develop a service that provides personal DNA analysis.
  • Ramesh Raskar, PhD, MIT Media Lab; Dr. Erick Baptista Passos, IFPI (Federal Institute of Technology, Brazil)
    Vision Blocks: develop a tool that delivers computer vision to people everywhere. The image below shows a current prototype implementation of Vision Blocks.
  • Many algorithms are already included, and you'll be able create your own blocks as well.
  • Norman Sadeh, Professor, Director of Mobile Commerce Lab, School of
    Computer Science, Carnegie Mellon University
    Mapping the Dynamics of a City & Nudging Twitter Users: uncovering local collective knowledge about the a city using social media.
  • William Stein, Professor of Mathematics, University of Washington
    Sage: Creating a Viable Free Open Source Alternative to Magma, Maple, Matlab, and Mathematica.
  • Enrique Vivoni, Associate Professor, Hydrologic Science, Engineering & Sustainability, Arizona State University
    Cloud Computing-Based Visualization and Access of Global Climate Data Sets: provide scientific data on global climate trends.
Congratulations to the award winners! We are excited about the proposals’ creativity and innovation and look forward to learning about their discoveries. To read more about specific projects, go here.

Andrea Held is a Program Manager on the University Relations team at Google. She grew up in Germany and has lived in California for almost 30 years.

Posted by Scott Knaster, Editor

Monday, 11 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Flip bits, not burgers: Google Summer of Code 2013 is on!

Google Summer of Code logo

Cross-posted with the Google Open Source Blog

I am proud to share the news that Google Summer of Code 2013 will be happening again this year.

This will be the 9th year for Google Summer of Code, an innovative program dedicated to introducing students from colleges and universities around the world to open source software development. The program offers student developers stipends to write code for various open source projects with the help of mentoring organizations from all around the globe. Over the past eight years Google Summer of Code has had 6,000 students from over 100 countries complete the program. Our goal is to help these students pursue academic challenges over the summer break while they create and release open source code for the benefit of all.

Spread the word to your friends! If you know of a university student who would be interested in working on open source projects this summer, or if you know of an organization that might want to mentor students to work on their open source projects, please direct them to our Google Summer of Code 2013 website where they can find our timeline along with the FAQs. And stay tuned for more details coming soon!

Written by Carol Smith, Open Source Team

Posted by Scott Knaster, Editor

Udacity HTML5 Game Development course now live

Author Photo
By Peter Lubbers, Program Manager, Google Chrome Developer Relations

We just launched our new Udacity HTML5 Game Development course (CS255). This course focuses on building a game in JavaScript and is taught by Colt McAnlis (Developer Advocate, Chrome Developer Relations), Peter Lubbers (Program Manager, Chrome Developer Relations), and Sean Bennett (Architect, Udacity). Yep, these guys:


This Thursday, February 14th at 10:30 a.m. PST we are hosting an introductory Google Developers Live session with special guest Sebastian Thrun (Udacity's CEO). In this session we will tell you all about the content of the course and and we will answer your questions live. Make sure you add this live event to your calendar and tune in on Thursday: (you can ask and vote for your questions there, too).

We have a series of exciting initiatives that we are organizing in parallel. First, we’ll be running a study group for the first several weeks of the course. The study group will be hosted at Google’s San Francisco office, and Colt, Peter, and Sean will be there to answer any questions you might have and to help you out with the course material. If you don’t live around San Francisco, or can’t make it for whatever reason, don’t worry, because we’ll be livestreaming and recording these study groups.

cars with Udacity and HTML5 license plates

In addition to the study group, Udacity is also organizing an exciting contest focused around the course. The goal of this contest is to build your own game using the knowledge and skills you've gained from the course. You can sign up for the course here and tune into GDL on Thursday to find out more about it.

Peter Lubbers is a Program Manager on the Chrome Developer Relations Team, spreading HTML5 and Open Web goodness. He is the founder of the San Francisco HTML5 User Group--the world's first and largest HTML5 meetup with over 6,000 members. Peter is the author of "Pro HTML5 Programming" (Apress) and, yes, his car's license plate is HTML5!

Posted by Scott Knaster, Editor

Friday, 8 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Fridaygram: online safety, asteroid close call, spectacular glacier

Author Photo
By Scott Knaster, Google Developers Blog Editor

You’re reading a blog for developers, so chances are you’re probably pretty savvy about how things work online, and that includes safety and security. Of course, just because we know how to be secure doesn’t mean we always do what we should. And there are all our less-technical friends and family members who often turn to us for guidance. To help keep people secure online, we recently updated the site Good to Know: A guide to staying safe and secure online.

safety logo

This site contains lots of common sense and advanced tips, such as how to secure your passwords, ways you can prevent identity theft, and a guide to technical terminology. Although Good to Know is designed to be useful to people from all backgrounds, even us tech folks can find some handy information there.

Speaking of safety, it turns out we can all can relax about Asteroid 2012 DA 14. According to NASA, the 45-meter object will get close to Earth, but no closer than about 17,000 miles. The space agency also says the asteroid won’t be visible to the naked eye, and will be hard to track even with telescopes. But the important thing is that we won’t have another Tunguska event.

Although it looks like we’re going to avoid an asteroid impact, nature continues to demonstrate enormous power that is sometimes destructive and awesome. A camera crew recently filmed an immense glacier calving, an event that lasted more than an hour. You can watch it from the comfort of your asteroid-safe home.

Safety is important, whether you’re on the Internet or looking out for asteroids. While we spend most of the week here telling you about Google developer topics, Fridaygram is set aside for science, technology, and other fun & generally nerdy topics.

Elevate your apps in Google Drive

Author Photo
By Nicolas Garnier, Developer Relations

When Google Drive launched, we also introduced the Google Drive SDK, which enables you to deeply integrate your apps into Drive. Using the Drive SDK, you can offer your users an experience similar to how Google Docs or Google Sheets interact with Drive. More than a hundred web apps now integrate with Google Drive in this way.

Today we are making several changes to Google Drive to help users more easily discover, connect and use these Drive-enabled apps.

Google Drive Create menu

The Google Drive Create menu now elevates Drive-connected apps to the same level as Google apps such as Docs and Sheets. This makes your Drive-connected apps easier to reach and more visible to Google Drive users.

New Google Drive Create menu

As you can see, we’ve made some space in the Create menu for your apps, which users can add by clicking on Connect more apps.

Browse and Connect Drive-enabled Apps

Google Drive users can now browse and connect Drive-enabled apps right from within Drive thanks to the new Connect apps to Drive dialog:

Connect some Google Drive-enabled web apps to your Drive

After installing an app, users can instantly start using your Drive app to create or open files directly from within Drive.

Opening a file in Google Drive with a connected app

If your app is already Google Drive-enabled and listed in the Chrome Web Store’s Drive collection, you don’t have to do anything new to take advantage of these new features. We will automatically pull all the information from your existing Chrome Web Store listing.

If your web app is not yet Google Drive-enabled, check out how you can integrate with the create-new and the open-with actions and then get your Drive-enabled app listed in the new Connect apps to Drive dialog.

Nicolas Garnier joined Google’s Developer Relations in 2008 and lives in Zurich. He is a Developer Advocate for Google Drive and Google Apps. Nicolas is also the lead engineer for the OAuth 2.0 Playground.

Posted by Scott Knaster, Editor

Tuesday, 5 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Introducing "Find Your Way to Oz", a new Chrome Experiment

Author Photo
By Max Heinritz, Associate Product Magician (Manager)

Cross-posted with the Chromium Blog

Today we unveiled "Find Your Way To Oz", a new Chrome Experiment inspired by the upcoming feature film Oz The Great and Powerful. Developed by UNIT9, this experiment brings together Disney’s unique storytelling tradition and the power of the web platform, allowing users to interact with the web in a completely new way.

The desktop version of "Find Your Way To Oz" uses many of the open web’s more advanced features:
  • Immersive Graphics: The experiment uses WebGL for the main 3D environment, CSS3 features such as CSS Transitions for various visual embellishments, and GLSL shaders for the tornado’s ominous look and feel.

  • Rich Audio: As the user explores the experiment, the 3D sound dynamically adapts thanks to the Web Audio API. The same API powers the experiment’s music composing section.

  • Camera-based interactions: Through WebRTC’s getUserMedia API, users can become circus characters or record their own mini-movies.
The experiment’s mobile web version also uses cutting-edge web technologies. These include graphics features such as accelerated 3D transforms and sprite sheets as well as mobile hardware features like camera, multi-touch, gyroscope and accelerometer. Together they create an experience that can normally only be found in native apps.

To learn more about how this experiment was built, read our technical case study and join us for a Google Developers Live event on February 11th at 11 a.m. GMT where we’ll be talking to the team behind the project. Alternatively, use Chrome’s developer tools to see how the experiment works on your own, perhaps finding in the process your own path to the yellow brick road.

Max Heinritz is an Associate Product Manager on the Chrome Web Platform team. He's helping the web reach its potential to become the universal application platform. On the weekends you can find him exploring the Northern California wilderness.

Posted by Scott Knaster, Editor

Monday, 4 February 2013
Facebook StumbleUpon Twitter Google+ Pin It

Browser Specific CSS

CSS Browser Selector is a very small javascript with just one line which empower CSS selectors. It gives you the ability to write specific CSS code for each operating system and each browser.


The color of this box will change on different os/browsers:

  • Internet Explorer - yellow

  • Internet Explorer 7 - orange

  • Gecko Engine on Windows (Firefox, Mozilla, Camino) - red

  • Gecko Engine on Linux (Firefox, Mozilla, Camino) - pink

  • Gecko Engine on Other OS (Firefox, Mozilla, Camino) - gray

  • Opera - green

  • Konqueror - blue

  • Safari - black

  • Chrome - cyan

If the box is white, and you are using one of browsers above, something is wrong :-/

Source of this example:

<style type="text/css">
.ie .example {
background-color: yellow
.ie7 .example {
background-color: orange
.gecko .example {
background-color: gray
.win.gecko .example {
background-color: red
.linux.gecko .example {
background-color: pink
.opera .example {
background-color: green
.konqueror .example {
background-color: blue
.webkit .example {
background-color: black
.example {
width: 100px;
height: 100px;
.no_js { display: block }
.has_js { display: none }
.js .no_js { display: none }
.js .has_js { display: block }

Screenshots on Browsercam

Chris Preece contributed with some images


I need to update this script every time a browser is released with new UserAgent string.

This is a little effort, but certainly with your donation I will do it happier :)


git clone git://


1. Copy and paste the line below, inside <head> and </head> tag

<script src="css_browser_selector.js" type="text/javascript"></script>

2. Set CSS attributes with the code of each browser/os you want to hack


  • html.gecko div#header { margin: 1em; }

  • .opera #header { margin: 1.2em; }

  • .ie .mylink { font-weight: bold; }

  • .mylink { font-weight: bold; }

  • .[os].[browser] .mylink { font-weight: bold; } -> without space between .[os] and .[browser]

Available OS Codes [os]:

  • win - Microsoft Windows (all versions)

  • vista - Microsoft Windows Vista new

  • linux - Linux (x11 and linux)

  • mac - Mac OS

  • freebsd - FreeBSD

  • ipod - iPod Touch

  • iphone - iPhone

  • ipad - iPad new

  • webtv - WebTV

  • j2me - J2ME Devices (ex: Opera mini) changed from mobile to j2me

  • blackberry - BlackBerry new

  • android - Google Android new

  • mobile - All mobile devices new

Available Browser Codes [browser]:

  • ie - Internet Explorer (All versions)

  • ie8 - Internet Explorer 8.x

  • ie7 - Internet Explorer 7.x

  • ie6 - Internet Explorer 6.x

  • ie5 - Internet Explorer 5.x

  • gecko - Mozilla, Firefox (all versions), Camino

  • ff2 - Firefox 2

  • ff3 - Firefox 3

  • ff3_5 - Firefox 3.5

  • ff3_6 - Firefox 3.6 new

  • opera - Opera (All versions)

  • opera8 - Opera 8.x

  • opera9 - Opera 9.x

  • opera10 - Opera 10.x

  • konqueror - Konqueror

  • webkit or safari - Safari, NetNewsWire, OmniWeb, Shiira, Google Chrome

  • safari3 - Safari 3.x

  • chrome - Google Chrome

  • iron - SRWare Iron

Extra Codes:

  • js - Will be available when js is enable, so you can show/hide some stuffs


Original idea by 37signals.