Sunday, December 20, 2009

Reconciling Industry Certification with Humanization (and the ghost of my father)

My father was the first one in his family to go to college, earning a degree in Engineering from Drexel University, but he was never completely comfortable with the "title" he had earned.  I can remember him telling me, long before there was an Urban Dictionary, what the BS, MS, and PhD degrees actually stood for.  Fundamentally, I think, it boiled down for him to the question of whether one's self worth comes from within or from without.  Who are they, he thought, to tell me what I am worth?

As a Career and Technical Education (CTE) teacher, I am confronted with a related issue every day as I work to help students prepare for their future careers in the technology industry.  It is policy in our program, and I feel pressure from above to get my students to take Industry Certification Exams, even though I often believe a focus on these exams would be detrimental to learning.

At the root this issue there are basic questions of practice to address. What skills are most important for students to have?  What is the best way for them to acquire these skills?  How can they best demonstrate to others what they can do? Lying deeper, and often unasked, there are the far more important questions concerning the development of young people as human beings.  How best can young people grow to fully realize their humanity?  What experiences will help enable them to fulfill their roles as historical subjects, and give them the tools they need to fight dehumanization and oppression? Is there anything that can happen inside a classroom inside a school toward these ends, and what is the duty of the classroom teacher regarding them?

CTE teachers in a capitalist economy who believe, along with Paulo Freire, that "humanization is our ontological vocation", can find themselves in a tough situation.  Dehumanization is, after all, the unstated assumption of our trade.  Our job is to prepare raw material (our students) for use by others.

I have been able to survive as a CTE teacher for almost two decades thanks to the wonderfully subversive oasis of humanization provided by the Free Software Movement.  Working within the GNU/Linux and Python communities in particular, I have been able to simultaneously provide students with opportunities to acquire the skills they need to succeed in the technology industry while largely avoiding turning my classroom into a dehumanization factory.

The free software world is perhaps the closest thing one can find outside the athletic field to being a true meritocracy.  What you can do is there for all the world to see in the code that you write.  It is not your last name or your title that determines your worth, but your ability to contribute to the community.  I have found happiness for the last few decades as a CTE teacher by making this community my home.

I am often reminded, however, of the broader context in which I work.  Suggestions that we should partner uncritically with private industry to determine what our students need to know and be able to do (as we did in Arlington Public Schools several years ago when we rushed head first into implementing a Cisco certification course with very poor results), or that Professional Certification should be a universal goal in all of our IT classes, without critically evaluating how they would impact our classrooms, constantly remind me of the powerful role private industry plays behind the scenes in public education.

I am not at all the individualist my father was.  On the contrary, I believe that our view of ourselves and of our place in the world is socially constructed.  I strongly support the development of common standards that enable collaboration and communication, and I am not at all opposed to a professional certification process, provided it meaningfully measures real learning and achievement and reflects the democratic input of practitioners.

What To Do About Industry Certification? 

The problem for me is that there is a distinct lack of certifications in the areas in which I am most interested in working.  My supervisor recently handed me a 15 page document titled "Board of Education Approved Industry Certifications, Occupational Assessments, and Licensures".  There is no Python exam on the list.  There is a Java test, to be sure, together with the implication that I should be teaching Java instead of Python for that reason.

If I wait long enough, a Python certification exam may appear on that list.  The fact that companies as large as Google have made Python a core technology make it increasingly likely that an Industry Certification will appear.

By then, however, I may have moved on to something else.  I'm primarily interested in involving students in naming the world.  To be full and active members in a democratic society, students need to know how to think critically, and to seek solutions to problems which often lie beyond conventional wisdom. Humanity faces tremendous challenges which threaten its very survival in the 21st century.  We will need the ideas and voices of all of us to meet these challenges.

There are times when preparing for an industry certification exam can help build student skills and discipline.  I should embrace those opportunities and encourage students in those situations to pursue certification.  There are other times, however, when an uncritical focus on a certification exam would run completely counter to what I want to achieve in the classroom.  I should not let the pressure to give students exams harm their opportunity to grow as human beings.  If I am to effectively model what I seek for my students, I can't uncritically pursue a course of action handed down from above that doesn't make sense and is not in the interest of real student learning.

Wednesday, November 25, 2009

Feelin' the Launchpad Luv!

The screenshot above shows Scratch running natively on Ubuntu Karmic.  There is a Scratch in Launchpad web page that greatly simplifies the installation process, at least for someone generally familiar with basic Debian system administration.

I've been running the Windows version of Scratch using wine for the past year, and using the new version has several important advantages:
  • Most of the midi features now work, so students can be exposed to music ideas through Scratch.
  • The operating system is now aware of the application, so clicking on any of the half a million Scratch programs on the website now offers the option of loading the programs directly into Scratch.  This is a big step forward for the Scratch user experience on Ubuntu, especially for the young learners who are the target of Scratch.
  • Saved programs now have a scratch cat logo on them in the graphical file browser.  Clicking on the file icon with the mouse loads them into Scratch.
  • Fonts look nicer, making reading the programming blocks easier.
This is fantastic news for educators using Ubuntu!  While I understand that there are still software freedom issues to be worked out with the Scratch developers, Scratch is compellingly excellent software (the best educational software I have ever seen), and having it available on Ubuntu means that I can stay with the operating system I love best and use the software I need to use for the benefit of my students.  It also opens up the possibility of Ubuntu Live USB sticks with Scratch pre-installed.

Sugar Now Available Too

In related news, Sugar now works on Ubuntu Karmic as well.  The Sugar Team on Launchpad provides a Personal Package Archive (ppa) with the latest (version 0.86) sugar.  This is great news for us at the Governor's Career and Technical Academy in Arlington (GCTAA), where we plan to make contributing to Sugar a central part of our Information and Communications Technology program, and needed to be able to do that on Ubuntu.

Feeling Warm Fuzzies from Launchpad

I've been using Launchpad since soon after it was first available on-line.  Ever since hearing Mark Shuttleworth talk about his vision for it back at the Ubuntu Down Under developer conference, I understood that Launchpad is a core part of bringing developers and users together to make Ubuntu better.

Getting Scratch and Sugar delivered to our computer lab through the fine work of the Scratch and Sugar Teams on Launchpad is definitely giving me the warm fuzzies toward the Ubuntu community and the Launchpad platform.

Thank you Ubuntu community!

Sunday, November 22, 2009

Update from Los Chilamates

The picture above shows the students from Los Chilamates who have been attending Saturday XO classes at la Universidad Evangelica de El Salvador.

Classes have been proceeding well, and I'll report back with more details as soon as I have them.  My son, Louis, will be heading to El Salvador on December 17 to help with the project.  I'll be sending detailed reports back from Chalatenango during his visit.

Louis's goals for the project during his visit include:
  1. Bring two mini computers running Ubuntu Karmic for the lab.
  2. Get a router working so that multiple computers can connect to the Internet at the same time.
  3. Organize at least 2 classes with the 5 teenage activists in the project using the networked computers.
  4. Jump start work on the website.
Scratch on Ubuntu

In related news, there is now a PPA (personal package archive) with the latest Scratch available on Launchpad.  The project is located here.  It works like a charm!  I've been using wine to run the windows version, but midi functions like playing notes and instruments never worked this way.  Now it does, and having a native version makes saving and finding projects a lot easier as well.

Since I will also need Scratch running on the Fedora 12 machines we have in the lab for Sugar development, I needed an rpm.  Sabastian Dzaillas, maintainer of the Fedora EDU spin, suggested I try using alien.  I did, and it worked!

Email me if you want a copy of the rpm.  I want to find a place to post it, but I'm still not sure about the licensing issues.  It works, but it still needs a bit of love to get rid of the errors that are reported during installation.

