The OLPC project’s vision is to “provide children around the world with new opportunities to explore, experiment and express themselves.” To help further their goal, the OLPC folks gave us the opportunity to purchase one laptop for ourselves while at the same time purchasing one for a child. Over the past month I’ve read, talked, and blogged about the XO, played and tinkered on the XO, programmed, hacked, and surfed the web on the XO. It has been a lot of fun, but more importantly, it has changed how I think.
OLPC is pitched as a learning project, but it is so much more than that. When you learn, you change; you make opinions and get ideas and live your life differently. It is a personal growth project. You will collaborate, exchange ideas, and make decisions. You will develop your own philosophy, hear others, and be a better person for it. Whatever path you take on this journey will lead you to the same destination: knowledge.
If you weren’t able to, didn’t want to, or maybe even didn’t know about the XO before today, it is not too late to spend some time getting to know more about both the OLPC project and the wonderful little machine that is part of it. If you are interested, please read on.
Continue reading “Grants OLPC XO Mind-Share Experiment”
Scheme Lisp on the OLPC XO
Out of the box, the OLPC XO comes loaded to the gills with Python, but sadly, no Lisp!
To remedy that situation I enlisted the help of the kind folks on the PLT discussion list to help me write a script to build the PLT DrScheme (Lisp) development environment for the XO.
This script is responsible for preparing the PLT application suite for the OLPC XO laptop computer. The script creates a typical binary, *not* a Sugar application (that is going to take a little more work!). You can download the application itself here, along with the md5 checksum, and the build log. A Flickr photoset is available here.
If you do try it out, please be sure to read the usage notes below, and let me know if anything needs to be added to them. All of the documentation is pre-installed, so once you’ve downloaded it, extracted the archive, and executed ‘drscheme’ (or ‘mzscheme’ if you want command line Lisp) in the bin dir, you should be ready to roll.
Thanks to all of the hard work by both the PLT and OLPC folks, lives will be changed.
Usage Notes
- The apps run quickly. The slowest part is, of course, the disk I/O.
- Slideshow works very well; it looks great and runs fast, turning the XO into a wonderful little “personal” presentation machine.
- Out of the box, there is one setting in Edit->Preferences->Editing->General that is left unchecked: Open files in separate tabs (not separate windows). Left unchecked, opening a file will occur in a new window, and creating a new file will occur in the same editor. Check this feature. It will prevent multiple instances of DrScheme, conserving resources, and perhaps equally as important, it will make DrScheme more fun to use. “Reuse existing frames when opening new files” should not be checked!
- Help desk works wonderfully with one caveat. When you are running Sugar and you switch between applications, more than one “unknown app circle” will show up in the “Donut”, each one corresponding to a DrScheme window. When you try to return to the help desk, you will find that you are always returned to the DrScheme IDE window. In order to get back to the help desk window, return to the DrScheme IDE window and then use alt+tab to switch to the help desk.
- In this build of DrScheme, the IDE will resize to accomodate long file names. Although the XO screen has a very high resolution, it is very small, and large fonts are used to accomodate this. As a result, when file names longer than 16 characters are loaded, the IDE will expand off of the right side of the screen. This behavior will not be present in the newer version of DrScheme.
- The Preferences window buttons “Revert to Defaults”, and “Cancel”, and “Ok” are not visible, appearing just below the bottom bound of the screen. The mouse cursor *can* click these, and in fact when you do click them, you can see the buttons are depressed. “Revert” is on the far left, and then “Cancel”, and finally “Ok” is on the far right, appearing in that order. This is order is different than how it appears on Windows (Revert, Ok, Cancel)!
Addendum 03/22/08:
- Updated the build script (now tag 004) comments with note about what settings to check in DrScheme, updated the usage notes to reflect this fact
- Someone asked “By the way, is there a reason that just typing yum install plt-scheme wouldn’t work?”. That is a good question. PLT builds against OpenGL. The XO does not have hardware acceleration. Consequently there are two ways to run PLT on the XO: install Mesa for software-based OpenGL emulation or build PLT without OpenGL support. I chose the latter, without testing the former.
- In case you are interested in building PLT for the XO using Microsoft Virtual PC, I’ve added my setup notes.
Addendum 05/29/08:
Made a big correction in the order of the preference buttons, also updated the reference to the script which reflects the change.
Unlock Forth on the OLPC XO
A week or so ago I ended up on “Luke’s Weblog” reading an article about Forth on the OLPC XO.
The OLCP Wiki has got Forth Lessons for everyone to enjoy. Forth is a pretty neat language!
You may have noticed that although access to the Forth shell is explained on this page, it doesn’t work. The reason can be two-fold. First, you can only access the Forth shell if the firmware security is disabled. Second, on newer machines you access the Forth shell by hitting the escape key at boot time.
This page explains how to gain access to the Forth shell on machines that have got the firmware security enabled (G1G1 owners, that means you). You need a developer key to unlock your firmware, the request takes less than 24 hours to be fulfilled. Please read the page closely (disable-security twice!) and heed their advice of disabling firmware security (you can always enable it later).
The Path of Knowledge
The path born of wonder is endless, paved with knowledge, and unconditional. Walking it will change you, and the world. Follow it every chance you get.
Imaging your OLPC XO
Managing files in the OLPC XO datastore
The only official way to get files in and out of the datastore is to drag and drop a single file at a time, and this only works on USB thumbdrives, not on the filesystem.
There is ticket for a workaround using a Python script; if you use an XO, please offer encouragement to get this functionality integrated with the XO.
Here is the ticket.
OLPC XO Answers about hardware
The OLPC XO Wiki has a questions and answers page. Today I took look at the hardware page and found a few important bits:
- JFFS2 compresses your data, performs wear leveling, and manages bad blocks so you don’t need to worry about the fact you are writing to flash.
- USB “thumbdrives” should be formatted to FAT32.
- Although the CPU supports sleep mode, and the hardware detects the the lid closing, the XO will not automatically enter sleep mode on lid closing until some time next year.
- The XO can remain plugged in constantly; the battery will not get overcharged.
Managing files in the OLPC XO datastore
The only official way to get files in and out of the datastore is to drag and drop a single file at a time, and this only works on USB thumbdrives, not on the filesystem.
There is ticket for a workaround using a Python script; if you use an XO, please offer encouragement to get this functionality integrated with the XO.
Here is the ticket.
CUFP 07 Write-Up now available
A write-up on the Commercial Users of Functional Programming 07 conference is now available here.
It is definitely worth a read for folks who wonder about the “real world” problems that are solved using functional programming. There is a nice mix of both languages and problem domains, and the tone is pretty laid back.
Code Generation and DSLs in Scheme
Over the years, I have heard some pretty outrageous and tantalizing claims made about the programming language Lisp. For example, “It will change you, forever.” and “You write code that writes code.”. Sadly, no further explanation is ever provided. Perhaps it is impossible to capture the essence of that to which these statements allude? This air of mystery around Lisp is both a blessing and a curse. Some folks will find this aura repugnant; others magical. For me, it was the latter. I wanted in on the secret!
Continue reading “Code Generation and DSLs in Scheme”