Wednesday, November 14, 2012

One Laptop Per Child: Here we go!!!!

About 3 weeks ago, my old high school friend Jenn showed up in San Francisco for the amazing OLPC summit, and kindly invited me along. I've been keen to contribute to the OLPC (One Laptop Per Child) foundation ( for a good 6 months already since I first was inspired towards their efforts back in March 2012. (See more details here: Anyhow, what better way to "learn about how to volunteer my time" than to just START DOING IT?! :)

Right off the bat, the organization and sheer quality of user documentation on the Sugar operating system is top-notch. You can see this is a SUPER pro effort. MIT, Fedora/Redhat involvement, "Sugar on a Stick" OS images along with very clear and surprisingly up-to-date Virtual Machine instructions. This stuff goes out of date all the darn time, and I was blown away to see a website with every installation detail totally up-to-date, old stuff deprecated... WOW. I don't ever see this good a job of deprecating old documentation and keeping the instructions clean for new contributors. Amazing. Well done, folks :)

So why did I want to do this in the first place?

Well, I've wanted to contribute in some way or another for a while, really since the moment I saw this clip from Ridley Scott's film "Life in a Day". This is one of the most unexpected and beautiful clips of the film. Only 50 seconds long, and it's worth every second:

Wow that rocks. If you are also a Computer Scientist interested in Philanthropy and Education, I suspect you'll also hit the ceiling when you see that clip, just like I did. HOW did he get the laptop?! How is the world does he have access to Wikipedia?! How does he charge this laptop when he's living so far from a big city with large infrastructure?! The questions abound. But my one major "to do" I had after watching this clip... I NEED TO FIND OUT WHO IS DOING THIS, AND I NEED TO HELP. :)

Fast forward to a few weeks ago, and my friend Jenn (who is the Director of OLPC Canada) arrives here in SF for the OLPC summit and I attended and hung out with a bunch of amazing and inspiring people. It was glorious, inspiring, and awesome.

My CS brain started asking a lot of CS-y questions of the fine volunteers there: what platform is the OS? What are programs written in? What UI capabilities does the XO laptop have? How much hard drive space and RAM is there? What are our audio card and video capture capabilities? Where is data saved in the operating system? How do we write an application (called an "Activity") and how do you distribute those apps to the huge amount of XOs already deployed in developing nations? Everyone kindly answered my bazillion questions and off I went, jazzed up about contributing my skills in Linux Python development, UI interaction and design, and maybe even some Software Engineering leadership. That all would rock.

Guess what arrived in the mail yesterday?

My very own XO Laptop!

Checking out the video recording capabilities
This makes it a LOT easier to get excited about coding for the laptop now that I have one I can use. It makes it a lot better for testing/QA and also to use the actual camera on the device itself and test it's capabilities, so I know where I can push it and where I need to go with the flow. Good times.

The laptop arrived yesterday, and even though it was a stupendously busy day, I got home about 11:30pm and just started playing with it for a couple hours. It's a very exciting tool and you can see why kids LOVE it. There are some pre-installed activities on there, and I opened a bunch of them to get a feel for the expected common look-and-feel between apps and interop requirements and general features.

Tonight I got back from work, had dinner, and have then spent the past 5 hours playing with this awesome thing. My poor brand new iPad 4 is sitting sadly on the table while I enjoy the company of his much lower-cost, philanthropic cousin, the XO Laptop :)

After learning some more about the apps, I switched the laptop over to Gnome mode so I could explore the filesystem. I wanted to see where files were saved, and also verify some details about the movie files that the "Record" activity saves. (Yep, they are in .ogg format... so Open Source-y!) Switching to root user (and feeling very much like a "hacker"), I was able to peruse the Activity program launch folders themselves, and look at some of the code.

Gnome mode on the XO Laptop, running a standard Linux shell
Reading through some code for recording video
The professionalism and quality of this effort shines through in every detail. The code is tight and well managed, the apps are generally following the same look-and-feel guidelines, and integration of this "Neighbourhood" sharing idea is throughout the Sugar OS. It is great.

