Posts from November 2014

Getting ready for Code-in: notes from BRL-CAD

Tuesday, November 25, 2014

The Google Code-in contest starts on December 1st for students. To prepare and inspire students, Christopher Sean Morrison, a dedicated mentor and organization administrator from BRL-CAD, talks a bit below about his experience with GCI over the last few years.


BRL-CAD has participated in Google Code-in (GCI) for two years now, and it’s been amazing to see the frenzy of creativity and aptitude. Our community alone has had the pleasure of introducing more than a hundred students to the world of open source software. The students’ contributions get used all around the world even though many of these students had never heard of open source or computer-aided design (CAD) before they started on GCI. With GCI, they get to explore at their own pace, learn while they are completing real world tasks, and make genuinely useful contributions to open source projects.

One great outcome of GCI is that students work as a team, often unknowingly, to achieve a complicated objective that has been broken down into piecemeal tasks. One example involved creating a scene like you might see at the beginning of a movie or a game: a half-dozen students modeled individual letters, others organized them into a scene, and a final rendering was made.  Another involved several students that unknowingly made BRL-CAD run much faster on Windows: they implemented various routines independently of each other, created test cases to demonstrate that functions worked correctly, and documented their improvements while others worked to tie it all together. Both examples might have taken even an experienced contributor weeks or months by themselves. GCI students earn recognition for these accomplishments and their work gets used by others.

For our BRL-CAD community, these young eager individuals have tackled and completed more than four hundred tasks related to computer graphics, 3D modeling, design, science, and mathematics. Some of these tasks helped our open source community grow while challenging right-brain creativity: students have designed new t-shirts, created YouTube tutorials, written blog posts, and modeled our logo for marketing materials (including the one shown above). Other tasks improved BRL-CAD by employing left-brain analytical thinking: students wrote code to fix bugs, improved websites, wrote technical documentation, and calculated 3D volumes, surface areas, and centroids.

There’s really something for everybody and every skillset. We’re excited to see what GCI 2014 will bring!

By Christopher Sean Morrison, BRL-CAD Organization Administrator and Mentor

Google Summer of Code Wrap up: ns-3

Friday, November 21, 2014

Today’s Google Summer of Code wrap up comes to us from Tom Henderson at ns-3, a discrete-event network simulator developed for research and educational use.

The ns-3 network simulation project creates and maintains open source software for conducting performance evaluation of computer communications networks. Widely used in networking research and development activities, ns-3 is aimed towards the academic community involved in publishing original research, as well as towards educational use in undergraduate and graduate courses on computer networking. In 2014, the project mentored four students through Google Summer of Code (GSoC).

Piotr Gawłowicz: LTE Fractional Frequency Reuse algorithms

Piotr worked on algorithms for LTE Fractional Frequency Reuse. Mobile phone systems need to use radio spectrum very efficiently, particularly in managing interference. The ns-3 project has extensive LTE modeling capability which was initiated by a GSoC 2010 project. This year, Piotr extended the ns-3 LTE module to support a relatively new strategy for balancing interference mitigation and spectral efficiency known as Fractional Frequency Reuse (FFR). In addition to the FFR model code, Piotr delivered extensive corresponding test code, documentation and examples. He even fixed some LTE module bugs, developed several additional features (such as downlink and uplink power control and per-Resource Block Radio Environment Maps), refined the model for channel quality indicators, and refactored the power and interference calculation code. Piotr's code was merged to the mainline development tree in time for the September 2014 ns-3.21 release.

Rubén Martínez: Licklider Transport Protocol

Computer networks built for operation in outer space differ significantly from those found here on Earth. The propagation and networking delays for signals sent beyond the Earth may be as long as minutes or hours, confounding traditional systems accustomed to millisecond response times. Delay-Tolerant Networking (DTN) can be applied to these types of networks, and a specific protocol known as the Licklider Transmission Protocol (LTP), similar in purpose to the popular Transmission Control Protocol (TCP) used on the Internet, is designed to reliably deliver data across these types of links.

In his GSoC project, Rubén authored a model of LTP from scratch for inclusion in our future DTN module. This model includes about 5000 lines of new code and is being tested for interoperability against other implementations of LTP by using the ns-3 emulation mode which allows the simulator to exchange data with real protocol implementations. Rubén's model will soon help open up the use of ns-3 for space data networking research.

