Posts from September 2012

Google Code-in Contest for High School Students Starts this November

Monday, September 24, 2012

Today marks the launch of the third Google Code-in, an international contest introducing 13-17 year old pre-university students to the world of open source software development. The goal of the contest is to give students the opportunity to explore the many types of projects and tasks involved in open source software development. Globally, open source software development is becoming a major factor in all industries from governments, healthcare, and relief efforts to gaming and large tech companies.

When you hear the term “open source” do you ask yourself:

  • What exactly is open source?  
  • How can I get involved in open source software development if I’m just starting to learn how to code?
  • What types of work do open source projects do?  
  • I’d like to work on open source but I’m not really a coder, what else can I do?
  • I’ve never worked on a global project using IRC and chat groups: can someone help me?

If you’ve wondered about any of these questions and are a pre-university student (age 13-17) then you should join in on the fun with the Google Code-in contest starting November 26, 2012.

From late November to mid January, students will be able to work with 10 open source projects on a variety of tasks. These projects have all successfully served as mentoring organizations working with university students in our Google Summer of Code program.

The types of tasks students will be working on will fall into the following categories:

  1. Code: Tasks related to writing or refactoring code
  2. Documentation/Training: Tasks related to creating/editing documents and helping others learn more
  3. Outreach/research: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
  4. Quality Assurance: Tasks related to testing and ensuring code is of high quality
  5. User Interface: Tasks related to user experience research or user interface design and interaction

Over the last two years we have had 904 students compete in the contest from 65 countries. This past January we announced the 10 Grand Prize Winners for the 2011 Google Code-in. In June, we flew the winners and a parent/legal guardian to Google’s Mountain View, CA headquarters for a 5 day/4 night trip complete with an awards ceremony, talks with Google engineers, Google campus tour, and a full day of fun in San Francisco.

Visit the Frequently Asked Questions page on the Google Code-in site for more details on how to sign up and participate. Please help us spread the word to your friends around the globe. If you are a teacher that would like to encourage your students to participate, please send an email to our team at We would be happy to answer any questions you may have.

Stay tuned to the contest site and subscribe to our mailing list for more updates on the contest. We will announce the 10 open source organizations that will be participating in the contest on November 12. The Google Code-in contest starts on November 26, 2012, and we look forward to welcoming hundreds of students from around the world into the open source family.

By Stephanie Taylor, Open Source Programs

BARUG Meetup at the Googleplex

Thursday, September 20, 2012

What is R?  R is an open-source, statistical programming language that is increasingly becoming the lingua franca of modern data analysis. R developers have created over 4,000 packages to run in the R environment, including several dozen developed by Googlers. We continue to work with the R community through conferences, meetups like this one, Faculty Research Awards, and the annual Google Summer of Code program, which funded 16 students to work with the R Project this summer.

Last week, Google hosted the Bay Area useR Group (BARUG) at our Mountain View HQ.  Over 130 R users and developers met for pizza, networking, and presentations by Googlers.
This was our third time hosting a BARUG Meetup at Google.  Last year we hosted meetings in both Mountain View and San Francisco.  Last week’s meetup topics included an overview of the integration of R into Google’s engineering systems by Sundar Dorai-Raj (above), exciting new work serializing R to run over Flume by Karl Millar (below left), and tips for better R code by Olivia Lau (below right).
By Olivia Lau and Murray Stokely, Google’s R Intergrouplet

J2ObjC: A Java to iOS Objective-C translator

Thursday, September 13, 2012

We are proud to announce the open source release of J2ObjC, a Google-authored translator that converts Java source code into Objective-C source for iPhone/iPad applications.

J2ObjC enables Java code to be part of an iOS application's build, as no editing of the generated files is necessary. The goal is to write an application's non-UI code (such as data access, or application logic) in Java, which can then be shared by Android apps, web apps (using GWT), and iOS.
J2ObjC is not a Java emulator, but instead converts Java classes to Objective-C classes that directly use the iOS Foundation Framework.  It supports the full Java 6 language and most of its runtime features that are required by client-side application developers, including exceptions, inner and anonymous classes, generic types, threads and reflection. JUnit test translation and execution is also supported.  J2ObjC can be used with most build tools, including Xcode and Make.

You can go to the J2ObjC project page for instructions on how to use the tool, check out the source code and view the list of reported issues.  The site also has detailed design docs for anyone interested in how the translator works.

By Tom Ball, Google Engineer, Mountain View

A Summer in Crystal Space

Wednesday, September 12, 2012

