I've decided I want to give a talk on OLPC at Brown at the beginning of the semester. I've been pretty involved in OLPC over the summer and it seems like the sort of thing that some Brown people might be interested in.
So what should I talk about? I think I want the talk to be basically an overview of the project: explaining the driving ideas of the vision, demoing the hardware and software, showing photos of kids actually using the thing, and ideas for how to get involved.
I will most likely be giving the talk through BLUG, the Linux User Group at Brown. As such, I will be talking about Linux and Free software as a major part of the OLPC philosophy. But I don't want to focus on the Linux aspect...
Here's my structure proposal: first show the laptops off to get people's attention. Use slides with photos of the interesting hardware components so people can see them up-close, and show at the same time pictures of students in Nigeria and Thailand using them. So the first section is "What it does." The second section is "Why?" -- philosophical discussion of the reasons behind the organization, what good it does people to do such-and-such. At this point we can talk about educational mission (Constructivism), Free software, and also do demos of the activities that show how awesome these ideals really are. Collaboration is a very important one, here, so I would like to have everyone in front of a computer so that they can all play using the software.
The third section is the "get involved" section. I guess I can show some source code here and say 'yes, you can edit this, and it will ship'. I will provide a handout (?) or email with links to useful websites, git source checkouts, and presentation notes. And I will describe the full spectrum of use people can be -- kernel and activity hacking, testing, art, distribution, even donations... there's a lot that OLPC can benefit from.
Of course, there is also the 'get your hands on a laptop' part where people can come up at the end and play with my demo machines. Unfortunately I only have two, so there will be a lot of waiting and not that much playing. Nonetheless, I want to give people an opportunity to see and play with the laptops, so maybe I can lend them to people for days at a time, or something. I don't know.
posted at: 22:08 | path: /olpc | permanent link to this entry
It's an education project, not a laptop project. That's the catchphrase pasted all over the website, and is the one-liner that they use to explain the mission to people who wonder, "why are we trying to provide laptops to a bunch of people who don't even have enough fresh water or food for their village?"
However, nobody is claiming that education is a bad thing. The OLPC organization believes, and has convinced me, that these laptops are going to allow for paradigm shifts in education the likes of which we've never seen, and that these changes have the potential to be massively beneficial to students worldwide.
Why do I believe this? Crazy? Maybe. But let me try to impart some of the vision that I've grown to share. It's Creative Writing Time...
Let's visit a rural village in northern Thailand. You are walking down a dirt road in the Thai wilderness in summer; grasses are brown. Palm trees, exotic frangipani, and miscellaneous brush adorn the valley. The sky is deep blue and the weather is hot but not too humid.
Entering the village center, earth and timber constructions squat in a clearing, straw roofs draped with care, doors beckoning in the breeze. Young children and adults peek carefully at you through open doors and windows, and you smile as you trudge through the dust, your digital SLR camera jarring against your chest, a reminder of how different your world is. The schoolhouse, a one-room building, sits prominently at the end of the road.
You prepare to pad delicately into the class in session, but as you
crack the door you hear music and laughter. Children are sitting in a
circle, green-and-white laptops in front of each. The teacher is tapping
out a quick beat on a traditional sort of drum held between his legs.
The children are playing music on the laptops by pressing keys, and each
seems to have a different instrument. The m&eacut;lange is uncoordinated
and tinny from small speakers but still sounds surprisingly good. The
children giggling and laughing, the teacher tries to conduct while
playing the drums, but he misses beat and the notes dissolve into
chaos.
OK, it's time for science, the teacher informs everyone. He looks at the door and sees you, waves, invites you along. The children close their laptops with distinctive clicks and gather them up. They tie their shoes and line up behind the teacher, heading out into the fields for a biology lesson.
The objective this week is to catalog living things on the hillside. Yesterday, the students guessed that there were between 30 and 40 different kinds of plants and animals in the area; today they are going in the field to photograph as many different species as they can, and for the rest of the week, they will sort and categorize the photographs. Each student has a camera built into the laptop, but they all work in pairs. Barely staying in the line bursting at the seams with excitement, they follow the teacher as he explains the week's schedule to you, walking down the road, then left along a path that leads up the hill, into a forest and then a clearing. The teacher instructs the students to stay in sight, but lets them wander as they may.
You follow a pair of students, who rush towards a type of
tree that produces a very large leaf, eager to be the first to
photograph it. One student lays her laptop down and picks a leaf, then
holds it out for the other to photograph. They take several photos of
the held leaf, then turn towards the tree that produced it. Before
putting it down, the girl holding the leaf realizes that it can be used
as a background for other photos of smaller objects, so she carries it
around with her. Many laptops are lying in dirt, carried carelessly, and
you wince when one girl drops hers from waist height because she sees a
tiny flower that nobody else has seen yet, and bends down to examine it.
Why did you wince, you wonder. You instinctively hate to see kids treating this wonderful technology like a textbook or backpack -- you can't help but map it to "laptop" which connotes expensive and fragile. But that's wrong: the laptop is a simple tool for learning, meant to be taken with you everywhere and used exactly how the kids treat it: as a textbook, and a backpack, and a notebook, pen and paper, all those things that kids carry around, and more besides. It's not some foreign technology to be revered.
Later, the kids will share their photos on the ad-hoc mesh network. They'll use the blackboard to put the different plants in a category, and the collaborative Write activity to construct a picture catalog of today's activities. They'll select the best photo or two of each species from the ones the student has taken. Eventually they can print the catalog, or even publish it on the Internet, and compare it with the catalogs that next year's students will create. Would any of this have been possible without the laptops? Potentially: with notebooks, students could take prints, or draw likenesses of different species, and then copy the drawings or paste them into a paper catalog. But being able to take a photo just like that allows them to focus on the differences and similarities of the species rather than the effort of taking samples, and allows more time and more accuracy in the comparison of species. And the collaboration features are a very nice bonus.
Maybe this little narrative has given you a few images of what I am envisioning with these little green plastic devices. The biggest difference I can envision is making learning more fun and more interactive. And that is a recipe for lessons that tend to stick around.
This story is basically fictional, but it is based on the images and photos from Ban Samkha, a Thai village in which there was a recent OLPC trial.
posted at: 12:13 | path: /olpc | permanent link to this entry
I've been working this summer on the One Laptop Per Child project. We do all our coding in Python, and I'm interested in game development, so my project was to help make game development for the platform easy to do, and the natural choice for Python game development is Pygame.
If you just run a Pygame app on the device, you get annoying behavior, and you don't get nice integration with the existing applications. The Sugar HIG requires the app to be wrapped as an "activity" and to have a certain toolbar at the top of the screen, and plenty of other things. So I've worked this summer on getting all those integration details worked out.
The most interesting thing is definitely the networking code. Here's an overview:
First, each laptop has two wireless cards. One card can be associated to an access point while the other talks to other laptops in the area directly in mesh mode (no infrastructure). In fact, the system is set up so that if one laptop can see the AP and another laptop, and the second can't see the AP, the second can get online (have its packets routed) by the first. This is all done dynamically and behind the scenes, which is super cool.
Each XO laptop when it's online resides within a certain neighborhood of other XOs. The neighborhood is defined by the aggregation of two sets of XOs: the set connected to the presence server, and the set that is "link-local" -- i.e., can be discovered via broadcasting on the local subnet. The presence server is an interesting beast itself -- it will contain the names and addresses of every XO that's online that it knows about, and each XO is configured to contact a certain presence server when it is activated. (Right now they all contact a central one at laptop.org HQ, so pretty much every laptop in the world appears in the same neighborhood.)
Now, here's the exciting part. Every Activity is mandated to have a Share button on its toolbar. When you click Share, the activity appears as an icon in the Neighborhood that you belong to. Now, anyone else can click on that icon, and they join that activity: the idea is that you are collaborating with everyone else who is joined to that particular activity. As people are joining activities, they appear "clustered" around the activity icon, as shown in this concept shot.
Now, this is all just barely starting to come together. But it's an incredibly cool concept -- collaboration on anything, at any time. The lower-level framework for this collaboration is actually in place and in need of debugging, but the basic principle works: when you click Share, everyone else sees your activity, and they can join it, and the activity launches on their machine (with your color scheme, 'cuz it's you who started it). The difficult part is the actual code within Activities to allow for effective collaboration, and this is the code that needs to be architected differently for each Activity.
We use D-bus for almost all our communications needs. Telepathy is the name of the text-layer communications protocol that resides on D-bus, and Tubes is the name of the data-layer protocol. When you join an activity, a Tube is (almost) automagically created for you. You just need to define the D-bus objects, methods, and signals, and send them flying across the Tubes in order to collaborate. And I've heard that some people have been working on a transparent "shared object" API so that if you're happy with asynchronous modification to your objects, you can just "share" them and changes are automagically shipped across the tubes.
For Pygame, I've selected a different system -- in fact, I must admit I've regressed a bit, down to the concepts of "send-message" and "broadcast-message". However, this is within the design philosophy of Pygame -- do what game developers expect. And in this case, game developers I think are used to that method of communication. You don't need to provide a UI in your Pygame game for presence or joining existing games, or anything. All you need to do is listen for a few new Pygame events. Because it's as easy as this: when the user shares your activity (either by clicking Share or by starting the game from the Neighborhood screen by clicking your icon), you get a CONNECTED event on the event queue. When somebody joins or leaves, you get JOINED and LEAVE events. When somebody broadcasts or sends directly to you, you get appropriate events. And you can asynchronously send any Pickleable Python object across (either broadcast to every participant, or send to a particular one) using simple method calls. I think -- hope -- that this is one of the easiest network interfaces for game development, and it was an incredibly easy API to construct using Tubes and D-bus and the underlying layer.
This is definitely one of the most exciting things about the XO laptop. It's an amazing project.
posted at: 01:11 | path: /olpc | permanent link to this entry