Truc Anh Nguyen: Understanding bufferbloat through simulations in ns-3

Bufferbloat refers to a phenomenon where network performance (latency, packet jitter, throughput) is diminished due to packet buffers at the ingress of a congested link becoming too deep. New "active queue management (AQM)" approaches help minimize packet transit times in congested queues. Anh’s project focused on addressing the known problems and testing the then-unreleased ns-3 CoDel queue model originally proposed by Andrew McGregor and Dave Taht. The revised CoDel model, test scripts, and example programs were included in the recent ns-3.21 release, and variations that build on this model are planned for future releases.

Krishna Teja: Multicast IPv6 traffic support

In his GSoC project, Krishna developed the Multicast Listener Discovery Version 2 (MLDv2) functionality for IPv6 in ns-3’s Internet module. The code is completely new, closely matches Internet RFC 3810, and (when merged) will be automatically enabled for any IPv6 node. Thanks to MLDv2, each router is made aware of the multicast groups that each attached host is interested in and can dynamically reconfigure its routing table. The protocol is part of an ongoing effort to enhance the multicast routing support in ns-3 for IPv6.

By Tom Henderson, ns-3 Organization Administrator

Coding Android TV games is easy as pie

Wednesday, November 19, 2014

(cross-posted with the Android Developers Blog)

We’re pleased to announce Pie Noon, a simple game created to demonstrate multi-player support on the Nexus Player, an Android TV device. Pie Noon is an open source, cross-platform game written in C++ which supports

  • up to 4 players using Bluetooth controllers.
  • touch controls.
  • Google Play Games Services sign-in and leaderboards.
  • other Android devices (you can play on your phone or tablet in single-player mode, or against human adversaries using Bluetooth controllers).

Pie Noon serves as a demonstration of how to use the SDL library in Android games as well as Google technologies like Flatbuffers, Mathfu, fplutil, and WebP.

You can download the game in the Play Store and the latest open source release from our GitHub page. We invite you to learn from the code to see how you can implement these libraries and utilities in your own Android games. Take advantage of our discussion list if you have any questions, and don’t forget to throw a few pies while you’re at it!

By Alex Ames, Fun Propulsion Labs at Google*

* Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

GSoC Reunion Recap with Magdalen Berns

Tuesday, November 18, 2014

To celebrate the tenth year of Google Summer of Code (GSoC), we recently welcomed over 500 people who’ve participated over the years to a special Reunion event. We’d like to share a few recaps of the event from the perspectives of students and mentors who joined us from 50 different countries. Today’s summary comes from Magdalen Berns, a student participant in GSoC 2013 and 2014.

The GSoC Reunion was a really great experience for me. I traveled from Edinburgh for the event. It was wonderful chatting with so many different FLOSS enthusiasts all in one place and I made lots of new buddies who I’ll definitely keep in touch with.

On the first day, Google rented out a theme park for a few hours, letting us go wild. We successfully fought the urge to be sick on the rides as they spun us around. Afterward, we were invited to the San Jose Tech Museum where we got to listen to Linus Torvalds speak about the qualities of good code. The museum’s exhibitions were very interactive and I especially liked the one which demonstrated how ice hockey protective equipment is designed for goalies. I hadn't realised how sophisticated it is!

An "unconference" was held across Saturday and Sunday, and I really enjoyed the sessions I attended. For those who have never been to an unconference, it’s much more interactive than a typical conference talk. People ask questions and make comments throughout, making it a discussion. It’s definitely a format I can get on with!

One conversation which had begun around ending misogynistic trolling on internet dating sites got really interesting because it quickly developed into two groups who were each keen to address sexism from different angles. One group focused on online sexism and the other on sexism at conferences and other events. The latter group went on to discuss establishing a universal code of conduct available for FLOSS projects to adopt if they choose, while the former group considered developing software to deal with abuse on IRC. Everyone got so engaged that we chatted until the notetaker's wrists were sore from 2 or 3 hours of typing. It was incredibly heartening to see so many men who are interested discussing these issues in one place. I have never seen anything like that before in my life! It takes quite a lot of objectivity and emotional intelligence to be able to stand up for the rights of a group you aren’t part of.