For the seventh year in a row Crystal Space, an open source 3D Engine, has participated in the Google Summer of Code program. In previous years we had great success stories, but this year has exceeded all of our expectations.  Below is a brief description of each of the seven student projects, some of which are continuations of student projects from previous years of Google Summer of Code.

Deferred Rendering
Matthieu Kraus worked on improving the deferred renderer in Crystal Space by cleaning up the deferred render pipeline and integrating dynamic shadows using Cascaded Shadow Maps. He also added deferred lighting and deferred shading.

Extensions to the cseditor Framework
A continuation of a Google Summer of Code project from 2007, Andrei Bârsan’s project was to create the base tools needed for the automated generation of a graphical user interface, and then to apply and test those tools on an object that had always strongly lacked a way to be manipulated: the particle mesh. The goals of the project were achieved and for the first time it is possible to modify particle systems easily and dynamically.

Improved Physics in Crystal Space with Bullet
Dominik Seifert continued revamping the Bullet-based physics engine in Crystal Space, a project started last year by another student. Dominik did much more than just improve the physics engine: he refactored it, pulled it apart, put it back together, and added a lot of new features and improvements. He worked on implementing handling of kinematic and dynamic actors, better coupling of rendering and physics parameters and objects, and more work on portals. He also added support for simple vehicles and physically more accurate particles.

Improving Support for Water Bodies
One of our most graphically oriented projects (together with deferred rendering) was the improvement of water bodies. Naman Gupta managed to fix several bugs in the ocean system, implemented reflection and refraction and implemented support for shorelines.

Virtual File System v2: Modular and Extensible Redesign of VFS
In Crystal Space we have a VFS plugin (Virtual File System) which takes care of loading and saving data transparently to archives and the regular file system. Our student, Touko, spent the summer cleaning up, refactoring the code, committing code and fixing some serious issues like buffer overflows with the old VFS plugin.

Lighter2 Improvements
Lighter2 is an application in Crystal Space that calculates static lightmaps for a level. The tool is quite complicated so this is the second year that we had a student work on the project. This year’s student, Steel Style, was mentored by the student who worked on the project last year. Steel implemented Sector Grouping, Lighter2 configuration option simplifications, and improvements in the packaging of the light maps. His work on Sector Grouping made light map computing faster by a factor of 5x-10x on the sample maps, an astonishing speedup.

Updating Behavior Trees, Recast & Detour and the Life-Sim Demo
Sam Devlin worked on several different tasks in his Artificial Intelligence-oriented project: improving the behavior trees that Sam actually created himself during a previous Google Summer of Code edition, improving the path-finding system that is the result of two other previous Google Summer of Code projects, and improving the demo and tutorial applications for these tools. There is still a lot of work that still has to be done, but all of these tools are now finally usable.

At the end of the program the students spent a lot of time cleaning up their code, writing documentation and some of them even started helping us with the merging of their respective subversion branches into our main development branch. We believe that the experience for our students has been a good one and hope that what they have learned this summer will be valuable for them in the future. Several of the students expressed interest in continuing to work with Crystal Space and there was a lot of very useful code produced. All in all, a really good experience!

By Jorrit Tyberghein, Crystal Space Organization Administrator

Helping the World to Teach

Tuesday, September 11, 2012

In July, Research at Google ran a large open online course, Power Searching with Google, taught by search expert, Dan Russell.  The course was successful, with 155,000 registered students.  Through this experiment, we learned that Google technologies can help bring education to a global audience.  So we packaged up the technology we used to build Power Searching and are providing it as an open source project called Course Builder.  We want to make this technology available so that others can experiment with online learning.
The Course Builder open source project is an experimental early step for us in the world of online education.  It is a snapshot of an approach we found useful and an indication of our future direction.  We hope to continue development along these lines, but we wanted to make this limited code base available now, to see what early adopters will do with it, and to explore the future of learning technology.  We will be hosting a community building event in the upcoming months to help more people get started using this software.  edX shares in the open source vision for online learning platforms, and Google and the edX team are in discussions about open standards and technology sharing for course platforms.

We are excited that Stanford University, Indiana University, UC San Diego,,, Swiss Federal Institute of Technology in Lausanne (EPFL), and a group of universities in Spain led by Universia, CRUE, and Banco Santander-Universidades are considering how this experimental technology might work for some of their online courses.  Sebastian Thrun at Udacity welcomes this new option for instructors who would like to create an online class.  We believe Google’s preliminary efforts here may be useful to those looking to scale online education through the cloud.

