If One Laptop per Child started today…

Last month at JSConf Iceland, I presented a retrospective on One Laptop per Child and forecast of future education technology. After spending time in the field and reading up on learning-to-code initiatives, this feels like a kind of master’s thesis So yes, it’s long, but hopefully insightful.

I got to deliver this talk (video here) at an amazing event, JSConf Iceland. The organizers were generous and thoughtful. Also, in case you didn’t know, Iceland is beautiful beyond words.

Unfortunately if you’re reading this online, you won’t have an OLPC laptop to play with during the talk. :-(

For some background, I got one of One Laptop per Child (OLPC)’s laptops, called the XO-1, through a give-one-get-one program at the end of 2007. During college I was writing Python and JavaScript code for mapping and spreadsheet apps, and between 2010 and 2013 I was a traveling teacher/teacher-trainer/coder in Uganda, Uruguay, Haiti, and the Marshall Islands.

I never got a check directly from OLPC, but instead worked or volunteered with local organizations.

When people spot me with the OLPC laptop, they generally ask, what happened to that? It was a major news burst when it came out, and then it disappeared from the public eye. But that initial launch phase was so groundbreaking and exciting for its time, that people remember it well.

To give you some idea of some ambitious it is, we need to step back to 2005.

Origins

The first prototype (then called the hundred-dollar-laptop) was announced at an event with Kofi Annan, Secretary-General of the United Nations, and Nicholas Negroponte, co-founder of the MIT Media Lab. You can see the green laptop concept, the general shape, and a handcrank for power. (The first run of laptops would use too much power for cranking to be effective. Later low-power versions can use it, but it’s a pain.)

At the time, laptops were expensive, fragile, and battery-hungry. Solid-state drives didn’t exist, period. I found this 2005 article from ZDNet, saying the price of the average laptop computer had just dropped from $1,422 to $1,081. So proposing a hundred-dollar laptop that your kid could play with got everyone’s attention.

People at the time had the LeapPad and the iPod, so some floated the idea that you could publish educational content on cheap MP3 players. But the laptop project had some real idealists, some Richard Stallman / Free Software Foundation types, and they argue that we don’t want to make devices just for consumption. Students’ laptops should have open source code and a Linux terminal and tools to learn how to code.

Now one of the first criticisms, something that you’re obviously going to ask me, is whether these computers are the most effective use of education funding. I won’t claim that at all.

Foreign aid and education have been studied for years. The three most effective education programs in countries with extreme poverty are: deworming pills (anti-parasites which kids take every 3 to 5 years), sanitary pads for girls, and probably mosquito bednets to prevent malaria. These don’t involve classrooms at all, but essentially if kids are healthy and they can come to school, then they learn better.

If you want to donate money to a cause then I recommend researching these programs and ‘effective altruism’.

At the same time, in any one of these countries, you will see people using smartphones. There’s a great interest in learning more technology skills. I met a guy in Uganda who was studying Excel out of a textbook — no computer at all — learning Edit menu, Cut, Copy, Paste, that sort of thing. I heard about a class in Rwanda where they study C++. The teacher writes the program from the book onto the blackboard, and the students copy the code down into their notebooks. Maybe one student can check for syntax errors and one can be the compiler..? We know that this isn’t a good starting point to understand code, but the demand is so strong that people try anyway.

If we told these students, your country needs to sort out this thing and that before you study computers seriously, then it’s incredibly patronizing, and we also risk an inequity where whole nations are consumers dependent on technology, with no ability to program, advocate, and profit on their own needs. So there should be paths available, some sort of system for those people who do get internet access, to learn more about their devices and how to code them.

Reviewing and Updating the OLPC Tech Stack

To make a cheap and kid-friendly device in 2005, OLPC had to make it themselves. It costs closer to $190 apiece because it isn’t manufactured on the scale of millions. Here are some features:

  • storage is a 1GB SD card, small and you have to share space with the OS, but solid-state storage makes it sturdy
  • the screen alternates between color and e-Ink, to read in direct sunlight
  • it’s water resistant — there’s a video of people typing on the keyboard under a faucet
  • Nicholas Negroponte gives it sort of a frisbee toss to show how sturdy it is, but please don’t throw mine
  • they sourced parts from cheaper suppliers and agreed not to compete in the consumer market

This final point hurt the project in a couple of ways. One is that the touchpad on the first laptops didn’t work so well, and many people had a negative first impression. (We still have trouble with this touchpad on donated laptops.) The other is that OLPC agreed not to sell the laptop outright in the United States market, so they were reliant on developing world customers.

Less than two years ago, I went back to Haiti, and where a building was leveled by the 2010 earthquake, there’s now a shopping center and an Android tablet assembly and store, called Handxom. We never expected something like this, but today they aren’t even the only tablet company in Port-au-Prince, there’s also Surtab.

There is sort of a partnership between Chinese manufacturers and local governments to assemble tablets locally in Haiti, in North Korea, in any country that buys into sort of a kit.

This would save us so much time if we started an OLPC organization today —a low-cost, mass-production device, we don’t have to get import permits or smuggle hardware into the country, and if something goes wrong like the screen breaking, we can get it repaired.

Another interesting feature of the laptop is a Mesh Network. This is an ambitious problem, and even today if all of us at the conference tried to set up our own mesh, I don’t know if we’d succeed. There was a recent project in Brooklyn, Red Hook Mesh Network, which told me they’ve switched over to standard Wi-Fi hotspots.

The OLPC mesh network worked in small groups. Teachers hadn’t seen Google Docs before, so the concept of typing on one computer and showing up on the other computer was cool. But in larger groups the laptops have trouble connecting and coordinating with each other, and it’s near impossible to direct 30 kids in your class to form three independent mesh groups. One of the largest deployments, Plan Ceibal, has turned this off completely on the Operating System level, and I haven’t head of others using it outside of testing, training, and occasionally the Chat activity (with the help of WiFi routers).

The laptop’s operating system is Fedora Linux, with Red Hat giving initial support, and a custom interface called Sugar. There’s a separate non-profit, Sugar Labs which continues to make new releases. There’s also an option to boot into GNOME.

Today if I told you that I’m doing an education project and making my own operating system, you would think that it’s crazy. But at the time, Android was only a feature phone OS, Linux desktops were not great, and the project was considering young kids, possibly illiterate six and seven-year-olds, so everything is colorful icons and no words.

Digging a bit deeper on that point, the original vision was to deploy this laptop in the most remote, impoverished areas. Millions could be sent to a sub-Saharan African country, or in outdoor schools like this in Afghanistan and Pakistan. Or maybe one state in India would buy in, and the others would compete. For any of these cases, there was a real need to make the laptops accessible to illiterate students and even some teachers who would not be considered fully literate.

Instead of Africa, the laptops came at a perfect time to take off in Latin America, which I don’t think was expected. Uruguay and Peru have bought a million units each, making them the main customers and adding their own influential OS and software changes.

In Uruguay, there was a national initiative to roll out WiFi to public areas and schools all at the same time across the country, along with these laptops. Kids can bring the laptops home, they can drop broken laptops off at the post office, the national curriculum got a tech-friendly rewrite, even some students’ families access the internet for the first time on the laptop.

(The social and educational impact on Uruguay is difficult to measure or predict. Plan Ceibal director Miguel Brechner gave this talk in English and has some TEDx presentations as well. We’ve seen some kids create their own applications and move onto Google Code-In (younger version of Google Summer of Code). There was an article a few years ago that OLPC might have helped with a video gaming industry boom in Uruguay.)

On the software side, you write applications for the laptop using a custom Python application framework, which gets zipped up as a .XO file. (You can also have browser-based activities inside of a Python wrapper.)

Developers upload these to an open Activities App Store (which was once on the OLPC wiki, and now part of SugarLabs).

One of the biggest demands from the schools is office apps — open equivalents for Word, Excel, and PowerPoint — since this is what administrators and politicians understand. The constructivist ideal of kids teaching themselves with creative work is difficult to adapt for a curriculum.

The laptop was designed to be 100% open source before YouTube launched, and well before Khan Academy. So the original software doesn’t come with Flash or MP3 plugins, so it couldn’t play YouTube videos. Kids and organizations find a way to install activities or do some terminal commands to get around this, but these gaps disappointed people.

I want to zero in on the choice of Python.
2005–08 was a golden age for Python — MIT changed their computer science course from Scheme to Python, a bunch of Java CS programs were adopting Python, too. Google hired the creator of Python and said it was the future of their products. OLPC bought into this.

OLPC was ahead of the times using git, like the other Linux distros, and they have a wiki and IRC for community outreach.

Reviewing OLPC’s Education Policy

These are the five principles of One Laptop per Child. Normally you would expect for me to spend time explaining each of these points, but basically it boils down to open source software, and literally one-laptop-per-child, don’t put these in a computer lab. And of course there weren’t enough laptops to go around and of course computer labs (and after-school programs) were made, but the software and OS are aggressively designed against this. You start the computer for the first time, it asks your name, and after that everything is Photo by Nick, Nick’s Journal, etc.

Nowadays I admit that you could save money and avoid some trouble with computer lab setups — this is a concept called Keepod where the kids get a LiveUSB, and all of their personal software and files can be on it, so your cost-per-kid is just one USB. This alone doesn’t solve anything, but it’s interesting.

I worked both with large, national projects and small, local projects.

In a national program, they will say that it’s a handout by the leading political party to their constituents, and not a seriously-informed education policy. And there’s an element of truth to this being how politics works.

But if you start out with a small pilot, like me going to a school in Uganda, they’ll say that I can’t prove that its scalable or practical. You can’t send me to every school in Uganda. So there’s an element of truth to this, too.

If you start out on an education project, I recommend that you don’t listen to these criticisms, because you’re going to be attacked either way.

Another trend that surprised everyone was the role of the internet. Mobile and 3G moved a lot faster than we expected into Africa. And with so many of the laptops going to Latin America and/or middle-income countries, the internet was already more significant and essential for the laptops there.

(JavaScript moved fast, too. In 2005, GMail and Google Maps were considered major breakthroughs, and got people interested in AJAX. So people didn’t think about schools making interactive lessons in the browser).

I hear now that one of the most popular countries for visitors to Khan Academy is in India. Watching video lectures. We didn’t expect that.

The Move to HTML5 / JavaScript

Today there’s a new generation of Sugar called Sugarizer, officially backed by Sugar Labs. It’s the same operating system for kids, rewritten in HTML5 and JavaScript. You can try it embedded in your browser, or download it from any of the Android app stores.

The original apps can’t be ported so easily though— you can’t open up the Python package and click Save-As-JavaScript. So it takes a lot of effort to select and reintroduce these programs.

If we’re going to develop new technologies and education resources and use them in schools, JavaScript makes a lot of sense. Every device now has a browser. If that browser can continuously, silently update, then it’s secure, it keeps up with new web features, and lessons that run on my device can appear on any other device. It’s not always easy for developers to make cross-platform, responsive designs, but it’s more feasible than moving between Python, iOS, and Android native apps.

Education groups understand the role of the web now, and the focus of future development is going to be big libraries of resources built on HTML5/JS.

This can work for offline schools, too, because you can set up portable servers with a terabyte drive of Khan Academy videos and OpenStreetMap, which you can run completely off the grid. The setup in the picture is a real thing that we set up in Haiti, and it looks messy, but we were able to make our resources available with solar power and no internet (see diagram below). There is a 3G router, but it would be slow and expensive to stream even one video over that connection, so we save a lot using this solar-powered Intel NUC setup in a classroom.

One of the things that you might want to put on this server, and in these online resources, is a path to learning how to code.

People ask me all of the time, how can I learn how to code? What should my kid be learning?

It’s surprising, but I’m not good at answering this, and most programmers aren’t that great at answering it, either. If you tell your story of learning to code (and I’m including myself in this) and it starts out with your parents helping you get started and letting you mess around with the computer, then CS education policy might not be about you and your experience specifically.

It’s like… if you learned how to read before elementary school, that doesn’t mean that we should stop teaching phonics and other techniques which are proven to help everyone learn how to read.

As an open source community, we should be the epicenter of teaching and onboarding new coders. You don’t have to be part of a company or a government or be old enough to drive, to contribute to open source. But this is still hard, so we need to talk more with people who aren’t here today, who are getting stuck compiling and debugging or even just downloading code from GitHub and opening it in the right application.

We ought to have newbie-friendly projects that accept all of their pull requests and fix the bugs later, because not every project is mission-critical. We can get more contributors this way. In FORTRAN repos, nearly every pull request gets merged, no matter how long it takes. Be more like FORTRAN.

The concept of open source is still foreign to outsiders. My coffee shop cashier was asking why I’m going to Iceland, and I explained I’m going to give a presentation. So she asked if I represent a brand or a product, and I explain: I write code, and we give it away for free…? Then go and tell stories about it…? People are fascinated and confused by this. At one point I compared it to a community mural that we can all paint. But in reality there are still all of these barriers.

On the OLPC laptop, the learn-to-code tools are: TurtleArt, which is a sort of our Logo app, eToys which also has a block language but you can control several independent pieces, Scratch which is quite famous now, and a Python interpreter with some math problems and a couple of visualizations, sort of hard for kids to break into.

Today, TurtleArt is available in JavaScript, Scratch has been rewritten for the web and has native mobile apps, and you would probably want to teach kids JavaScript instead of Python.

Modern Approaches to Teaching Code

One of the many themes in teaching kids to code is blocks — this is how Scratch, Code.org, Google Blockly, Lego Mindstorms, and many other systems work today.

Some people teach blocks to introduce programming and then graduate students up to “real” languages, and others are creating new blocks to control robots and cameras and things, so maybe blocks can be the everyman’s programming language of the future.

I picked out this screenshot for a couple of reasons. One is that it has Elsa from Frozen, instead of a turtle. There are purists out there who would say that they don’t like Disney characters in education materials, but these programs are rolling out so fast with Hour of Code, I’m positive that more kids are already learning to code with Elsa or R2-D2 than ever learned with all these decades of turtles.

Another reason for the screenshot is that blocks can be translated, in this case with the support of Cartoon Network Arabic. The blocks even are flipped, to open up right-to-left to follow the Arabic script. It’s easier for us to translate a block programming language and give it to a kid because there’s no English barrier and there’s no syntax errors.

Quick aside: there are not-English programming languages out there, such as Qalb, which is a Lisp-like language using Arabic script, and Potaka, which came out recently, using Bangla/Bengali.

Blocks are going to be with us for a while. Scratch and Google are cooperating on this tablet-first approach to blocks. All of the major players are converging on this.

(I don’t feel that blocks taught me how code works, and I know other people with the same experience. But like I said before, it’s not about me. You can’t argue with the kind of traction that this has had in schools, and the improvements to block environments that have been made.)

Another idea is to teach coding through games. This is a Y-Combinator backed startup CodeCombat, where you can navigate through dungeons and fight different characters, and your code is sort of a spellbook. The violence isn’t so much, so your kids won’t be traumatized unless they miss a semicolon or something. (Let’s Play video)

One new thing in iOS 10 is Swift Playgrounds. You control an alien character on a little 3D game-world. And in this case you are writing Swift, and it looks like a text programming language. But you don’t do much typing — the editor suggests functions and keywords along the bottom.

Apple is planning to run learn-to-code workshops with Swift Playgrounds in their stores. So we might see many people learn how to code for the first time, through an interface like this.

There’s also the concept to learn coding through actual physical things. Theoretically there are different learning styles, and different people are going to excel at different approaches. Also robots are cool. The Maker Movement, Arduinos, are worth expanding on here.

The photo is BaoBot, part of the $10 robot challenge, and it might cost a bit more than $10, but it has sensors and motors and batteries. You could see giving several of these to schools for kids to play with them and program them.

There are also some physical blocks from Google that you can put together to write programs… or you can even write a program with Japanese candy (Pocky) now.

(I didn’t mention it in the talk, but I should have remembered Sphero! They have a great education program where you can program their robots. They also make the BB-8 bot which made an appearance at JSConf Iceland)

Another concept is reactive programming… the main theory is as you write code, you can change variables and see what happens, you can see all the potential futures for what you’re writing into your code.

This has been explained and visualized in a pioneering way by Bret Victor on his site, this is a read well worth the time: http://worrydream.com/LearnableProgramming/

These essays inspired others — Khan Academy, whose CS environment you can see here. You write code in ProcessingJS, and kids can see these interactive colorful programs.

There are new kinds of reactive programming IDEs coming out in the near future for grown-up developers: ‘Eve’ and ‘Red’. I don’t know much about these yet, but this post shows how to make a clock.

Now if we’re going to use education tools built on JavaScript, or teach JavaScript directly to our kids, there are some risk factors that should come up.

One is that JavaScript might be replaced by some superior language. It hasn’t happened in all these years, and I’m sure that JavaScript as we know it will need to be supported by browsers for a long time, but it’s something to think about, especially looking back at Python.

We could also see JavaScript divide into several incomprehensible, warring factions. (ಠ_ಠ) In a sense, this might have already happened.

Another one that I’ve thrown in here is machine learning. It could change how we write code, and it could change the kind of programs that we write.

Maybe some of you participate in OpenStreetMap. This year has been a turning point for machine learning and mapping. For years we were saying that we needed volunteers to pore over maps and trace buildings with unique human effort and skills. Then researchers started using machine learning, just to check our work, right, and *bam* it’s pointing out all our mistakes and mapping new images, faster than we expected.

I’m not sure what this would look like in programming, but it’s possible that we could see machines doing front-end coding from wireframes, or a programmer’s time is better spent collecting data and testing different models and parameters. It’s hard to say.

Another trend to look out for is education metrics and sensors. I’m wearing a Starling device right now. It’s not a step-counter; it’s a word-counter. You’re supposed to clip it onto babies, because there’s research that the divide between rich and poor upbringings is vocabulary and communication.

This is just the first of what could be many devices, which don’t have screens or teach kids directly, but tell us a lot more about what kids are learning, and what they should be learning next.

There are amazing reviews of this Starling device and how it trains parents.

In conclusion, if you start some kind of OLPC 2.0, you could approach it from several different directions. You wouldn’t take on the whole hardware-OS-software-education stack.

Someone on the local level or foreign aid will handle hardware. You can take this part if you like. As long as it has a browser, the education materials shouldn’t care who you are, or what hardware you got from where.

Then there will be big education resources — Khan Academy and Library for All are two specific ones. You should make your resource palatable to the US education system, because a lot of the funding and research and word-of-mouth is in making this available to American schools, and the developing world program is more of an expansion plan or a reason to donate.

WorldReader, Library for All, and my former colleagues at Asia Foundation have fantastic eBook program. This is still difficult work, because although literacy is an obvious first step for education, many e-Books are very old, not appropriate for kids, not in the local languages… if you look at Project Gutenberg’s public domain works, you quickly realize that they didn’t write a lot of children’s books 100 years ago. It’s like… Doctor Doolittle (the original racist edition) and poetry that Oliver Twist would read in boarding school.
Even when kids get books, they also have a computer, so not a lot of reading gets done. We should think about innovative ways to fix this. (In Uganda this was called ‘a culture of reading’.)

For these web resources, open-source the server so that it can be run offline in schools, like we did in Haiti. Today there’s a non-profit, Foundation for Learning Equality, which handles the Khan Academy videos and materials on a quasi-official level, and then you have groups like Code.org which are entirely web-based, and not interested in offline development (from what I’ve heard).

Since we are all developers or technologists here, it’s likely that you might be interested in Computer Science education specifically. If you get into this space, I’d recommend you develop a system that works well in schools, like Hour of Code, and then has self-serve lessons that kids can check out when they come home.

That’s where we are today! If you’d like to ask questions or tell me a really cool story, get in touch, I’m @mapmeld on Twitter and GitHub.