Another session was led by a Googler and we discussed the potential pitfalls of publishing work in the public domain. Laws vary widely around the world, and there are places where the work may unintentionally remain under copyright protection. That is a compelling reason to use free or open source licenses. There have been few landmark court cases since FLOSS licensing came along, so it’s difficult to be certain what things will mean in practical terms. That session made me quite interested in learning more about copyright law.

On Sunday, there was a talk on The GNOME Foundation’s Outreach Program for Women (OPW) which was well attended. I learned that projects have to demonstrate their commitment by finding funding for a student before they can take part. I think that is a good idea, but it is a shame that there are not more sponsors available so smaller projects can get involved. Hopefully as OPW continues successfully helping women get started in open source development, more companies will step forward as sponsors.

I am always keen to talk about accessible software, so I initiated an unconference discussion on the topic in one of the rooms. Although that session was not well attended, those who were there had a lot to say and were very engaged with the idea of establishing a common interest group for accessibility developers. Get in touch if that sounds interesting to you too.

Finally, we got to visit the Google Headquarters on the final day of the reunion. We didn’t get to tour inside the offices, but I at least got a peek at the famous indoor slide… Maybe next time I’ll get a chance to go up to the top.

By Magdalen Berns

Lovefield: a powerful Javascript SQL-like database query engine for the web

Monday, November 17, 2014

Today we are announcing the release of a powerful library to be added to the arsenal of every web developer's toolbox. Since WebSQL standardization efforts ceased in 2010, there has been no cross-browser relational database solution for web clients. Existing persistence solutions such as IndexedDB and LocalStorage fall under the category of object-oriented storage and therefore lack traditional relational database features.

Lovefield is finally closing that gap by providing a feature rich database query engine built using IndexedDB as a backend. It provides an intuitive SQL-like declarative syntax such that developers can pick it up with minimal effort. Its declarative form provides immunity to SQL injection attacks, since there is no query parsing involved. The feature list includes:

  • select, insert, update, delete queries.
  • atomicity with intuitive transaction semantics (unlike IndexedDB’s surprising auto-commit behavior).
  • integrity constraint checks (primary key, unique, nullable/not-nullable).
  • aggregators (count, min, max, sum, avg, stddev, distinct)
  • "group by" for select queries.
  • multi-table join
  • easier schema upgrade mechanism than IndexedDB.
  • cross browser support (Chrome, Firefox, IE10).

On the performance front, Lovefield includes a query optimizer which will evaluate different execution plans and finally pick the most promising. We are confident that current performance will satisfy the majority of use cases (less than 50k rows) and we plan to further improve the performance for larger datasets in the near future.

Lovefield’s vision is captured in this specification document and we are working to provide some more exciting features such as foreign keys, cascaded delete/update, self-table join, observers/data-binding, in the near future.

Lovefield is already successfully powering a few Google services, including Google Play Movies Chrome app. With this open source release we are hoping to enable the development of data-rich applications and to attract interest and feedback from developers which will allow us to better understand how to move forward.

By Demetrios Papadopoulos, Chrome team

Google Summer of Code Wrap up: Point Cloud Library

Friday, November 14, 2014

Today’s Google Summer of Code wrap up comes from Federico Tombari at the Point Cloud Library project, a 2D/3D image and point cloud processing framework.


For the third year, the Point Cloud Library (PCL) organization has been a participant in Google Summer of Code. We had the opportunity to mentor 12 students who spent the summer developing projects related to 3D computer vision and robotic perception.

This year, I had the pleasure to mentor two students: Manuel Gesto and Jilliam Diaz Barros. Manuel worked on porting a recent algorithm (proposed last year at the ICRA conference by Karphaty et al.) related to object discovery. The idea is that a robot can wander around a room or a building, reconstruct the surrounding environment through Kinect Fusion techniques and then try to extract interesting parts - possibly objects - out of this 3D representation without an explicit training set. Manuel worked well in implementing on his own a segmentation method that was required for the algorithm. Jilliam worked on stereo matching techniques. She implemented two state-of-the-art algorithms, one focused on efficiency and the other on accuracy, which will enrich the stereo module already present in PCL. Also, she validated her work with a comprehensive experimental evaluation using benchmark datasets.