Tuesday, October 13, 2009

The Magic of Bees

Dr. Frank Linton is passionate about bees.  Peter Hufford, Robin Brooke and I got to share in a bit of that passion when we visited Frank's observation bee hive yesterday morning.  Teaching duties keep me from having the time to share more fully all that I learned, but let me just hit a few of the highlights:
  • Honey bees communicate information about the location of food by "dancing".
  • They point relative to the direction and "waggle" relative to the distance of the food.
  • They are the only know species of animal to communicate this way.
  • There is a 10 million dollar project underway at Harvard to build a robotic bee.
  • Bees maintain a temperature of 95 degrees Fahrenheit around the developing young by converting honey into heat (by flapping their wings).
  • If the temperature gets below 55 degrees Fahrenheit, the hive will die.
  • Hives generally have only one queen, though about 5 percent have two (sister or mother/daughter) queens.
  • Honey can keep a looong time.   Edible honey  was found in Egyptian tombs.
  • Below a certain moisture content, sugar becomes a preservative, because it binds chemically with water molecules, literally sucking the living water out of any microscopic plant, animal, or fungus that might come in contact with it.
  • A bee hive can be moved less than 3 feet or more than 3 miles, and the bees will be able to find it.  Move it more than 3 feet and less than 3 miles, and the hive will die because the bees will be lost.
I left the visit with a much better understanding of Dr. Linton's fascination with bees, and was reminded once again why I am so attracted to project based, interdisciplinary learning.  The "fields of discipline" that come into play when looking at bees -- chemistry, insect and plant biology, information science, linguistics, mathematics, economics, history -- can not be neatly separated into academic silos of knowledge.  Understanding honey bees involves the interplay of all of them, and more.

I am greatly looking forward to our work this semester on the Measure activity for Sugar.

Saturday, September 26, 2009

Making a Custom Ubuntu USB Live Stick with Remastersys and Virtualbox

Newer NOTE: It works again on lucid and maverick -- JE, Oct, 25, 2010.
NOTE: While the process described below works on Jaunty, remastersys is broken on Karmic -- JE

It is a beautiful thing when something just works!

I'm teaching a beginning programming class at a local community college and I wanted to give my students a bootable USB stick with the software (Python, of course!) that we would need for the class.

My minimum requirements above a stock Ubuntu desktop were:
  1. gasp
  2. geany
  3. How to Think Like a Computer Scientist: Learning with Python, 2nd Ed.
I tried and failed to make an iso image using the instructions here:

Not only didn't this meet the "for human beings" test, but all I got was an (initramfs) prompt when I tried to boot from the USB stick after I made it.

Before trying to figure out what went wrong, I decided to try using Remastersys. It worked like a charm!

Here is what I did:
  1. Installed a fresh copy of Jaunty for i386 on a VirtualBox.
  2. Updated the software, and installed all the new software I wanted (geany and a bunch of other python stuff).
  3. Downloaded the lastest version of gasp (I used the tgz file with version 0.3.2 from launchpad), untarred it, and copied the gasp directory to /usr/local/lib/python2.6/dist-packages.
  4. Using System -> Administration -> Software Sources, selecting the Third-Party Software tab, and clicking on the +Add... button, I added the following repository: deb ubuntu/
  5. Updated the software list in Synaptic, and installed the remastersys package.
  6. Selected System -> Administration -> Remastersys Backup and used remastersys to make an iso image of my custom Ubuntu.

Using Remastersys

Using remastersys could not have been easier (it definitely meets the "for human beings" requirement). On launch, the user is presented with the following, warning that all other windows must be closed before proceeding:

Click OK to proceed to the main Remastersys-gui window:

Just select the Dist option, click OK, and wait. After about 15 minutes you will have a working custom.iso image in the /home/remastersys/remastersys directory.

I used scp to copy the image from the VirtualBox instance to the host machine (which was also running Ubuntu, of course) Then I used USB Startup Disk Creator to put the image on a USB stick, complete with read-write storage for saving files.

I can now make live USB sticks for my evening programming class. Remastersys rocks! I hope it makes it's way into the Universe repository, so that it will be even easier to install and use.

Monday, August 24, 2009

It feels good to be part of history...

On Sunday morning (Aug. 23) I met with a friend who works in the Ministry of Culture. We talked about the ministy's interest in using Free Software in the cultural centers they have throughout the country.

At 12:30 pm on the same day, I attended the Ubuntu-SV "Pizza Bash" where I got to hear about the exciting things the 24 folks who attended the event are doing to promote free software in El Salvador.

The most exciting news is the decision recently made by the Ministry of Education to switch from proprietary to free software in all the public schools in El Salvador.

This afternoon I had the opportunity to speak on Radio Cadena Mi Gente, where I had the opportunity to describe what free software is and why I was in El Salvador promoting it to listeners across the country.

It feels good to be part of history, and to play a part, no matter how small, in making changes for the better!

Friday, August 21, 2009

What we accomplished this week...

We held three classes each day for 2 hours each class. The morning class was all younger children, and focused on Sugar and Scratch. The mid-day class was a mix of younger kids and adolecents. We divided this class between the Sugar/Scratch group and the XHTML group. The night class was all older teenage and older folks and focused on XHTML.

The classes were full with as many as 37 people attending the evening session. This stretched our limited resources to the breaking point, and led to some slow going for a day or two, since we didn't have enough XOs to go around. Later in the week classes were a bit smaller, and everyone who attended could get a laptop to work on.

The longer term goal for this project is to make it self sustaining. The most interested participants will form study groups and continue to work toward learning enough web development skills to create a web site for the cooperative. Hopefully others with interest in working with the children will bring them together to work more with Sugar. At some point soon some of the families will be taking XOs home with them. The problem is deciding how to deploy them, since there aren't enough for everyone. The goal is to get them distributed where they will be most heavily used.

One BIG Worry...

Today the router stopped working again! I don't understand why. A single machine can get an address, but the router does not seem to be able to get one. This project will not work if we can't distribute Internet access, so this is a serious concern. Douglas Cerna is on his way here from San Salvador today. He is bringing another router and a NIC. Hopefully between the two of us we will be able to figure this thing out.

Monday, August 17, 2009

Sugar is Sweet!

We just finished our first class in Chalate. Ten of the eleven students had never used a computer before, the first class was spent getting them instroduced the new machine. They are young, they learn fast, and Sugar (or Azucar as we call it in Spanish) makes computers easy to love.

Last Friday I was talking with one of the community elders who told me he didn't like computers. A few minutes later one of the kids showed him an XO running Azucar. "Oh, I like this", he said with a smile.

Since none of the kids can type, I plan to take a look at the typing activities available to see what they can do. I'll report back later. The "Hablar" (Talk) activity was a big hit, and several eyes lit up when we looked up "vaca" (cow) on Wikipedia using the Browse activity.

Oh, a summary of the working condition of the 30 laptops sent for this project is as follows:
  • 22 in perfect working order
  • 1 with a defective touchpad
  • 1 with defective video
  • 1 with defective networking
5 of the batteries were bad. I combined 3 of these with the defective computers, leaving 2 working computers that will need to be plugged in to function.

Friday, August 14, 2009

Free Software to the Rescue

Due to a series of delays and mishaps, our planned two week program has turned into a one week program. Douglas warned that the existing bandwidth would not be sufficient for our needs, and when I arrived here on Sunday and got a time estimate of 2 days 10 hours on the first machine I tried to update, I knew that he was right.

So Monday morning it was a trip to San Salvador to upgrade the bandwidth. We asked for a 1 Gigabite rate, and were assured that it would be ready by that evening. It wasn't. In fact, neither Internet nor phone -- since the same cable provider is supplying both -- worked at all until a service tech came to the house on Wednesday.