Along with releasing the experimental open source code, we’ve provided documentation and forums for anyone to learn how to develop and deploy an online course like Power Searching.  In addition, over the next two weeks we will provide educators the opportunity to connect with the Google team working on the code via Google Hangouts.  For access to the code, documentation, user forum, and information about the Hangouts, visit the Course Builder Open Source Project Page.  To see what is possible with the Course Builder technology register for Google’s next version of Power Searching.  We invite you to explore this brave new world of online learning with us.

By Peter Norvig, Director of Research

Who’s New in Google Summer of Code 2012: Part 5

Friday, September 7, 2012

For the fifth Friday this summer, organizations participating in their first Google Summer of Code discuss their projects and some highlights from their students’ work.

The City of Bloomington is a strong supporter of community source, open source, open standards and open data.  We have been a leader in the adoption of Open311, an open standard for managing non-emergency service requests from constituents such as filling potholes, removing graffiti, replacing street lights, etc. Our Google Summer of Code projects have helped us expand our existing suite of Open311 tools which includes a lightweight CRM with Open311 API and an iOS Open311 client. These projects and others can be found in the Code for America Commons.   
GeoReporter for Android
Prior to joining Google Summer of Code, we had completed an iOS Open311 client but desired an Android version as well. Fransiska Putri Wina Hadiwidjana approached Bloomington through the email list. Her interest in Open311 led her to our Open311 Toolkit and she asked if we would consider participating in Google Summer of Code. Fransiska wrote our Android version of the app. We owe Fransiska not only for her work product this summer, but for making our whole experience with Google Summer of Code possible as it would probably not have occurred to us to make this leap without her nudging. She introduced changes that streamlined our user experience and her source code will be the foundation for a full release in Google Play later this year. Her user interface improvements will be back ported to the iOS app as well. 
GeoReporter for Kuali Mobility for the Enterprise
Kuali Mobility for the Enterprise (KME) is a framework for building mobile tools. KME is a JQuery Mobile and PhoneGap platform using HTML5, CSS3, and JavaScript with native wrappers to provide features that are not yet available via web programming. The City of Bloomington and KME partnered this year to mentor a Google Summer of Code project to build an Open311 KME tool. The City is considering KME for its mobile web platform and needs Open311 capability to make this move.  
Aashish Mittal worked on KME GeoReporter. Aashish had worked previously with the Sakai Open Source Project, also under the Kuali banner. He started learning the KME framework and researching the Open311 specification and from there helped define a better approach to web service usage in KME itself. His work in this area will pay dividends for all KME tools. After working on the web services refinements, Aashish built the Open311 tool and completed the web service integration with the City of Bloomington's Open311 API. The outcome and final product will now be integrated back into the KME SVN trunk and become available worldwide for anyone using the KME framework. 
This has been an inspiring experience for us and we hope it motivates other city governments to embrace the economy of open source software. We look forward to additional ways to apply all that we have learned this summer. Many thanks to the Google Open Source Team and to Google Summer of Code for this rewarding partnership. 
By Rick Dietz, Director of Information & Technology Services and Google Summer of Code Administrator, City of Bloomington, IN
Sage is an open source mathematical software environment that aims to provide everything that mathematicians, scientists, researchers, and students need for their work or study. The basic philosophy of Sage is to combine many established software packages under one umbrella, but to also implement powerful and unique algorithms in its own library.
For Google Summer of Code our project ideas encompassed a wide range of topics, ranging from low-level coding to advanced and highly abstract mathematics, and also non-mathematical proposals to improve the user-interface. The following is a short summary of our student’s projects. 
Lina Kulakova -- Polynomial factorization over finite fields 
Lina worked on implementation of fast algorithms for polynomial factorization over finite fields. She implemented three different algorithms: basic Cantor-Zassenhaus, Berlekamp, and Kaltofen-Shoup. For automatic choice of the best algorithm, she wrote profiling code for two polynomial modules. Now both modules for small and large characteristics have three factorization algorithms and a function that chooses the best one for each given polynomial. 
Titus Nicolae -- Faster symbolic expressions
The aim of the project was to improve the performance of Pynac. Pynac is a fork of GiNaC to support direct linking with Python, and is the primary library for symbolic expressions in Sage. The project involved writing wrappers to the underlying arithmetic libraries to replace the current Python types provided by Sage. Titus defined a suite of tests for benchmarking future releases of Pynac. Now he is working on implementing a wrapper for rational number types by using FLINT as a backend and he will soon implement the other number types. 
Jan Pöschko -- Lattices and Voronoi cells
Jan created a framework for lattices. Since lattices arise in many different areas of mathematics such as algebra, geometry, cryptography, and coding theory, it is good to have one common place to put in various lattice algorithms. During the summer, Jan also wrote code for calculating the Voronoi cell of a lattice. This is a core algorithm that supports many other algorithms, including an algorithm to solve closest vector problems, which he also implemented. 
We congratulate all three of our students and their mentors for successfully completing their ambitious projects!
By Harald Schilly, Sage Google Summer of Code Organization Administrator
To date, we have spotlighted 14 of the new organizations participating in their first Google Summer of Code this year. We will start posting more Google Summer of Code wrap-ups from returning organizations next week.