Particularly amazing is that they chose Python to be the language of choice for writing these applications, and I literally want to high five the person who made that decision. This makes my life about 100,000x easier as a software contributor for this program, and I'm just so psyched they didn't choose something absurd and computer sciencey or some laugauge that is complicated-for-the-sake-of-complicated just to prove some silly Computer Sciencey thing. I know enough CS peeps to know that this is a common issue, and it was a ray of glorious sunshine that they chose to use Python, literally my favourite language. I also believe Python to be one of the languages with the best inherent readability... so adding code to an existing codebase when it's written in Python is going to increase my productivity by like 10x. Good move, OLPC folks :)

So yes, there is some really powerful stuff here, and it's in Python which is a friggin' dream come true. The video recording is done with some open source libraries and some PyGTK code connected to Python backend. Beautiful. Not sure if there is any support for Qt (that would be awesome), but I can get by fine with GTK if not. I might investigate that though first before I really get my feet wet.

Then, instead of going to bed at a reasonable time (like I ever do that anyway), I spent some time on the Sugar Labs site ("Sugar" is the Linux distro used by the XO Laptop), reading and learning. There is a really interesting and fun-looking manual there, I think it was 150 pages. So I gotta drop that puppy on my Kindle or my poor neglected new iPad 4 so I can read that as I keep working on this OLPC stuff in the spare time I can scrounge together for it over the next while!

The website was great and helped me with some setup questions to get a Virtualized version of the Sugar OS running on my Windows machine via Oracle's VirtualBox software. This is excellent, as it'll allow me to use my main computer (and full-sized keyboard and mouse) for development which is a definite necessity, and I'll also be able to swing back to the XO Laptop to test. One other thing that is interesting is there is an idea of "Neighbourhoods" in the XO, and you can "Share" certain activities with other friends, which is awesome. So I want to keep that in mind in case I want people to be able to "Share" the results of the software I end up writing for the XO. I had  originally thought an "Upload to Youtube" option might be possible, but watching a few more videos about the remote areas where these laptops are used... it's probably wiser to just stick with their existing model of networked sharing amongst a peer group, rather than attempting to share Internet-wide. That said, it looks like I could probably subprocess off a Google API call to package up a .ogg file and send it off to Youtube as a video upload... that would be pretty awesome if it worked. And who knows, maybe some schools have more active internet and it sure would be cool if OLPC could see some more of the video projects that kids are making around the world.

XO network and my Windows machine running Sugar and logging into the same network
Chatting between my Virtualized Sugar OS and my XO Laptop!!
This rocks. I'll be sure to post more stuff as I continue to investigate the capabilities of the XO, learn more about the Sugar OS, and ultimately write some code for this laptop that I hope to one day get deployed far and wide around the world. So psyched to be jumping into this. I really believe in the cause, and it's so awesome that I have skills I can contribute.


Jennifer Martino said...

Mike Jutan, you are my hero. Best blog post ever. And the idea of kids being able to upload their videos to youtube??? How brilliant is that??? Might be some privacy issues there... but definitely something to think about! I guess they could do that on any other computer so why not the XO.

Can't wait to see where you take this... and to take you to a school in Canada where they actually use the machines! :-)

Unknown said...

Thanks for the upbeat post. Sorry not to have seen you at our recent Saturday (olpc-SF) meeting. The next one is December 8th.

Mike Jutan said...

Thanks Alex! I'll make a note of the date for the December one, looking forward to chatting some more!

Unknown said...

Very informative and well written post! Quite interesting and nice topic chosen for the post.

Toshiba - Satellite Laptop / AMD E-Series Processor / 15.6" Display / 3GB Memory - Black

Toshiba - Satellite 15.6" Laptop - 4GB Memory - 640GB Hard Drive