In the mean time I managed to get myself sick -- something I seem to do at least once on every visit to Central America. That meant that Thursday was spent in La Nueva Conception visiting the clinic and getting medicine. I'm starting to feel better now.

The last complication was getting the router to work. The cable modem seemed to refuse to give it an IP address. It is a Linksys WRT54GS ver. 7.2 router. After talking to Douglas, I confirmed that the cable modem needed to be reset each time that you connect a new computer to it. Using three machines, I could confirm that the process worked. Each one would get an IP address if I:
  1. Connected it directly to the cable modem.
  2. Reset the cable modem.
  3. Restarted networking on the host machine.
I still don't why it didn't work, but the solution I finally found was to change the software on the router. Installing dd-wrt instead of the vendor's original software made it work like a charm. Free software to the rescue once again!

Monday, August 10, 2009

La Cooperativa Juan Chacon

"La Cooperativa Juan Chacon" was formed by demobilized combatants of the Salvadoran revolutionary army in 1994. As part of the peace process between the FMLN and the government of El Salvador, each of the 33 families that joined together to form the cooperative were given a small parcel of land and materials needed to build a house.

The decision to form the cooperative was an act of courage. None of the members had experience farming, or the first idea how to go about forming an agricultural cooperative. For most of them, being revolutionary soldiers was the only life they knew.

Dinora, the president of the 17 member coop council, has the kind of amazing personal story common among the coop's members.

The army burned down her small house in the mountains of Chaletanango when she was 6 years old. From then on she lived with her family in the forrest, continuously on the move, avioding aireal bombardment or capture and murder at the hands of the army.

From the age of 11, she was stitching up wounded combatants in the make shift mountain hospitals of the Ejercito National para la Democracia (END). Her teacher was a Spanish Psycologist named Maria del Pilar, effectionately known as "Maria Bruja" because the hide out hospitals she set up were never discovered by the army during the entire course of the war.

In addition to her work in the hospital, Dinora also worked as a communications specialist. She stands 5 feet tall. I couldn't help but smile when she told me how light she felt after the demobilization, no longer having to carry her hospital equiptment, her radio, and her rifle around with her.

Canton Los Chilamates, where La Cooperativa Juan Chacon is located, is unusual in El Salvador in that you can safely drink the tap water. This tremendous contributor to the health and well being of the community is thanks to a water system that includes a 390 foot deep well, a storage tank complete with a clorification system, and the system of pipes that deliver the
water to each house in the community.

Understanding how this water system was created in a community of very limited resources provides a context for understanding much else about La Cooperativa: it was made possible by the increadible level of organization in the community. A series of donations from NGO's raised the $100,000 needed to purchase the materials. The work of laying the water pipes was done by the community members themselves. The process required both advocacy and hard work.

I'm inspired and grateful to be here.

Friday, July 24, 2009

ISO-8859-1 to UTF-8 file conversion...

In an effort to get all the educational materials ready for the classes in El Salvador, I've found myself battling on two fronts today with character encoding not working. Fortunately, both problems turned out to be easy to solve, and both turned out to be the result of having ISO-8859-1 when what I wanted was UTF-8.

The first one was that the Spanish translation of materials generated by sphinx did not render properly on the Open Book Project site, even though the exact same materials rendered fine when I viewed them on another website.

I filed an ibiblio trouble ticket, and within an hour Donald Sizemore fixed the problem:
ibiblio's DefaultCharset is still iso-8859-1 - we tried to change it to UTF-8 during our last major upgrade, but it broke too much of our older content.

I've changed the DefaultCharset setting for to UTF-8 and the page looks good to me. Check behind me? You may have to hold down Control- or Shift- and click Refresh in your browser to pick up the changes.
Cómo Pensar como un Informático now renders characters just fine on the OBP site.

A bit later in the day I began working on helping Gregorio Inda with his translation of the GASP Python Course. When running sphinx-build on the launchpad checkout of his latest work, there were over 150 warnings from one file, one for each accented charater and inverted question mark in the file.

I couldn't figure out what was going on, since sheet 1 looked the same as sheet 2 to me and didn't report any errors. A colleague suggested comparing the two files using the unix file command, and sure enough that revealed the problem:

$ file *
1-intro.rst: UTF-8 Unicode Java program text
2-tablas.rst: ISO-8859 Java program text

ISO-8859 is haunting me today! Fortunately, this web page told me what I needed to do to fix the problem:

$ iconv --from-code=ISO-8859-1 --to-code=UTF-8 2-tablas.rst > temp && mv temp 2-tablas.rst

Problem solved.

Wednesday, July 22, 2009

Where to all the geek girls go?

Teaching Summer enrichment classes at ACC for the past two weeks and 3 days has already been a fascinating experience. It's been years since I taught Summer classes, but what I discovered the last time I did it still holds: students volunteering to spend some of their Summer learning tend to be more highly motivated and skilled then their average counterparts in similar classes during the regular school year (duh!).

I am teaching "Creative Computer Exploration with Scratch" to 4th, 5th, and 6th graders from 8 am to 12 noon, and "Games Programming with Python and GASP" to 7th, 8th, and 9th graders from 12:30 to 4:30 pm. Each session runs two weeks, and there are two sessions during July, so we just completed our 3rd day of the second session.

I'm sure I'll be reflecting on my experiences with these classes for some time to come, particularly as they relate to the creation within Arlington Public Schools (APS) of a computer programming pathway -- a sequence of educational experiences for APS students beginning in elementary school and ending in programming careers in Industry. One of the reasons I'm so happy to be teaching these classes is that it gives me an opportunity to impact the early stages of the pathway, which until now I have not been able to touch.

What I want to focus on here, however, is one question, simple to state but elusive to answer: Where do all the geek girls go?

I've been a CS teacher for 13 years now, and I'm acutely aware of the assumption permeating my field that computer programming is a "boy thing". My typical class of 25 students over the years has had at most 2 or 3 girls in it. That has never varied from year to year, and I've seen no recent trend suggesting that it is changing. The attendees at the annual Python conference have a similar gender imbalance among participants, but there I have noticed concrete signs of improvement over the last few years, with more (albiet still very few) women programmers showing up each year.

