Posts from December 2015

Stay in touch with RememberMe

Friday, December 18, 2015

Occasionally on the open source blog we feature the personal projects of Googlers. Today we hear from Blair Kutzman, whose loss inspired the creation of RememberMe, an open source email reminder tool.

On June 2, 2014 my cousin Jeremy Monnett was killed in a plane crash. He left behind his two sons, Miles and Brooks, and wife Kate.  As much as we look to explain events like these, they unfortunately can happen at any moment and to anybody.
RememberMe is an open source project I created in memory of Jeremy that helps people keep in touch. The basic premise is simple — at a configurable interval (eg. daily, weekly, monthly, etc) an email arrives in your inbox reminding you to contact someone. The reply-to field on the mail is set so that replying will send your response to your loved one.

The loss of Jeremy reminded me of just how important it is to keep in touch with the people you love the most. I hope that by making this project public, others will create email address for young children, spouses, and journal their daily thoughts and daily activities. This provides a fabulous way both to chronicle their lives, and also share your daily thoughts.

Please check out the project on github and enjoy!

By Blair Kutzman, Google Engineering

MusicBrainz’ Gelato Summit 2015

Tuesday, December 15, 2015

MusicBrainz is an open music encyclopedia maintained by a global community of users, collects metadata and makes it available to the public. The team just wrapped up their annual summit in Barcelona, sponsored in part by the Google Open Source Programs Office.

From October 30th through November 1st, the MusicBrainz Summit 15 took place in Barcelona, Spain. All of the MetaBrainz employees were there in addition to a handful of contributors from our community — two lead developers of BookBrainz, a long-time volunteer developer on MusicBrainz and the lead of AcousticBrainz. Between us, we represented seven countries and nine languages.
Talking around the table.

We managed to cover a lot of ground on serious topics including how to avoid data/MBID loss, how to version data, dealing with record labels, unresolved style issues and integrating the various Brainz projects a bit better. The official notes for the summit are stored in a public Google Docs document. Feel free to read through and contribute your own comments.

Our group has discussed releasing the translations of MusicBrainz for years — but this time we actually did it! It is now available in English, German, Dutch and French. At some point in the not-too-distant future we will also enable the translation of all of our documentation.

We also used this time together to talk about how and why MBIDs get lost and what we can do to prevent this. As part of this discussion, we decided to make more edits “autoedits” for all users. The goal is to have shorter queue of open edits (although there has been a significant drop in open edits since mid November) but also to avoid losing MBIDs once they have been generated. More in depth discussion of our reasoning and some of the community’s response can be seen in the server release blog post and its comments.

Most of our time was productive, but you cannot visit a city like Barcelona and not enjoy the surroundings. In addition to the more obvious local sights, we were introduced to an amazing gelato place within walking distance from our summit. It’s definitely worth a visit! A MusicBrainz summit would not be complete without copious amounts of chocolate. A huge thank you to our attendees for supplying Ritter Sport direct from the factory!

Finally, a big thank you to Google and Spotify for helping to fund this meeting. It would have been a lot harder to bring all these people together from around the world without their (continued, no less!) support. Here’s to 2016 and summit 16.

By Frederik “Freso” Sandberg, MetaBrainz Community Manager

Raising Sweet C++ Cane for Well-Dressed Animals

Wednesday, December 9, 2015

To celebrate the holiday season at Fun Propulsion Labs, we're trading our sushi mats and baking pans for candy canes and snowballs. Please join us for a special holiday-themed version of Pie Noon and Zooshi! Zooshi and Pie Noon are open source, cross-platform games built from a suite of libraries that eager C++ developers can use to build their own projects.

You can download and run Zooshi's Santa mode on Google Play and find the latest open source release on our GitHub page. The holiday version of Pie Noon is available on Google Play as Snowdown in Santa Tracker and on our GitHub page. Happy Holidays!

By Stewart Miles, Fun Propulsion Labs*

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

Google Code-in: may the source be with you

Monday, December 7, 2015

For the sixth year running, starting today, teens from around the world will have the chance to learn and develop new CS skills by competing in Google Code-in (GCI). By working on real software projects—with help from mentors along the way—students just starting out with Computer Science can begin to investigate and discover the countless opportunities at their fingertips through code.

During the seven weeks of Google Code-in, pre-university students (ages 13-17) can browse hundreds of tasks created by 14 open source organizations. Students then get to choose the tasks they find most intriguing. A wide variety of skills and interests are required to make any software project work, so the tasks in Google Code-in are designed to reflect that diversity. Students can choose to work on projects across documentation, coding, training, research, quality assurance, user interface and outreach tasks.

The 14 organizations students can work with during the contest encompass many fields: health care for developing countries, learning activities for elementary students, desktop and portable computing, the encouragement of young women in computer science, game development, to operating systems used in satellites and robots.

Each task has at least one mentor assigned to it - not only to review the student’s work, but to help answer questions along the way. Each organization also offers beginner tasks that give students who are newer to open source development an easy and clear place to get started.

Another goal of the contest is to encourage students to find a coding community that they enjoy working with and hopefully become an active contributor for years to come.

