Posts from February 2013

Compress Data More Densely with Zopfli

Thursday, February 28, 2013

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–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.

By Lode Vandevenne, Software Engineer, Compression Team

A Summer of Code for Science

Friday, February 22, 2013

For our second year participating in Google Summer of Code, Computational Science and Engineering at TU Wien successfully mentored nine students. A total of 37 mentors from five different faculties worked with the students, sharing their passion in their area of research.

Tim Jerman was working on a RAW loader for He successfully improved and extended the RAW processing with an additional post-processing that reduces chromatic noise. His image manipulation toolbox allows users to enhance their images manually, including gamma correction, exposure compensation, and saturation manipulation.

Fedor Morozov implemented HDR imaging for that allows for displaying, reading, and writing the most common HDR file formats such as .hdr, .exr, and .pic. In addition, he added a converter for creating HDR images from multiple LDR images.

Jan Kis worked on the parallelization of OpenPixi, a physics simulation for electromagnetic plasmas. A large part of the work was devoted to designing a parallel scheme for exchanging field and particle information between neighboring nodes of the simulation. Parallelization was implemented in Java using the IBIS portability layer project. The new framework allows for various types of boundaries including hard wall and periodic boundary conditions. The good performance of the final code was demonstrated on the Vienna Scientific Cluster.