Despite a keen interest in understanding the causes of this gender inequity and a strong desire to do whatever I can to address it, I have yet to figure out an effective approach. Teaching the Summer enrichment courses has given me new insights into the issue. Here is what I've observed:
  • The number of "geek girls" in the Scratch class (11 of 30) is much higher than in the Python class (4 of 30), suggesting that the geek girls drop out somewhere between 5th grade and 7th grade.
  • The girls in the Scratch class are true geeks in every sense of the word (and in case you haven't figure it out by now, I mean that as the utmost compliment): they have the same interest in problem solving and desire to make a computer do their bidding as their boy counterparts. They also have many of the same geek quirkinesses I've come to expect from the students with whom I work.
  • The girls are awesome programmers. Here is a program that 4th grader Rachel made after three days of using Scratch. I would say the girls have been better programmers on average than the boys, in part because they seem more mature and have longer attention spans.
  • I have noticed differences in the kinds of things the girls and boys want to work on, with boys more interested in games (with lots of bombs and blood and stuff), and the girls more interested in telling stories. No hard and fast rules here. Some of the girls made games with plenty of gore, and some of the boys made stories, but there were clear and noticible differences on average between what the boys and girls chose to do.
  • The girls in the Scratch class seem to be having lots of fun. Several of them spent hours at home working on their projects and learning to use the XO computers we gave the to use during the class. While I didn't do a survey, the evidence that the girls found their work with Scratch and Sugar to be enjoyable and engaging was unmistakable.
So..., where do all the geek girls go? Why don't they continue building on their enjoyment with Scratch to go on to higher levels of computer programming? I don't have any answers, but I do have a few ideas:
  • We haven't been doing Scratch for very long, so we may help open up new opportunities for geek girls by offering this early programming experience.
  • Scratch lends itself to the kinds of projects the girls seemed to find interesting. It permitted them to use their programming logic to become story tellers. The Python class does not support this kind of problem solving very well at all, particularly the way I am presently teaching it, where the focus is on programming games. The Sugar project, which is developing Activities in Python for story telling, may provide help in this regard.
  • We may have particular cultural expectations to overcome, which tell girls, even geek girls, that it is not cool to be involved in computer programming once they reach the middle school years. I've noticed that this cultural expectation does not seem nearly so pronounced in the immigrant and African American student populations with which I've worked, so it may just be historical baggage we have to overcome.
  • A large part of the historical baggage keeping geek girls from pursuing their interests may just be a matter of unlocking the clubhouse door. I've seen instances of boys actively attempting to exclude girls and make them feel unwelcome throughout my years of teaching computer programming. It is certainly the case that part of the effort to include more girls in computer programming classes involves a good old fashioned battle against sexism.
I've got a lot to think about from my Summer experiences teaching Scratch and Python. I am eager to see what I learn teaching the same topics in rural El Salvador this August.

Stay tuned...

Friday, July 17, 2009

XS Progress

The most exciting new from yesterday is the work Josh did on the XS server. Since he posted about it on his own blog, it will suffice for me just to link to that here.

When he showed me how we can use Pigeon to view connections to our jabber server, I was thrilled! I've given Josh the task of becoming one of the world's foremost experts on the XS. Since there are only a handful of people who have ever set one up before, that lofty goal may be within his reach ;-)

GASP Python Course

This first two week session of our Summer enrichment program has provided a great opportunity to use the GASP Python Course with real students. Sheet 5 needed major surgery to be usable, which I completed last night just before midnight. On the last day of the class, we will take a stab at working through sheet 6, which develops a version of a Pac-man like game called chomp.

This weekend I'll be contacting Gregorio Inda, who has kindly offered to help translate these materials into Spanish. I hope to have some of them ready in time to use in El Salvador.

Wednesday, July 15, 2009

Exploration continues...

Most students continued exploring Sugar Activities yesterday, while a few others expressed a desire to return to Scratch. Here is what 11 year old Satya had to say:
One of my favorite programs on Sugar is the Scratch program. On Scratch, you can create short videos and share them with other people and vise versa. You can also animate stories or make cartoons. Even though Scratch is great, there is one thing I would do to make it better. I would have created Scratch so that you can type your own short commands, have the computer recognize them, and follow that - versus you having limited choices on the moves you can make. This Summer, I became interested in Scratch after exploring a XO I got for Christmas last year. Thinking the computer was slow and boring (seeing it had no computer games) it was cast aside and not used. but classes at the Career Center showed me what Scratch is about and how fun it can be. It has inspired me to want to grow up and become a cartoonist. To simplify it: Scratch is Magic.
The problem is that to use Scratch effectively, you need to be able to download other people's Scratch programs from the website and take them apart, modify them, and remix them. Despite days of trying, we have not been able to find a way to download a file from Sugar's Browse Activity to a place where Scratch can find and open it.

With that in mind, I'm moving the students interested in Scratch off the XOs and onto a regular Ubuntu 9.04 desktop. I thought about just focusing more on Turtle Art and Physics 2, but since Sugar lacks the very powerful ability for learners to easily share their creations through the web, it made more sense to return to Scratch.

What Sugar Should Learn from Scratch

It seems to me that there are two very powerful, but at the same time different kinds of sharing that make discovery learning work:
  1. Direct, immediate, peer-to-peer collaboration: Sugar is quickly becoming the best learning environment anywhere to support this kind of sharing. It is what Sugar was designed to do, and it does it very well.
  2. Learning by investigating previous practice: Scratch does this better than any learning environment I have ever seen. Anyone interested in what Scratch can do can simply visit the Scratch website and see thousands of programs written by others. Find one that you like, and you can down load it, look at how it was written, change and remix it to suit your needs (and then upload your changes so others can see them too). Other users can post comments about what you've shared -- what they like and didn't like, other things to try, etc. It also permits a one to many sharing in a classroom environment where each learner can take the floor and show what they have done to the rest of the class. Anyone in the class can easily grab what they see and explore it themselves.
Sugar does not yet support this kind of learning well. If it did, I think Sugar would become the most compelling learning platform in existence. With that in mind, I suggested on the #sugar irc channel that Sugar Labs, DC might be able to make that challenge its main focus. Here is the conversation that followed.

Tuesday, July 14, 2009

The Experts Weigh-In

We started the day yesterday by showing everyone in the Scratch (now really more Sugar) class how to install new Activities from the website. Everyone then had the session to explore the available activities. Here is a list of Activities that were tried and rated by our crack team of experts (since no one is better able to evaluate how much fun a learning Activity is than the learners themselves):

  • Tux Paint +
  • Physics 2 ++
  • Breakout +
  • Colors +
  • Bounce +
  • Micropolis -
  • Horse Game -
Yet to be rated Activities include:
  • XoIRC
  • Cartoon Builder
  • Joke Builder
  • Food Force 2
  • Pac man
  • Bridge
I also had the time to finish Sheet 5: The Robots are Coming from the GASP Python Course. Today in the Python class we will finish that sheet, and move on to Chomp for the rest of the week.

I can't describe what a thrill it is to be laying the tracks just before the train arrives! ;-)

Monday, July 13, 2009

Sugar Labs DC Producing Results