Alex Ichim from our organization worked with Andrei Militaru, a BSc student in Computer Science from Jacobs University in Germany. We looked into efficient representations for head models in the context of face reconstruction using RGB-D devices such as the Microsoft Kinect. In order to counteract the heavy noise and missing data from this kind of camera, we employed the concept of statistical face models (first introduced by Blanz and Vetter at Siggraph ‘99). To demonstrate this, we built an application that uses live data from the camera, registers and integrates it into a point cloud using the Kinect Fusion implementation in PCL; in parallel, another thread uses the data and fits the statistical model to it, yielding a low resolution face model that updates in realtime as more views of the actor are acquired.

Markus Schoeler was another student working with us this year. His project consisted of two sub projects, namely implementing the Locally Convex Connected Patches (LCCP) algorithm and a shape generator. The LCCP algorithm was published on this year’s CVPR conference and aims at segmenting a scene into objects and parts (by tuning parameters, you can "select" the desired level of detail). The shape generator puts special emphasis on giving users full control of how they assign labels in scenes. This makes it possible to easily create annotated data and decide how coarse the segmentation should be.

Federico Tombari, Organization Co-Administrator, Point Cloud Library

Geometry Math Library for C++ Game Developers: MathFu

Thursday, November 13, 2014

(Cross-posted with the Google Developers Blog)

Today we're announcing the 1.0 release of MathFu, a cross-platform geometry math library for C++ game developers.  MathFu is a C++ math library developed primarily for games focused on simplicity and efficiency.

It provides a suite of vector, matrix and quaternion classes to perform basic geometry suitable for game developers.  This functionality can be used to construct geometry for graphics libraries like OpenGL or perform calculations for animation or physics systems.

The library is written in portable C++ with SIMD compiler intrinsics and has been tested on Android, Linux, OS X and Windows.

You can download the latest open source release from our GitHub page.  We invite you to contribute to the project and join our discussion list!

By Stewart Miles, Fun Propulsion Labs at Google*

*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

Get the scoop on the Mentoring Organizations for Google Code-in 2014

Wednesday, November 12, 2014

We are excited to announce the 12 open source projects that will be acting as mentoring organizations for the Google Code-in 2014 contest that starts December 1st. The contest is designed to introduce 13-17 year old pre-university students to open source software development, giving them the opportunity to take the skills they have been learning in the classroom (or on their own) and apply them to a real software project. These open source projects have experienced mentors available  all have participated in Google Summer of Code in the past with many also participating in previous years of Google Code-in.

GCI-2014-with border.jpg

Before the contest begins, students should read up on the different mentoring organizations participating this year by clicking on the links below.
Apertium - a platform for making rule-based machine translation systems
BRL-CAD - a computer aided solid modeling system
Copyleft Games Group - promotes players’ rights to create, play, modify, and share games
Drupal - a content management platform
FOSSASIA - a non-profit organization supporting developers and makers of the Free and Open Source community in Asia
Haiku - an operating system, fast and simple, inspired by BeOS
KDE -  a powerful graphical desktop environment for Unix-like workstations
Mifos - a non-profit org that brings technology-enabled financial services to the poor
OpenMRS - a medical records system platform for developing countries
Sahana Software Foundation - humanitarian open source disaster management software
Sugar Labs - a learning platform that reinvents how computers are used for primary education
Wikimedia Foundation - MediaWiki and extensions, powering Wikipedia and thousands of collaborative websites

Organizations will provide a list of tasks for students to work on during the contest in the following categories: coding, documentation, user interface, quality assurance, outreach, research, and training. Each task has at least one mentor assigned to it to help students should they have questions.  

The mentoring organizations are all busy working on identifying hundreds of tasks for students to chose from when the contest starts on December 1st. This year there are also beginner tasks available for students which are a great way for students to start working with the organizations and get a more complete understanding of the projects right away.

Starting on Monday, December 1st at 17:00 UTC, students that meet the eligibility requirements can register on the Google Code-in contest site and start claiming tasks and earning prizes.

For important contest information please check out the contest site for Contest Rules, Frequently Asked Questions and Important Dates.  We have a screencast about the contest available to view on our program site where you can also find flyers and other helpful information including the new Getting Started Guide. You can also join our announcement and discussion lists to talk with other students, mentors and organization administrators about the contest.

Students, join in the fun – Google Code-in starts Monday, December 1st!

By Stephanie Taylor, Open Source Programs