github twitter email

One Laptop Per Child is an education project which aims to distribute child-friendly, rugged laptops loaded with educational software to rural, underserved populations.


From 2007 through 2009 I spent all of my spare time developing educational activities to run in Sugar, the OLPC desktop environment. Some of these activities became part of the default install, and one was featured in a documentary about rural education.

Since having a family of my own, and in part due to the temptations of trendier side project opportunities, it’s been a long time since I worked on anything for the OLPC XO.

My 4/17/2009 year old occasionally uses the XO-4 to run educational Android apps; a dishonor it bears with remarkable grace, and my 9/9/2012 year old has adopted the XO-1 that I wrote these activities on as his personal laptop.

Looking back, these tiny apps are one of my prouder accomplishments and I sometimes wish I had spent more time on this side-branch of my career.

While the Sugar desktop environment has been eclipsed in its ambitious, idealistic goal of resetting the human computer interface, it did predict and implement changes which became ubiquitous in mobile user interfaces such as iOS and Android.

And as an educational project, it has been successful in getting computers loaded with educational software into the hands of a whole lot of children.

What follows are some of the activities I developed or contributed to…


In the spring of 2007, OLPC held a game jam at Olin college. Being in Maine at the time, I decided to attend and the result was this 3d Pong game called Bounce.

Given the relatively weak hardware of the XO-1, I thought it would be surprising and impressive if kids could see something running in 3D, even if wireframe.

Also, this seemed like a nice hackable starting point for kids who want to learn Python.


A cool hardware feature of the XO-1 was a combination capacitive touchpad / pressure sensitive stylus by ALPS Electric.

Excited by the idea of a Wacom tablet in every laptop, I quickly set out to port the Nintendo DS Homebrew superstar Colors! to the XO. The author, Jens Restemier, was even kind enough to give me access to the source code as a starting point.

Unfortunately, the tablet hardware failed to work in practice and was removed from later models, leaving Colors! with nothing but a trackpad or USB mouse.

I later added support for real Wacom tablets (if enabled in the kernel) and even toyed with Kinect-style image painting.


There’s plenty of emphasis on creativity and exploring in Sugar, but there’s not as much emphasis on practice.

I’m not a professional educator, but I do believe in balancing the exploration of new ideas with consolidating one’s meager grasp of the fundamentals. Like pushing the right button with the right finger.

Also, the faster they can type, the more exploring they can do, right? So, I put together a simple XO take on the standard issue typing tutor, called Typing Turtle.

It was a fun project, though it was a surprising amount work to come up with a system to teach advanced character sets like Nepali (नेपाली).


WikiBrowse is a compressed slice of Wikipedia articles, including images and all formatting. In just 98MB of data, the Spanish version packs in 30,000 articles and 3,000 images.

Briefly, the activity launches a local webserver, which dynamically decompresses articles as MediaWiki markup from a giant bzip2 compressed file. The article is translated to HTML in memory before being served to the client, which is an embedded Firefox browser.

You can read about the extremely rapid development at Chris Ball’s blog.

For my part, the work took place while I was supposed to be optimizing Call of Duty: World At War. I eventually got my act together and did my part to get that one out the door..

WikiBrowse was featured in a documentary Web. At around 1:10, a little kid talks about using our software to learn about the world.


As the XO was being sent to lots of rural places, I figured parents might find the laptops useful too, perhaps having their older children teach them how to use them.

I eventually had the idea to write a mini-Quicken activity called Finance that would help people track simple income and expenses.

Finance was a very quick project, completed in just a few weekends.

While it’s had over 40,000 downloads from the activity portal, reviews are decidedly mixed.



Last but not least, the tweaks I made to the Sugar Terminal app are dear to my heart.

Sugar activities are intended to be stateful, meaning that each time you start them, they resume (as best as possible) in the state they were left in.

With Terminal, this manifested as saving tab configuration, scrollback history, and working directory in the activity state file and restoring them on launch.

A few years later, this behavior was introduced into a more prominent terminal application, though not everyone was happy about it!

OS X Lion Terminal screenshot

Looking back, it was gratifying to be able to develop and publish small, useful applications that were entirely of my own design, without any of the bullshit of the now-ubiquitous mobile app stores.

Thanks OLPC for some great side projects.