Our evening activities with Sugar Labs DC are producing results:
  • Josh Eddy has our XS (School Server) up and running and is studying all he can about the jabber protocol so he can better understand how it works.
  • Jamie Boisture is improving GASP each day is response to user feedback from our afternoon Python class.
  • David Morris installed GASP on Patricia Paul's XO, and then installed Sugar inside virtualbox on my laptop.
  • The kids in the morning Scratch (now more Sugar, really) class are providing us with a wealth of experience using Sugar with kids (I'm afraid they all have sweet teeth by now ;-)
Douglas Cerna wrote us to let us know the XOs are finally out of customs in El Salvador, and they were picked up yesterday by folks from the Buena Vista community, so we are moving forward on that front as well.

Sunday, July 12, 2009

Developing a Sweet Tooth

After a week of working with Sugar with 13 young learners in our Scratch programming class, I'm beginning to develop a sweet tooth. I'm well aware that I should have done this much earlier, but is hard for me to focus on things that are not immediately relevant to the rest of what is going on in my life, and Sugar would have been just a curiosity until now.

The first week of the two week class went very well, dispite (or perhaps because of) our need to react each day to what happened and figure out from there what to do the next day. Here is some of what we learned / accomplished last week:
  • The kids love to share Activities and seem to be very happy whenever they are let loose to share freely with the other kids in the class.
  • Within a few days of meeting each other for the 1st time, our baker's dozen young folks have begun to develop a feeling of community in the classroom. Both my colleague, Dr. Ann Kennedy, and I strongly suspect that the peer to peer collaboration among the students made possible by Sugar is largely responsible for this.
  • The mouse pads on our XOs are flaky, and having a mouse pad that didn't work was a show stopper. The level of frustration built quickly to the point where the kids started saying they didn't want to use the XOs.
  • Once the UI works, they loved using their XOs. We attached USB mice, which solved the touchpad problem. There was an immediate and dramatic change in attitude of the users toward their learning devices.
  • The favorite activity so far is Chat, which students get on whenever they can. We have built plenty of free exploration time into the class, so we can see what they do when left to their own devices. I am curious to see whether the enthusiasm for Chat wanes next week as the novelty wears off.
  • Our own School Server (XS) made collaborating work smoothly. Network connection issues seem to have diminished precipitously once we had the XS on our local network.
I'll try to get back to blogging on a more regular basis. There has been so much going on that I haven't had the time to write about it, though I realize that is an important part of the process.

Friday, June 26, 2009

The Future of Educational Software is "Down Under"

There is something tremendously exciting going on down under. I just left the Free and Open Source Software in Education (FOSSED) conference in Bethel, Maine, where I have been blown away by two work shops on on-line learning tools from Australia and New Zealand. I was already familiar with Moodle, the on-line course management system. What blew me away were:
  • Mahara - on-line ePortfolio system.
  • LAMS - on-line learning activiy manager
When we first started dreaming about CanDo five years ago, we invisioned a system that could provide three things:
  1. Transparance through explicit presentation of course competency goals.
  2. On-line curriculum links to encourage students to engage in self learning.
  3. On-line ePortfolios explicitly linked to course competencies as evidence of skills mastery.
We thought we were going to have to write all these things into CanDo itself, but it looks like an integrated SchoolTool, Mahara, and LAMS system could provide us with exactly what we had envisioned. Yay collaborative problem solving through free software!

What is interesting to me is that all of these pieces with the exception of SchoolTool are being developed in Australia and New Zealand. I definetly want to find out more about what is happening down there to make all this innovation happen.

Alan Kay was right a few years back when he said the computer revolution hadn't happened yet, but it is happening now, and it is a wonderful thing to be in the middle of it.

I can hardly wait for next September, when I'll start school with our SchoolTool / Muhara / Moodle / LAMS server.

Wednesday, June 24, 2009

Great Things Happening at FOSSED!

cI just left the morning presentation on Sugar on a Stick here in Maine at FOSSED. The small size (around 80 people), out of the way venue (Bethel, Maine -- an hour an a half from anywhere), and the high level of interest and dedication of the attendees make this special conference to attend.

I got to hang out with Walter Bender and Caroline Meeks of Sugar Labs. Walter was everything I had hoped he would be. Let me just say that when he listed Paulo Freire in the slide containing folks who inspire his work, I knew I was in the right place. Caroline has her own educational technology consulting business, Solution Grove. I'll be attending her other talk on Moodle and LAMS on Friday, but I already got to talk to her about SchoolTool.

There is work planned to integrate Sugar on a Stick with Moodle, so that when children connect their sticks to a machine at school, automatic backup and recover is made possibel through synchronization of their data with the moodle server. Given the work underway in California this Summer on Moodle / SchoolTool integration, I was struck by the possibilities for a powerful free software platform for schools combining SchoolTool, Moodle, Mahara, and Sugar.

Learning Inkscape

The 2nd edition of How to Think Like a Computer Scientist: Learning with Python is progressing fast enough that I had to start thinking about improving the illustrations. Sphinx once again proved itself to be the tool of my dreams! I am able to create SVG illustrations using Inkscape, save them in Inkscapes own svg format, and link to them in the Sphinx source. The resulting html looks great! I spend the day in the Portland airport yesterday learning my way around Inkscape, and I've already completed the two illustrations from Chapter 1 of the book.

Saturday, June 20, 2009

GASP Course and ThinkCSpy with Error Free Sphinx

Both the gasp-lessons and thinkcspy now contain sphinx source that builds without errors or warnings! With Filip's help, the index.html page of the gasp lessons now build the way I wanted them to.

I spent the day today working with Gregorio Inda, a Civil Engineer in Mexico who has been volunteering to translate the Python text book -- and now the gasp lessons as well -- into Spanish. The goal was to enable him to get his changes onto launchpad as he made them. To make this possible we needed to setup his Ubuntu Hardy box with:
  • Python virtualenv
  • bzr
  • sphinx
  • ssh connectivity to launchpad
The whole process wasn't bad, and was helped by the fact that Gregorio is a very bright guy, but it will soon be much easier when you can simply: sudo apt-get install python-sphinx and get sphinx version 0.6.1 or later. My assumption is this will be possible when Karmic is released next October.

While Gegorio is working on the Spanish version of the gasp-lessons, I've taken on the task of converting his Spanish version of thinkcspy from lore to reST. The script that I was using for the English version doesn't handle accents or ñ's, so I needed another tool. Fortunately, I found this on-line HTML to reST converter that seems to work pretty well.

Python Geek Fest

Since I will be heading to Maine for FOSSED on Tuesday, Monday is the last day for a few weeks that I'll be able to get together with folks working on Summer Python projects. So I've called for a "Python Geek Fest" on Monday at GCTAA. Jamie Boisture, Filip Sufitchi, Chris Carey, Paco Roque, and Howard Batiste have already confirmed, and we may get a few more folks who show up at the last minute. I plan to have even more work finished on the curriculum materials, and to helping Jamie get the new GASP in a form where a debian package can be built from it.

Wednesday, June 10, 2009

virtualenv 101

I'm working furiously on the Python textbook. The script I used to convert lore to reST did a pretty good job, but it now requires a human touch to get it looking right. I'm using Sphinx to build the web version, and last night I asked Filip Sufitchi if he could help me get the auto index generation working. He said he would, which is great news!

A quick review of how I setup a new python virtual environment so I could run the latest version of Sphinx and build the book from the reST source without messing up my Ubuntu installation:
  • make sure the python-virtualenv package is installed
  • $ virtualenv --no-site-packages PythonVEone
  • $ source PythonVEone/bin/activate
  • $ cd PythonVEone
  • $ easy_install sphinx
  • $ cp -r ../Ubuntu\ One/My\ Files/Projects/Sphinx/thinkcspy2/english2e/ thinkcspy2e
  • $ thinkcspy2e
  • $ sphinx-build source build
OK, back to work on the book...

Tuesday, June 9, 2009

Manos a la obra con XHTML

Manos a la obra con XHTML is now available on the web. Paco and Angela finished it yesterday evening, and I posted it last night. My son, Louis, is working on Manos a la obra con GIMP.

The 30 XOs are still stuck in customs, but Douglas is going to go in this week to see if we can finally get them out.

I'm working on converting How to Think Like a Computer Scientist: Learning with Python 2nd Ed. from Lore to Sphinx. The first pass of the converstion was automated, and made easy since Lore is HTML. Now I'm going through each chapter by hand fixing things that broke in the process.

Friday, May 29, 2009

Karmic fluxbuntu

I had a great conversation with Joe Jackson, project leader of the fluxbuntu project, on the #fluxbuntu irc channel. His plan is to focus on the 9.10 release, so the timing will work out perfectly for us to contribute during the Summer.

I've already installed karmic alpha-1 on a laptop in school, and am awaiting further instructions.

Jamie Boisture is with me for 30 hours each of the next 3 weeks as part of his high school, "Senior Experience", a program that let's Yorktown High School seniors spend their last 3 weeks of high school exploring the world of work. Jamie will essentially be kicking off Sugar Labs, DC with the work he is doing. He had a great week this week, successfully porting the Graphical Logic Circuits program from pygame to pycairo. This bodes well for the work Jamie has agreed to take on this Summer porting gasp to pycairo.

Thursday, May 21, 2009

Manos a la obra con...

It has been a while since my last post. Not because there haven't been things to report, since there have been many, but because so many things have been happening I haven't had time to report them!

To summarize:
  • We have created a launchpad team, Proyecto Juan Chacón, to support translation of our educational resources into Spanish.
  • We have created a project, Serie "Manos a la obra con...", to hold the translation of the "Getting Down with..." series.
  • I've been talking to folks on #sugar to get a handle on which tools to use in developing our Sugar Activities. It appears that pyGTK and pycairo are the tools on which we should focus.
  • Jerry from the OLPC Learning Club has been coming here to work on getting our remaining 20 XOs ready for the lending library. He has 10 and I have 10 now to finish.

Friday, May 15, 2009

reSTing in Style

Who says you can't teach an old dog a new trick. I'm starting to use reST for all my web markup needs. I want to style it, of course, so I'm reading Docutils Front-End-Tools to find out how to do that.

On Ubuntu systems with the python-docutils package installed, commands like are available from a shell prompt using just rst2html. I've be marking up all the assignments I post on the GCTAA ICT website. This is both much faster than marking them up with straight html, and it provides me with an on-going opportunity to practice my reST skills.

The default style produces pages like this. It looks OK, but I want to be able to customize it. Here is what I did:
  • cp /usr/share/pyshared/docutils/writers/html4css1/html4css1.css . (copied the default style sheet from where the python-docutils debain package for Ubuntu 8.04.02 (hardy) put it to my current working directory).
  • mv html4css1.css rest_style.css
It took me a bit of fiddling to get the format for rst2html to use the new style sheet, but here it is:
  • rst2html --link-stylesheet --stylesheet-path rest_style.css index.rst index.html
This generates index.html from index.rst using rest_style.css in the same directory as the external style sheet.

Monday, May 11, 2009

No reST for the wicked...

As I dive headlong into the task of converting the Open Book Project materials from lore to reST, I'm getting a feel for what works and what doesn't with reST. I spent the better part of an hour trying to figure out how to put non-breaking spaces into a line block.

I still don't know if there is any sensible way to do that, but I gave up and decided it was better to change my markup to match what is natural to do with reST, rather than to keep trying to bend
reST to my will. I'm finding that after the thrill of learning basic reST with so much ease, the learning curve for non-trivial things is much steeper. I wanted to markup a sample program run, with the user input appearing in italics:
What’s 6 times 7? 49
No, I’m afraid the answer is 42.
What’s 3 times 2? 6
That’s right – well done.
... And so on, with several more questions...
What’s 5 times 9? 45
That’s right – well done.

I asked you 10 questions. You got 7 of them right.
Well done!
In the original LaTeX version, and in the lore version we made from it, the line "And so on, with several more quesitons...", was indented 25 spaces or so, and did not have the leading ellipses. Since character-level inline markup does not work with white space, there is no easy solution to this problem apparent to me. I'll ask Douglas when I see him on irc later today.

Sunday, May 10, 2009

XOs in El Salvador Update

Good things are coming out of all the difficulties we have had getting the XOs out of customs in El Salvador:
  • The community at Buena Vista has become actively involved in helping, including meeting with a former National Assembly delegate with whom they have contact. This may be the most important development of all, since the project will only succeed to the degree that the community takes direct ownership of it.
  • We are greatly expanding our contacts with members of the government and the FMLN, the soon to be ruling party of President elect Mauricio Funes. The FMLN is likely to have a much greater interest in Free Software and its implications for national soveriegnty, so these new contacts may come in handy in the future.
  • Finally, Douglas now has a process in place to get the XOs. It will take 20 more days, but the cost had been cut by more than two thirds.
I'm now waiting for Paco to setup a meeting on #ubuntu-sv with the community at Buena Vista. We need to begin planning the educational part of the program, which is the real reason we are going through all this effort in the first place.

Sugar on a Stick

I asked Matt to document the process of creating Sugar on a Stick. Alas, he didn't. The wiki page that describes the process is:
Here is what I did from a root prompt on my eeepc running Jaunty to set it up as a "Sugar on a Stick Factory":
  • # apt-get install isomd5sum cryptsetup syslinux
  • # mkdir /opt/SoaS
  • # cd /opt/SoaS
  • # wget
  • # chmod +x
  • # wget
  • plugged-in a 4G USB flash drive
  • # mount (which revealed the drive was device /dev/sdc1 mount on /media/USB DISK)
  • # fdisk -l (which revealed the the boot flag on my USB stick was not set)
  • menu: System -> Administration -> Partition Editor (GParted)
  • select my device
  • menu: Partition -> Unmount
  • menu: Partition -> format to -> ext2
  • menu: Partition -> Manage Flags
  • check the boot flag and close
  • # umount /dev/sdc1
  • # dd if=/dev/zero of=/dev/sdc bs=446 count=1
  • # ./ --overlay-size-mb 600 --home-size-mb 1024 --delete-home --unencrypted-home soas-beta.iso /dev/sdc1
The script produced the following interaction:

Verifying image...
/opt/SoaS/soas-beta.iso: 53509e4773805e4657cb20f0e784a50d
Fragment sums: 3815452cc8252b238fa24ca651d8a9c7d67dd33ba13986227ed3aac4cba4
Fragment count: 20
Checking: 100.0%

The media check is complete, the result is: PASS.

It is OK to use this media.
MBR appears to be blank.
Do you want to replace the MBR on this device?
Press Enter to continue or ctrl-c to abort

Copying live image to USB stick
Updating boot config file
Initializing persistent overlay file
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6.3625e-05 s, 0.0 kB/s
Initializing persistent /home
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6.3904e-05 s, 0.0 kB/s
Formatting unencrypted /home
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
tune2fs 1.41.4 (27-Jan-2009)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
Installing boot loader
/media/usbdev.yOpIUg/syslinux is device /dev/sdc1
USB stick set up as live image!

Back at the # prompt, I typed "reboot", hit the key, selected the USB stick... I watched the fedora splash screen and waited until I got to the Sugar first time boot screen. Cool!

A Good Link

I found this blog post evaluating Python eggs from the point of view of someone used to using the debian packaging system: Why I don't use easy_install.

Monday, May 4, 2009

Logic Circuits

I love when stuff like this happens... A thread started on the IAEP (It's An Education Project) mailing list about software simulators for learning about logic circuits. My friend and co-author, Chris Meyers, developed two activities as part of his Python for Fun series on this very topic:
Several years ago, former student Peter Bui wrote a "Getting Down with..." meant to compliment Chris's lessons:
Last year student David Cooper created a logic circuit simulator in pygame, called Graphical Logic Circuits. I sent Matt and Jamie an email this morning, and they are already at work looking over David's code from last year to see if it would make a good Sugar Activity.

Getting more reST

Chatting with Douglas on irc this afternoon, he pointed me to some good resources for my study of reST:
Brendan pushed his latest changes to the gasp-lessons site on launchpad. I have my check out of gasp-lessons inside a directory named Sphinx, that also has a virtual environment. I can now use the following process to build the course materials from within the Sphinx directory:
  • source bin/activate
  • cd gasp-lessons/gasp_course
  • sphinx-build source/ build/
I updated my alias list in my .bashrc file to include the following:
  • alias gle='rsync -avz -e ssh --delete /home/jelkner/Projects/Sphinx/gasp-lessons/gasp_course/build/'
After running gle from the command line, the Open Book Project site now has the new version of the Gasp Lessons:
The coolest thing is the way SVG images just work now, as you can see in Sheet 3 of the course.

Friday, May 1, 2009

Combating reSTlessness

My goal is to come up with as many bad puns as possible to use as post titles during my study of reStructuredText and Sphinx.

Advanced Topics student, Brendan Buso, successfully created several svg illustrations for Sheet 3 in the Gasp Python Course. Unfortunately, he didn't push his changes to the launchpad site, so I'll need to wait until Monday to get them from him. The really cool thing is how easy it was to markup the illustrations in reST, and have them included in the html that it generated. Everything just works! I've waited so many years to arrive at this point, and am once again thankful to the Python community for coming up with an elegant, easy to use solution!

I now need to imerse myself in learning reST. I'm a slow learner, so the approach I will use is to use reST for as many of my documentation needs as possible. Instead of writing in html, I'll write in reST, and then use rst2html to generate the html pages. On an Ubuntu Jaunty system installing rst2html is a simple manner of running:
  • sudo apt-get install python-docutils
This package installs rst2latex, rst2s5, rst2xml, and several others in addition to rst2html. I created a file named hello.rst that contained the following:
Hello World
Then I ran:
  • rst2html hello.rst
which produced this output. rst2html sends its output to standard out, so I actually need to run:
  • rst2html hello.rst > hello.html
to capture it in a file. The html is fairly straight forward, though the CSS is extensive. My next task is going to be wrapping my head around the style generated to see how that can be used to advantage.

Wednesday, April 29, 2009

Putting Lore to reST

Back in 1999, when I started the Open Book Project, I went looking for tools that would enable educators to collaborate on the creation of free educational materials. My criteria at the time were:
  1. Easy enough to use that high school teachers (such as myself) could focus on pedagogy instead of technology.
  2. Enable nice looking output for the web.
  3. Enable nice looking output for the printer.
  4. Support the auto generation of a "back of the book" index with links from selected terms to the locations in the document where they occur.
The last of these requirements was the most difficult to find (in fact, I didn't find any adequate solution), but I needed it for marking up How to Think Like a Computer Scientist: Learning with Python.

Allen Downey's original version of the book was marked up in LaTeX, which supported requirement 4 just fine, but only for a printed version of the text. I was much more interested in the web version. LaTeX did not support requirement 4 for the web, and did a pretty bad job with requirement 2 as well. It also failed to meet requirement 1.

Someone at O'Reilly recommended that I try DocBook, but the only book available at the time for learning it was over 500 pages long and "Hello World" didn't come until somewhere in the middle. So DocBook failed to meet requirement 1, which was a show stopper. I wrote back asking if someone could mark up one chapter of my book in DocBook, and I could than just copy what they did with the other chapters, but no one took me up on that request.

Unsolicited, Moshe Zadka, from the twisted project, sent me chapter 1 of the book marked up using lore, the documentation system that twisted had created for their internal use. Lore used a subset of XHTML for its mark up, making it by far the best tool at meeting requirement 1. It met requirements 2 and 3 very well also, since the twisted folks had created it with solving problems similar to mine in mind. That left only requirement 4 unmet, and after pleading with my friend George Paci, he hacked on lore enough to get it to the point where I could use it for the book.

I've been using lore for years, and I am very likely one of the only people left in the world still doing that. It seems that the twisted project itself has abandoned it, so I realized that it was a technology without a future (Moshe pretty much confirmed that when I talked to him at PyCon this year).

Enter the Sphinx

At PyCon 2008, David Goodger suggested that I look at reStructuredText. Since reST did not have a solution to requirement 4 at the time, I looked at it but decided not to make any commitment. The situation is totally changed now thanks to Sphinx. Sphinx meets all four requirements very well. It uses reST as it's markup language, making it easy enough to learn. it produces beautiful web output, and uses conversion to LaTeX to then produce PDF output for printing.

With the help of, I was able to quickly convert all my lore files into reST. Using Sphinx, it was easy to create a great looking web version of the Gasp Python Course from the newly generated reST sources. Since teaching duties call me, I'll have to provide the details of how to do this in a later post...

Tuesday, April 28, 2009

Sugar Labs DC is Born

I think Matt now understands what needs to be done regarding Sugar Labs DC. He sent me the following two links to help guide us on setting up the wiki page:
Using these as guides, I setup our new wiki page:
I'll meet with Jamie and Matt later today to talk more about how to use this site to organize our activity.

The Customs Saga Continues...

On other news, Douglas, Raul, Paco, and I met on irc yesterday to deal yet again with the still unresolved problem of getting our XOs out of customs. After a long series of back and forth communications, the evening ended with Adam Holt calling Douglas. I hope between the two of them they are able to find a way out of this problem.

Thursday, April 23, 2009

When in Rome...

The XOs sent to El Salvador are still stuck in customs, and Douglas is at wits end as to what to do about it. Paco, Douglas and I have been meeting daily to find our way out of the mess. My only contribution has been to suggest a "Plan B": have UPS return the laptops and then have them shipped to Arlington, Virginia. They are small and light enough that we could then send them to our project in Chalate little by little with friends and family members as they travel back and forth to El Salvador. I'll check in with Douglas and Paco today and see if I should contact Adam Holt to propose this to him.

On a more encouraging note, I'm moving ahead with plans to setup the web infrastructure for Sugar Labs, DC. Our three biggest needs are wiki space, a mailing list, and a code repository. The last item should have feature and bug tracking facilities along with it. I asked Luke what he thought we should do, and he suggested the following:
This is very helpful information. It is a no brainer to follow the old adage, "when in Rome, do as the Romans do." Since the Sugar Labs community already has a set of practices for doing what we need, we should simply follow them. It is great that Luke is active enough in the community to be able to send me this list. I'll get together with Jamie and Matt today and talk about moving this forward. I may have to setup the wiki myself, since neither Jamie nor Matt have a penchant towards writing. It is extremely important for them to learn to write about technical matters, however, so I'll struggle with them first before giving in and doing it myself.

Tuesday, April 21, 2009

What's Next?

I was able to make two SD cards boot Xubuntu on the XO yesterday. My good friend Paul Flint always says that there are two answers to all Unix questions:
  1. It's a dash, dash something or other, look it up in the man page.
  2. It's a permissions problem, I'll fix it later.
This turned out to be to be the second one. In copying everything from the SD card to /opt, files that needed to be owned by the olpc user became owned by root. I could have resolved this by using the -p switch with cp, but instead I used tar. Here is what I did from a root prompt:
  • cd /media/OLPCRoot
  • tar czvf /opt/XO_Xubuntu_OLPCRoot.tgz *
Now when I want to create a new Xubuntu SD card, after partitioning and formating the card, I:
  • cd /media/OLPCRoot
  • tar xzvf /opt/XO_Xubuntu_OLPCRoot.tgz
A Few Questions Before Moving On...

I am more than ready to get back into developing Python curriculum materials and learning reStructuredText. The following questions remain to be answered at a later time:
  1. Is 0.82.1 the Sugar version we want to run on the XOs?
  2. Given how immature Sugar still is, can new Activities easily be written that will run on 0.82.1 and the latest version of Sugar?
These questions reflect the problem I've always had resolving the contradiction between two opposing goals: direct contribution to the development of the project (which usually means running the latest version of the software), and enough stability to be able to deliver a usable platform to our student users (which usually doesn't work well at all with the latest version of the software).

I'll have to come back to this in a later post, as teaching duties now call me away...

Sunday, April 19, 2009

Xubuntu Intrepid on SD Card

I've had an SD card since last December with Xubuntu Intrepid on it customized for the XO. I created it with these instructions. I've been happily using it on my own XO since that time and have made several small modifications while at the same time keeping all the packages up to date.

Now I want to see if I can produce 10 to 20 of these cards to use with our new XOs. Today I plan to test out a process for creating these cards using:
  • ativa SDHC 4GB cards
  • my Asus eeepc 1000
I started by putting the working SD card into the eeepc. The card reader on that laptop is awesome. I have yet to find a card it wouldn't read, and I put several cards into it that were not able to be read by other laptop readers.

It recognized the card as /dev/sdc1 and mounted it on /media/OLPCRoot. At a root prompt on the eepc, I then did the following:
  • mkdir /opt/OLPCRoot
  • cp -R /media/OLPCRoot/* /opt/OLPCRoot
It took around 5 minutes to copy all the files over. Since teapot's instructions assume you are making the new card from an XO, I had to adapt them for the eeepc. Here is what I did next (from a root prompt):
  • inserted the ativa SD card into the eeepc card reader (it recognized it again as /dev/sdc1)
  • umount /dev/sdc1
  • dd if=/dev/zero of=/dev/sdc bs=4096 count=1 (to erase the partition table)
  • echo -e ',,L,*\n\n\n' | sfdisk /dev/sdc (to create a new partition table)
  • mke2fs -jLOLPCRoot /dev/sdc1 (to create an ext2 file system on the new partition)
  • removed the card and reinserted it so it would automount
  • cp -R /opt/OLPCRoot/* /media/OLPCRoot/
It took about 9 minutes to copy the files to the new SD card. Actually, when I went to unmount the drive using the Gnome media browser, it popped up a window saying it could not unmount the drive, and than another window titled "Single Flash Reader" which said "Writing data to device". The activity bar in this window remained active for about 3 minutes and then closed.

It Works (sort of)!

I took the new SD card out of the eeepc's card reader and put it in my XO. I turned it on and... it worked! Actually, it booted as far as the custom Xubuntu splash screen and then seemed to freeze. After what seemed like 2 minutes, I was about to turn off the machine using the power button when the progress bar started advancing. It finally proceeded to the gdm login screen, and I tried logging in using the olpc username and password I have configured on the source card. I got an error message that the $HOME/.dmrc file should be owned by the user with permissions of 644.

It looks like this process is close, but will require some tweeking. I'll talk to Matt about it tomorrow. In the mean time, I have confirmed that the ativa SD cards will work, so I can put in an order for a bunch of them tomorrow while the sale is on at Office Depot.

Saturday, April 18, 2009

Another Rockin' OLPC Learning Club Meeting!

The OLPC Learning Club DC ( continues to be the most exciting user's group in which I have ever had the good fortune to participate. It brings together an eclectic mix of scientists, educators, children with parents in tow, hackers, and small computer techies that has made for a dynamic intercultural exchange.

I was first exposed to Scratch and eToys at these meetings. Scratch has since become a regular teaching tool I use in the classroom. I met biologist Dr. Frank Linton at these meetings, which led to the bee project and set the groundwork for aquiring the skills we will need to start SugarLabs, DC.

Today's meeting featured a presentation on cloud computing by Kim Toufectis. The timing could not have been better, since I was planning on giving a presentation to one of my classes on cloud computing on Monday. Now I can just give Kim's presentation, saving me the prep time I would have needed to prepare one on my own. Ten years ago, when I started the Open Book Project, I had hope that the Internet would one day provide a platform for educators to share in the development of high quality educational materials for the benefit of all. That day now seems to be approaching.

9 Out of 10 Aint' Bad

Of the 10 XOs we received, 9 of them worked perfectly and updated without problem. One of them reported a write error when I attempted to update Sugar on it. I've given that one to Matt to see if the can confirm the problem.

Documenting the Laptops

Paco and I met at his house the meeting to prepare for our meeting on irc tonight with the folks from Chalate. The first thing we did was to create a google doc spreadsheet listing each of the XOs we will be using locally with the project. This will help us keep track of our resources and record how we are using them.

¿Habla Español? - Part II

The Wikipedia activities were indeed language specific (that makes perfect sense). In the four XOs we are naming "azucar1" through "azucar4" and setting up to use in Spanish, we needed to remove these activites. The Activies page on the OLPC wiki says to do the following :
  • cd Activities
  • rm -f WikipediaEN.activity
That worked without a hitch, and after rebooting the laptop the Wikipedia activites no longer appear in the favorites ring.

Thursday, April 16, 2009

Streamlining the Process

It seems that my agonizingly slow wireless access was the cause of the hours long wait for the update. I upgraded another XO at school this morning using a usb ethernet adapter, and it the whole process took less than an hour.

Less than 10 minutes of the time requires active involvement of the person doing the install, so I will be able to update all 11 of our XOs myself by the early part of next week. With 30 machines to do in El Salvador, Douglas will probably want to train some folks in Chalate to do the process themselves.

¿Habla Español?

As soon as I finished updating the new machine in school, I tried switching the language to Spanish. Douglas and I talked about the project on skype yesterday, and he asked about how difficult it would be to switch languages. While I haven't done any serious testing yet, at first glance it appears to be as simple as switching the language setting in the control panel. It requires a reboot, and then everything seems to work in the new language. I'll setup the next few machines for Paco and I to use in Spanish.

Removing Packages

Switching to the language brings up another issue. There is a Wikipedia activity that loads 96 megabytes onto the laptop, and it appears to be in English only (the name of the package implied that, anyway). I asked Matt about removing packages, since we would want this removed from the laptops in El Salvador. If there is a Wikipedia Spanish package, we could install that instead.

Wednesday, April 15, 2009

Stuck in Customs

The 30 XOs which arrived in El Salvador two weeks ago are still stuck in customs. Raul and Douglas are both trying to resolve the problem. In the mean time, Douglas has installed Sugar on a Stick and is beginning to explore Sugar.

I sent Luke the LAPTOPS.DAT file I created on April 3rd. The same day he sent me back a develop.sig file with the developer keys for each laptop. Now I need to go to each one and install it.

I brought one home to try out the process. Here is how it went:
  • opened the terminal activity
  • su - root gave me a root prompt (#)
  • put in the usb stick containing develop.sig
  • used mount command to locate where the usb stick automounted
  • copied develop.sig from the usb stick to /security on the XO
  • rebooted, and at the ok message, I hit the escape key (x with a circle around it)
  • typed disable-security and pressed enter (repeat this twice)
This all seemed to work without a hitch. Matt was right about there being no problem having the developer keys for all 11 XOs in the same develop.sig file. It appears the correct key was found and copied to firmware, where it will now happily allow this particular XO to boot off of SD cards and for unsigned versions of Sugar to be installed on it.

The next step was updating the version of Sugar that came on the laptop. For that I connected the XO to my wireless network and then followed the simple instructions here:

I'll be looking into which version of Sugar makes sense for our project, but for now I just installed the latest stable build using the command:
  • olpc-update 767
from a root prompt. The upgrade process took more than an hour, and I observed a few error messages along the way:
  • rsync: failed to open "/versions/updates/60ab7dd13168405e4f9207c48a452a5a/usr/sbin/udevmonitor", continuing: No such file or directory (2)
  • rsync error: some files could not be transferred (code 23) at main.c(1385) [generator=2.6.9]
  • Update failed: Command '['/usr/bin/rsync', '-aOyz', '--no-r', '--dirs', '-l', '-c', '--delete', '--numeric-ids', '--no-whole-file', 'rsync://', '/versions/updates/60ab7dd13168405e4f9207c48a452a5a/usr/sbin']' returned non-zero exit status 23
It then gave me a new message to let me know it wasn't giving up:
  • Trying irsync_dirty update from rsync://
  • - Creating contents for existing tree.
  • - Fetching contents for update tree.
  • - Performing incremental rsync.
The install was started at 9:30 pm. At 12:30 am, it was still on the -Performing incremental rsync message. I went to sleep fearing it wouldn't work, but in the morning I was greated with the following when I touched the mouse pad on the laptop:

Verifying update.
Installing update in /versions/{pristine,run}/60ab7dd13168405e4f9207c48a452a5a

After typing reboot at the root prompt, the XO restarted and completed the software update process and I was looking at a newer version of Sugar.