Google has now announced the 24 winners for Google Code-In 2014, with Josef Gajdusek and Puck Meerburg being the two winners from Haiku. This is Puck's second time winning for Haiku. This year we got to pick our top 5 out of the top 10 students who completed that most tasks for Haiku. Augustin Cavalier was selected as our backup winner, and Markus Himmel and Chirayu Desai were selected as finalist. Chirayu was a GCI 2013 winner with RTEMS, and made the jump to Haiku when RTEMS took this year off from GCI.

This was the fifth year of Google's Code-In, and the fifth for Haiku. This year we had 6 students who completed 20 or more tasks, one more than in 2013. We had 36 students who completed three or more tasks and qualified for a Google Code-In T-Shirt, and 53 students who completed two or more tasks. This was the first year of having beginner tasks, aimed at lowering the bar to get more new students introduced into open source. Haiku had 149 total students complete at least one task, many of those were for the beginner tasks. We had 164 beginner tasks completed, which was mostly just to introduce students to booting and using Haiku. Other beginner tasks were to compile Haiku or to install and use Haikuporter to build a package from a recipe file. In total students completed a staggering 435 tasks this time for Haiku.

As you may have noticed if you watch the commit list closely, my libbind work has not been merged yet. There are still some bugs to solve there, but I got sidetracked. I use BReferenceable in my DNS cache implementation to keep track of the cache entries. BReferenceable is a class used in Haiku to implement reference counted objects. In C++, the language only has very simple memory management, in the form of the new and delete operators. Objects can be allocated on the stack (they are temporary and only last as long as the function they are declared in is executing), or on the heap (for long lived objects). Objects allocated on the stack are deleted automatically when the function exits, while objects allocated on the heap must be deleted manually. This is one of the annoying parts of C++: managing the lifetime of these objects, making sure they are deleted only once, and that no one will try to use them after deletion.

Not much commits from me this week, as I'm still working on the libbind update, and I'm also doing some work for other customers. I got netresolv to build after implementing the missing getifaddrs function in Haiku - this is a non-POSIX function, but it is available in Linux and all major BSDs. It enumerates all network addresses for all network interfaces on the system, similar to our BNetworkRoster and BNetworkInterface classes.

I have not given any news from the Google Code-In for some time. It ends this week, and students have completed more than 400 tasks for Haiku. While this includes a lot of simple tasks (the simplest "getting started" ones involved just booting Haiku and running StyledEdit), it means the students at least got to see what Haiku is. We have a more complete set of recipes in haikuporter waiting to be packaged.

Since the last time, I've put a bit more work into improving the expression evaluator that was started as part of the sprint. Since some of its new capabilities are likely to be useful to others, and might not necessarily be obvious from simply reading the commit list, I thought I'd elaborate on them a bit here.