Benjamin Venditti and Thomas Perl made fantastic progress on the MoveOnPC project. They implemented a library for tracking multiple PS Move controllers robustly on multiple platforms (Windows, Linux, Mac and Meego). Now a variety of cameras can be used (PS Eye, webcams, up to HD 1080p cameras) for optical tracking. Various language bindings (C, Python, Java, Processing and C#) provide flexibility in the use of the developed PS Move API. Benjamin Venditti focused on the computer vision part of the project and implemented a robust color calibration and optical tracking algorithm with OpenCV. His developments are described on the MoveOnPC blog. Thomas Perl focused on reading and fusing sensor data, hardware programming, and implementing all language bindings and creating examples. His progress is documented on this MoveOnPC project page, where his master thesis summarizing his work on the MoveOnPC project is available.

Joseph Boudou worked on the Skeptik project improving and developing state of the art algorithms for the compression of propositional resolution proofs generated by automated deduction tools, particularly SAT-solvers and SMT-solvers. He has become a regular contributor to our project, and his work has been so successful that the results of his work are going to be submitted to a major conference.

Harald Hofstätter implemented a server for the upcoming interface standard, OPC Unified Architecture (OPC UA). By integration into the Monitoring System Toolkit a number of software tools can now access data of sensors and actors in buildings in real-time.

Volodymyr Kysenko worked on a GPU-accelerated solver for the generalized eigenvalue problem in ViennaCL. He also contributed code for computing the singular value decomposition of a matrix and presented a paper about work, that was initiated during Google Summer of Code 2011, at the NLDB 2012 conference in Groningen.

Alexander Kowarik worked on integrating C++ code for the R package sdcMicro. Because of his work, now all methods of this state-of-the-art package on statistical disclosure control are well optimized to work on large data sets. In addition, he revised the point-and-click interface of the package so that also non R-users have the possibility to anonymize their data.

All of us at TU Wien were very pleased with the progress our Google Summer of Code students made, and wish them every success going forward.

By Karl Rupp, Computational Science and Engineering at TU Wien Organization Administrator and team

Some small talk with ESUG

Friday, February 15, 2013

ESUG (the European Smalltalk User Group), had an exciting and challenging Google Summer of Code with 10 students who successfully completed their projects. The students worked on many kinds of projects using different implementations of Smalltalk like Pharo, Squeak or Amber, ranging from end-user applications to VM improvements. This year's Google Summer of Code has indeed been a big boost for our open source community, besides all the new projects and contributions (and contributors!) to our project, this year we also mentored twice the number of students than ever before.

We also started to improve the visibility of the new projects to the community and the integration of the students with the rest of the developers, asking them to write blogs on their work and publish screencasts and news about their projects in the mailing lists. It's been a good experience compared to our last Google Summer of Code in 2010, but we hope to improve this even more in a future instance of the program.

We would like to invite you to take a look at our passing students' projects this year:

Interactive and Social Smalltalk Tutorial (by Facundo Mainere)
When the summer started, the Smalltalk community didn't have a place to promote their language to new coders in social networks. SmalltalkTutorial offers a game-like way of learning the language basics by integrating the user achievements in social networks like Facebook, Twitter and Google+. Besides a cool tool for newcomers, it's a nice project to illustrate what can be done with Smalltalk web technologies such as Amber (a Smalltalk implementation written in Javascript).

TestSurgeon (by Pablo Estefo)
TestSurgeon is a tool for the Pharo environment which monitors the execution of unit tests and collects data on what is being tested and how it is tested. The TestSurgeon's screencast shows how it provides a test similarity metric and a visualisation for refactoring and restructuring tests.

Esse (by Paul Kuzovkin)
Simply put, this is a framework for building presentations of a new generation. The emphasis is on brainstorming, presenting and sharing ideas. The demo screencast of Esse might remind you of a Prezi presentation, but with the possibility of editing and evaluating Smalltalk code while the presentation is running.

Improving Nautilus (by Benjamin Van Ryseghem)
This project was about improving the new System Browser for Pharo. Nautilus' demo shows the capabilities of the new browser, such as accessing a project's code repository from the packages list in one click, changing between different views of the classes in the system and interacting with a browsing history.

Hazelnut (by Guillermo Polito)
Pharo has an image-based development environment, as we can read in Guillermo's blog. The current image that is being used has been inherited from much older implementations of Smalltalk, and it's time to deconstruct it in order to build a new and better one. Hazelnut is a project for bootstrapping Pharo's image, that means that it's able to generate smaller subsets of that system that may be used to reproduce the complete one, and therefore it will help to understand the current image architecture, how it can be improved, and help to build a new one from scratch. Hazelnut won 2nd place in the 9th Innovation Technology Awards at the conference ESUG 2012. Take a look at the demo.

Call Graph - Type Inference (by Santiago Bragagnolo)
A popular property of Smalltalk is that it is a dynamically typed language and it does type checking on run-time. When programming, it could be useful to know the type of expressions we write, like when we do code refactors, or browse for senders of a message, or even when documenting. In Santiago's blog we can find a detailed diary of this project that enables concrete type inference in this dynamically typed environment.

Tanker (by Martín Dias)
Tanker is a project that aims to avoid recompiling code each time you import a package. It uses binary serialisation and materialisation of packages to avoid compilation time. You can watch Tanker's demo.

Rizel (by Juan Pablo Sandovar)
The Rizel application is designed to monitor global performance across different versions of a software. This project helps the developer answer questions like "How has performance evolved over time?" and "Which software version is the cause of a drop in performance and why?" You can find examples on Rizel’s website and also view this screencast.

ARM JITter for Squeak VM (by Lars Wassermann)
The Squeak VM is the dynamic virtual machine used for many open source software projects like Scratch, eToys, Pharo, the Newspeak language, the innovative web framework Seaside, and many others. CogVM is a development of the Squeak VM which adds a powerful Intel x86 JITer. The CogVM JIT has significantly improved the performance of the open source Smalltalk projects which have adopted to use it. The goal of this project was to add simple ARM JITing capability to the CogVM to significantly increase the performance of popular Smalltalk software running on ARM platforms, such as the Raspberry Pi, the Beagle Board and the computers of the one-laptop-per-child project. To get to the achieved milestones of this project refer to Lars' review.

HMI (Human-Machine Interface) with Amber (by Rustem Khubbatov)
A framework for building Human-Machine Interfaces with a Pharo back-end providing model, and a presentation front-end in Amber. You can view the screencast here.

We congratulate all of our students for their great contributions, and we also want to thank the mentors who worked with them last summer. We hope you find these projects as interesting as we do, and feel free to check The World of Smalltalk for following our mailing lists and news, as well as our ESUG Google Summer of Code website.  Many thanks to Google for supporting Smalltalk for yet another summer and we look forward to participating again in Google Summer of Code 2013!

By Carla Griggio, ESUG Organization Administrator

Melange:Tips and Tricks for Users

Wednesday, February 13, 2013

What happens when you “lock” 4 engineers and 4 program managers in a room together for 5 days? Besides a bunch of coffee cups, empty energy drink bottles, and a variety of healthy and non-healthy snack remnants, you get two books written to help users of Melange, the open source software that administers the Google Summer of Code and Google Code-in programs.

In January, Melange developers and members of the Google Open Source Programs Office (OSPO) collaborated on two books that we hope will help users of Melange understand the many functionalities of the software. The main purpose of this document sprint (by day 4 it was more like a marathon), was to help prospective students and open source organizations use the software efficiently and to its fullest capacity. All of us in OSPO also learned a ton about using the software as Program Administrators.

Our terrific facilitator, Adam Hyde of Floss Manuals, started the week off early Monday morning with a lengthy brainstorming session with well over a hundred post-it notes scattered on whiteboards in various categories. We started to see how the sections of the book would evolve and then we organized the post-its into our potential chapters. Then the writing began, and boy, did we write! The book is designed not only to answer questions, but to be a step-by- step guide for each role a person might encounter when using the Melange software. We created dummy accounts and took screenshots so that we could see everything a person in that particular role (mentor, student, organization administrator or program administrator) would see.

The first couple of days were spent writing, reading over each other’s work and adding to each other’s sections. When you have 8 people writing different parts of a book you end up with considerably different tones and many style questions.  One large whiteboard was covered with style decisions that we all agreed on, from whether to capitalize “Student” every time it was used to when to use italics versus quotes.

Throughout the week we posed questions to each other and filed bugs on software and UI issues. By Wednesday we had a pretty solid book that then needed to have copy edits and some additional screenshots added.  While part of the group worked on the edits and tweaks some of the Melange engineers worked on fixing many of the bugs and UI issues uncovered.
Having Melange engineers and users (OSPO team) in the same room going through the process from the student, mentor, organization administrator and program administrator perspective was enlightening to say the least.  The engineers were able to explain some features that we didn’t realize worked in a certain way, we all talked through bugs and additional ideas for features, and having the engineers working alongside us to fix and implement these ideas was awesome!

The Open Source programs office has hosted 2 other document sprints with the Floss Manuals team in the last 15 months but this was the first time we were the ones heads down with our noses to the grindstone.  The book sprint process is not for the faint of heart but having a solid book on our software that users can refer to (and the writers too!) is extremely satisfying and a great way to start off the new year.

If you are interested in the finished products you can view them online:  Melange - Google Summer of Code and our Melange - Google Code-in manuals. While you’re there, check out the other manuals that Adam and his team have helped create. Your project could be next!

By Google Open Source Programs team

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

Monday, February 11, 2013

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!

By Carol Smith, Open Source Team

A summer of freedom with KDE

Friday, February 8, 2013

Guest post written by Jigar Raisinghani, KDE Google Summer of Code 2012 student

KDE, a powerful graphical desktop environment for Unix workstations, started the Google Summer of Code 2012 with 60 student projects, of which 59 were successfully completed. Great efforts made by the students along with proper guidance and assistance by the mentors resulted in this impressive result. Students coming from different countries, backgrounds and interests worked together as a community developing a variety of applications including games, Office suite, social networking, and so on.

This year Google Summer of Code again helped expand KDE both in terms of members and code produced. The outcome of the program was tremendous, resulting in the development of many applications. Lets take a quick look at the 59 projects.

  • For the music player Amarok, Zhengliang Feng integrated spotify, Lucas Lira Gomes introduced functionalities for social music, Riccardo Iaconelli helped improve the user experience, Phalgun Guduthur worked on implementing the semantics and Matěj Laitl worked with statistic synchronization of pluggable devices. 
  • Calligra, the office suite, was worked on by 9 Google Summer of Code students. Smit Patel integrated the bibliography engine along with UI to manage citations in Calligra Words. Shrikrishna Holla implemented wraparound mode, Shivaraman Aiyer added perspective drawing and Francisco Fernandes introduced a sandpainting brush in Krita. Paul Mendez modified shape animations in Calligra Stage, Nityam Vakil improved Open Formula support while Jigar Raisinghani built Pivot Tables for Calligra Sheets. Brijesh Patel improved the saving of charts to Open Document and Abhishek B S improved Formula shape. 
  • From the Accessibility team, Yash Shah helped improve the speech recognition in SIMON using computer vision and Vladislav Sitalo implemented SPHINX support in SIMON.
  • During the summer, the photo management program, digiKam, received attention from A Janardhan Reddy who developed a video slide show generator, Smit Mehta implemented an UPnP/DLNA plugin, Dominic Lyons improved integration of Photivo and Mahfuzur Rahman Mamun introduced face recognition. Islam Wazery revamped the import tool, Dodon Victor ported KIPI-Plugins and libkipi to KDE XML-GUI and Abhinav Badola built the support for video metadata. 
  • For the 2D game engine, Gluon, Vinay Rao implemented a saving/loading game engine state, Shreya Pandit introduced context action based layout and improved the UI in Gluon Creator and Ganeshprasad T P integrated Bullet. Claudio Desideri designed a website that lets game designers using Gluon collaborate on their games and he then integrated it with KDE applications.
  • The text editor, Kate’s VI’s, input was further improved by Vegard Øye, and Maximilian Löffler worked toward making scripting possibilities more user friendly. 
  • On the game development side, Viranch Mehta ported kde game to QML/Qt Quick, Roney Gomes worked towards porting games to a more modern graphics framework and Avnee Nathani ported KDiamond to Qt Quick. 
  • For the IDE, KDevelop, Miquel Sabaté improved the Ruby support and Miha Čančula added functionalities to the template system. 
  • On the education front, Percy Camilo Triveño Aucahuasi with a nearly two year effort, designed and implemented a replacement for KmPlot. Samikshan Bairagya added features to make KStars more usable to beginner astronomers and Rishab Arora improved data storage, logs and added DSO catalogs to KStars. For Marble, Bernhard Beschow introduced an OpenGL mode, Cezar Mocan improved the atlas by introducing Natural Earth Vector Map and Ander Pijoan implemented OpenStreetMap vector rendering with tiling support. Martin Küttler introduced a new interface for Cantor.
  • For the cloud storage, ownCloud, Deepak Mittal spent the summer collaborating inter ownCloud instances and Alessandro Cosentino introduced a feed aggregator. 
  • With Plasma Desktop, Sinny Kumari provided advanced features and enhancements for Plasma Media Center, Martin Klapetek integrated social services with KDE Workspaces, Luís Gabriel Lima ported Plasma widgets from C++ to QML, and Giorgos Tsiapaliwkas worked towards getting the plasmate released. Davide Bettio ported Plasma calendar to QML, Arthur Ribeiro ported the plasmoid’s user interface to QML, Antonis Tsiapaliokas integrated KWin with Plasmate SDK and Amandeep Singh introduced Focus tracking in KWin. 
  • On the social side, Pankaj Bhambhani built facebook integration for microblogging client choqok, Lasath Fernando introduced the message filtering plugin system in Telepathy, and Eli MacKenzie introduced modularized, server aware IRC protocol handling for Konversation.
  • Lisa Vitolo extended Solid API for partitioning and built a Dolphin plugin for using it, Anant Kamath improved hard disk health monitoring and ISO file management features in KDE, Felix Rohrbach wrote the OCS specific JSON parser in Attica and Mailson D. Lira Menezes introduced tile based rendering in Okular page view. In a project continuation from last year’s program, Cyril Oblikov implemented asynchronous errors handling during file transfer.

The first time students see Google Summer of Code as an opportunity to gain experience and contribute to the open source community while the sophomores (second timers) clearly demonstrate the success of the program in retaining students. Students have the opportunity to interact with experienced mentors and mentors get to interact with enthusiastic students, a relationship resulting in a lot of code being written and a beautiful summer for all. Most of the code generated as part of the program is either integrated, under review or being worked upon. The students, as they write themselves, are satisfied by the outcomes of the program in terms of fun, experience and the hefty paychecks. I hope the students stay with the community, keep contributing in the future and, if possible, participate again in the Google Summer of Code program.

By Jigar Raisinghani, Google Summer of Code 2012 Student

Google Code-in 2012 Grand Prize Winners... Drumroll Please!

Monday, February 4, 2013

We are thrilled to announce the 20 grand prize winners of Google Code-in 2012, a contest designed to introduce teenagers to the world of open source software development. Congratulations to all 334 students from 36 countries who participated in the contest, completing 1,925 tasks.

Each of the 10 open source mentoring organizations that worked with the students during the contest chose 2 students to be their organization’s grand prize winners based on the students’ comprehensive body of work during the seven week contest period.

Students are listed alphabetically (by first name) with their country and the organization that they worked with during Google Code-in 2012.

Agustín Zubiaga, Uruguay - Sugar Labs
Akshay S Kashyap, India - BRL-CAD
Aleksandar Ivanov, Bulgaria - RTEMS
Aneesh Dogra, India - Sugar Labs
Aviral Dasgupta, India - Sahana Software Foundation
Cezar El-Nazli, Romania - BRL-CAD
Conor Flynn, Ireland - Apertium
Drew Gottlieb, United States - Copyleft Games Group
Illya Kovalevskyy, Ukraine - KDE
Liezl Puzon, United States - Sahana Software Foundation
Mathew Kallada, Canada - RTEMS
Matthew Bauer, United States - The NetBSD Project
Mingzhe Wang, China - The NetBSD Project
Mohammed Nafees, India - KDE
Nina Satragno, Argentina - The Fedora Project
Przemysław Buczkowski, Poland - Haiku
Qasim Iqbal, Canada - Apertium
Samuel Kim, United States - Copyleft Games Group
Vladimir Angelov, Bulgaria - Haiku
Ze Yue Wu, Australia - The Fedora Project

Congratulations Google Code-in 2012 Grand Prize Winners!

These 20 pre-university students completed an impressive 576 tasks ranging from annotating face recognition for disaster response efforts to creating videos and screencasts to teach others about the organization’s software to writing scripts to develop MySQL tables. In late April, the grand prize winners will be flown to Google’s headquarters in Mountain View, California, USA along with a parent or legal guardian for a four night visit.  During the trip the students will have the opportunity to participate in an awards ceremony, meet with Google engineers, have a full day of fun exploring San Francisco, and make new friends also interested in open source development.

A couple of quotes from the mentors that worked with this year’s Google Code-in students:
'They're surprisingly motivated, excited to contribute, genuinely interested, and productive to boot. Initial estimates indicate we may get years worth of work done and one student has already earned commit status, two others are getting close.'  -- Sean Morrison, BRL-CAD Organization Administrator and Mentor, two weeks after the start of the contest 
‘One of my favorite quotes, one you probably have seen before, from a student: "this is my first patch to an open source project"’ -- Walter Bender, Sugar Labs Organization Administrator and Mentor
And that is what this contest is all about, introducing students to the many ways that they can contribute to open source software development. An enormous thank you to all of the students, IT teachers, parents, mentors and organization administrators who made the Google Code-in 2012 a success!

By Stephanie Taylor, Open Source Programs Office