By Stephanie Taylor, Google Open Source Programs

Discoveries made during a Summer of Coding at CERN

Thursday, September 6, 2012

Google Summer of Code can be the most interesting, challenging and at times frustrating thing you have ever done. The most important thing that I learned while applying was that it is not about how much you know, but more about how much you are willing to learn and how dedicated and genuinely interested you are in your project. This summer I worked with a toolkit called 'Geant4' which is maintained and used by the European Organization for Nuclear Research (CERN) to improve radiation transport simulations. Every time I think about that last statement, I have to pinch myself to make sure it wasn't all just a very elaborate dream.

Every year almost 200 students from around the world are selected to go to CERN to work on an internship over the summer. This mix of engineers and physicists are joined by around 15 students from another program called the CERN Openlab and this year the people at the Openlab graciously invited me to work on my Google Summer of Code project at CERN.

The question most people want to ask when they find out I’ve been to CERN: Did I see the Large Hadron Collider? The whole ring is underground and no one is allowed near it when it is running because of the amount of radiation it emits. The four major detectors that collect data in CERN are Atlas, CMS, LHCb and ALICE. The 'big' ones which announced the results of the Higgs boson discovery on the 4th of July were Atlas and CMS. These are more general purpose as compared to LHCb and ALICE which are smaller in size but meant for more specific purposes.

For me, this was by far the most incredible summer ever! I am extremely grateful to all the people at the CERN Openlab and the people in charge of Google Summer Of Code 2012. If not for their enormous patience in answering all of my questions and requests, this summer might have just passed me by like any other. Instead, now I can tell people that for two years they were searching for the Higgs, and a fortnight after I went there, we found it. Too much of a coincidence, don't you think?

By Dhruva T.B., CERN Google Summer of Code 2012 student

Wicked Good XPath: a faster JavaScript XPath library

Tuesday, September 4, 2012

We are proud to release Wicked Good XPath, a Google-authored pure JavaScript implementation of the DOM Level 3 XPath specification. We believe it to be the fastest XPath implementation available in JavaScript.

To use Wicked Good XPath, simply download the wgxpath.install.js file and include it on your webpage with a script tag. For example:
<script src="wgxpath.install.js"></script>

Then call wgxpath.install() from your JavaScript code, which will ensure document.evaluate, the XPath evaluation function, is defined on the window object. To install the library on a different window, pass that window as an argument to the install function.

Despite the growing popularity of CSS selectors, XPath remains a useful mechanism to locate elements in an HTML document. It has particularly heavy usage in the context of frontend web testing tools like Selenium and Web Puppeteer. Sometimes there is simply no way to reference an element on the page other than with an XPath expression.

For those who have never used XPath, here is a taste:

On a Google search results page, the XPath expression //li[@class=”g”][3] identifies the third search result. Here is a snapshot from the Chrome extension XPath Viewer showing the third result selected when that expression is used.

A key challenge when using XPath, however, is that it is not natively supported on every browser. Most notably, Internet Explorer does not provide native XPath support for HTML documents. As a result, users turned towards pure JavaScript implementations of XPath. In 2005, Google engineers released AJAXSLT, which included a correct, but slow, XPath evaluator. Running web tests on IE using AJAXSLT was time-consuming.

Fast-forward to 2007, Cybozu Labs released JavaScript-XPath, a new JavaScript XPath implementation that was 10 times faster than AJAXSLT. The web testing tools began using it instead, and life was good... for a while. The JavaScript-XPath quickly fell out of maintenance, and bugs became tough to get fixed. Also, since it wasn't written in Google Closure, it was tricky for us Googlers to integrate into our JavaScript applications. A rewrite was necessary.

However, we went beyond merely porting the library to Google Closure and fixing a couple bugs. We identified some significant additional performance improvements, such that our version runs about 30% faster than the original. On top of that, the Closure compiler was able to minify our code down to a mere 25K, 40% smaller than JavaScript-XPath's 42K. Finally, the code is structured and documented in a way that we believe will make future maintenance quicker and easier.

We would like to thank our two Google interns, Michael Zhou and Evan Thomas, for doing the bulk of the development on this project.

By Greg Dennis and Joon Lee, Google Engineers