Contest open screenshot.png

Over the last 5 years, over 2,200 students from 87 countries have successfully completed tasks by participating in Google Code-in. To celebrate CS Ed Week this year, please help us introduce even more young minds to open source software development through Google Code-in. To learn more about Google Code-in—including rules and FAQs—please visit the site and the Getting Started Guide.

By Stephanie Taylor, Open Source Programs

Google Summer of Code wrap-up: LabLua

Friday, December 4, 2015

LabLua is a lab at PUC-Rio dedicated to research on programming languages, with emphasis on the Lua programming language. Lua is a powerful, fast, lightweight, embeddable scripting language that is used in many industrial applications and on several embedded systems and games.

This was our second year in Google Summer of Code (GSoC) and we feel our six completed projects made for a very successful outcome. Five of our projects were selected from our Ideas List, and one was proposed by the student herself! It was great to not only see students contributing code to the project, but to witness their enthusiasm for project design as well. Below are some brief highlights of this year's projects:

Port Lua Test Suite to NetBSD Kernel (Guilherme Salazar)
The Lua interpreter was initially ported to the NetBSD kernel during GSoC 2010, allowing users to write kernel extensions using Lua scripts. During GSoC 2015, Guilherme worked on porting the Lua test suite to the NetBSD kernel. He adapted test scripts to eliminate dependencies on floating-point numbers and the operating system itself.

Guilherme also ported and reimplemented part of the Lua standard libraries (e.g., math and io) for satisfying test dependencies. Moreover, he found important bugs on the Lua kernel port.

Elasticsearch Lua client (elasticsearch-lua) (Dhaval Kapil)
Elasticsearch is a distributed and scalable search engine written in Java that, besides its native transport protocol (Java to Java), offers a very complete REST API accessed through JSON. Dhaval built elasticsearch-lua, an initial client for the Lua language following a model similar to other existing clients, such as the clients written in Python and PHP.

Dhaval had the freedom to decide how to model the object oriented API and how to build tests during development. With elasticsearch-lua, programmers can now access most Elasticsearch functionalities, such as index, read, update, delete and search documents.

Port an SDL-based C++ open source game to Céu (Alexander Tkachov)
Céu is a programming language that targets the development of reactive applications such as video games. It features first-class support for events and parallel compositions for lines of execution. For this project, we wanted to port an open source game of considerable size from C++ to Céu.

Alexander chose the game Pingus (a Lemmings-like game for Linux) with a codebase of around 40k lines of code. An important requirement of our project was to do a "live port" of the game, in which the game remained fully functional while portions of it were ported to Céu and the rest remained in C++. In this project, Alexander faced two main challenges: applying the Céu idioms to the new code and keeping the old C++ code working across the language boundaries. Even though the code base was too big for a 3-month period, Alexander was able to port around half of the game, including its core (i.e., the game levels).

Add support for WSDL generation to LuaSOAP (Victor Dias)
LuaSOAP is a library to ease the use of SOAP, the Simple Object Access Protocol. It provides a very simple API that converts Lua tables to and from XML documents. It offers two modules to help providing (server) and consuming (client) SOAP services.

Victor developed a module to help the generation of WSDL (Web Services Description Language) documents for the services implemented by the server. This new module traverses the service description (a Lua table, built by the programmer by hand, because Lua doesn't have this kind of information) and produces the WSDL description for it. This new module will be integrated into the next version of LuaSoap.

Design of TIER encoding and its implementation in Lua (Lukas Borin)
TIER is an experimental language-independent binary encoding format, designed by this project's mentor, similar in purpose to formats like XML, JSON and Google's Protocol Buffers. TIER is designed to optionally support self-describing encodings that include meta-information about the serial structure of the encoded data; this meta-information can be used to support dynamic verifications or automatic decoding.

Lukas improved TIER's design and also wrote the first implementation of a Lua library that provides support for TIER encodings. He also wrote TIER's basic documentation and some tutorials on its usage. The TIER library supports custom mappings of the various TIER serial structures to specific Lua values. On top of this custom mapping support, Lukas also developed some predefined mappings for usual Lua values and a framework to facilitate the creation of mappings for usual Lua structures, such as sequences, maps, sets, etc.

Improvements to the Sailor Web Framework (Etiene Dalcol)
Sailor is an MVC web framework for Lua. Its distinguishing feature is that it easily lets the programmer write Lua code for running both in the server and in the browser. It was created by Etiene Dalcol, and she submitted a project proposal to us with a series of planned improvements.

During GSoC 2015, she worked on three fronts for improving the framework: the first was a better test suite, the second was better documentation for the project, and the third was a series of improvements for the feature of running Lua code on the browser, with the possibility of having Lua code in the browser request new modules on demand from the server, and breaking the original dependency on also having node.js installed on the server.

All of the GSoC contributions are already committed to the Sailor project repository at Github, and the test suite is already part of Sailor 0.4, the latest public release of the project.

By Ana Lúcia de Moura, Adjunct Professor at PUC-Rio and LabLua Administrator