02
Feb
09

the semicolon and I; past, present and future

Yesterday I was rummaging to my bookshelf, filled with books of people long gone from here, looking for some excitement. Boy did I get it: Eats, shoots and leaves, by Lynne Truss. You native English speakers probably already heard of it. It’s a book about punctuation; as in the stuff that is not letters or whites-space in a sentence.

Only the lack of candles and subsequent forced sleep withheld me from reading this masterpiece in one go. For within its pages it was revealed to me that I’m just a larva in the land of punctuation. Not once in my life did I seriously reflect upon the history and culture behind the stuff that holds our text together. I’m ashamed at how long I have dabbled in the shadows of ignorance; and I’ve got a journalism degree for Chrissakes (I’m not a native English speaker though; so don’t start sending me gloating know-it-all criticism all of a sudden!). But my eyes have opened now. At least I now have a framework that can aid me in reflection. With that in hand I can hopefully tear down the wall before me, composed of years of habit, and push on through to the valley of concious choice.

I was a bit afraid of reading it though; for I just discovered the semicolon not so very long ago. If you would run all the posts of this blog through a simple program counting the ratio of semicolons to text, I’m sure you will see an exponential upward curve. I enjoyed the semicolon, because I felt it was mine. When do you ever see people use the semicolon nowadays? I felt sophisticated. It was MY punctuation mark.

In all honesty I didn’t have a clue of its proper use. I just guessed. And I gathered that my readership wouldn’t know either, and so would take my word for it, so to speak, and admire me for being so bold and knowledgable to dare to use the semicolon.

But this book could set me straight. Dispel my improper use. I could afterwards still feign knowledge of course, but in my heart I would know I was raping language, and I would not use it anymore; disgusted by the way I had treated it all those months. My love for a punctuation mark stabbed to death by language-conventions.

And then another thought crept up: have I grown so old as to start caring about conventions? Isn’t language a mallable ball of mud; of which we are the masters? Isn’t it us who dictates the language? Much like we should dictate our will on society, and certainly not the other way around. Have I become a part of the punctuation establishment? In truth I couldn’t find the answer to that question. And before you know, you are sucked into contemplating the fundaments of your core convictions. Yes, the book is THAT deep.

When I finally arrived at the treatment of the semicolon, I had already been led through epic battles over the comma. The comma is a punctuation mark to fight for, so it seems. People have been hanged for its improper use (well, the author actually dispels this myth a bit, but hey). Great man had defended their right to its spurious use, and equally great man had denounced it with great bravado: ‘threatening each other with ashtrays’, we learn, over the correct punctuation of ‘red, white, and blue’.

So the stage was set for the elusive semicolon. But as you probably already gathered, there was disappointment ahead. Not in my way of using it though, but it appears the semicolon has social issues. Never before had I picked up a sign that there appears to be a pecking order in the ranks of punctuation.

Invented by the godfather of printing, the Venetian Aldus Manutius the Elder (1450-1515), who incidentally also invented italics, the semicolon is indeed a dying breed. Newspapers prefer short sentences. People in general are unsure of its use. But this fate doesn’t grant it a free pass to status however. Yes, the of the semicolon requires skill; but many a prominent writer looks upon it with disdain. George Orwell tried to do without in Coming Up For Air. Donald Barthelme thinks it’s “ugly, ugly as a tick on a dog’s belly”. Lynne mentions the word middle-class a couple of times. A punctuation mark! Middle-class! Yes, the author is English, and no, she doesn’t adhere to this conviction herself; but still…

And with this cheap and unfounded insinuation, the dye was cast. I couldn’t shake it off. Old wounds, barely healed, ripped wide-open; blood splattering in all directions. The semicolon was middle-class. Therefore I was middle-class. What makes matters worse is that I AM middle-class. It was confirmed. I am of the class that pays lip-service to the rich, while serving as a buffer against the poor; grey, spineless and unimaginative. I am grey, spineless and unimaginative; because I love the semicolon.

The (working-class) writer then goes on to expound on the weak character of those writers – not all middle-class – that DO love the semicolon. Writers that succumb to the lure of the semicolon seem to have a hard time to get away from its orbit. The semicolon is like heroine. Some famous 20th century writer supposedly proclaimed on his deathbed that he ’should have used less semicolons’. Virginia Wolfe couldn’t kick the habit, and George Bertrand Shaw wrote T.E. Lawrence concerning his use of colons and semicolons, stating that   ‘you are no more to be trusted with a pen, than a child with a torpedo’.

And I have to admit it is true. The semicolon is under my skin now; begging my left-hand pinky to push the button. But I’m glad I am aware now. And after a night’s sleep, I don’t care what Lynne says anymore. Me and the semicolon can make it work; with mutual respect; like a middle-class couple; until death do us part.

02
Feb
09

Custom activity-update howto

After a discussion on #sugar, I noticed that setting up a custom update-mechanism for Activities/XO bundles on XO’s is a bit of a lost art. I had to dig through the Sugar code a bit to get a clear understanding. I’ve updated the laptop.org wiki (see http://wiki.laptop.org/go/Software_updater), but it might be useful to give other deployments a heads-up on what’s involved through this syndicated post.

So the XO has a nice gui activity-updater, accessable by opening the control-panel, and then choosing the activity updater. Figures. The updater gives you two valuable functions: Updating existing activities, and installing new ones. At the moment the updater can’t be instructed to delete certain activities though, which is to bad, because otherwise deployments could contain just about all the administration of activities within one central place.

Out of the box an XO will check a default wiki-page on the laptop.org wiki. The XO expects a list of links to relevant builds of activities, together with some metadata embedded in the span/div that surrounds it. The XO will loop through all the activities in your Activities dir, it checks if it’s got a custom update url defined in its activities.info file. If so it’ll try to update from that url. Either way, it will also check the version on the page and will use the highest one. If it finds a newer build, it will include it in the list of suggested updates. If the XO finds an activity that’s not yet installed it will also be included in the list, but new activities will not be checked for updates from the url defined in its activity.info file.

As a local deployment you would want to control yourself to which version you want to update. You want to make sure the new version works for your build, and for your objectives, and not the ones of some random guy that happens to updates the according wiki-page. So what you do is point the XO to an update page under your control, which points the XO to the activities you want to put on it. To override the default update page, put a file with either /etc/olpc-update/activity-groups or /home/olpc/Activities/.groups on your system, with the relevant update urls on different lines (yes, you can have multiple).

At OLE Nepal we manage the activities on the schoolserver. So we’ve got a canonical set of activities in a folder reachable through http. In the same folder we put a dynamically generated page in the right format. A cron job checks the folder every hour, grovels the activity/info file of every one of them, and writes out a page with the correct metadata. In this way managing the right set of activities becomes a drag-and-drop affair.

As for the format of the page, take a look at a snippet from our page generator script, invoked by a little cron script:

def makeItemString(actId, actVer, actUrl, actName):
    return """
      <br/>
      <span class="olpc-activity-info">
          <span class="olpc-activity-id" style="display:none;">%s</span>
          <span class="olpc-activity-version" style="display:none;">%s</span>
          <span class="olpc-activity-url"><a href='%s'>%s</a></span>
      </span>
    """ % (actId, actVer, actUrl, actName)

So the updater will search for nodes with have olpc-activity-info as class name. Then it also wants to know the activity-id, the activity-version, and the activity-url, all extracted from the activity info file in the XO bundle.

As written above, if an installed activity has an update-url defined in its activity.info file by the activity creator, the XO will check the url for a version greater than the one in the groups file url. The latest version will be installed. This is seen as a feature, but I disagree. The url of some random page should NOT be checked. Again, we want to have control over what gets installed, and we can’t leave the risk of broken activities to chance or evil activity-developers. So I hacked the Sugar updater code ever so slightly and put it in our pilgrim local build:

The simplest way to not check the activity.info url is to open /usr/share/sugar/shell/controlpanel/model/updater.py and edit refresh_existing to not call _retrieve_update_version, but assign the values it would return if no update-url was found; so a tuple containing:

(0 if _DEBUG_MAKE_ALL_OLD else act.get_activity_version()), None, None, 0

And since the updater doesn’t check for new versions of new activities, we don’t need to make provisions for them.

And that’s about it. This gives us control enough over which activity is installed on our deployment XO’s. Cases not covered though by this mechanism are new bundles installed by the children themselves, and children installing versions newer than the ones we put in the schoolserver (which can be remedied easily enough by making sure the first tuple value above is always 0). But I’m not sure not addressing them should be regarded as missing features, or wanted behaviour.

[update] I sent a mail with some of my thoughts to the sugar-devel list and C. Scott Ananian layed out some excellent ideas for enhancing the updater to resolve to deficiencies mentioned above.

25
Jan
09

Twit

As I reviewed the posts I made on this site, I found them a bit on the long side. They were very much against the grain of current internet practice. Internetters unfortunately have lost the power of concentration these days. It was different in my time you know!

This is the age of Twitter I have found out. For you not in the loop: On Twitter people can sign up for blogs. The blog-entries for which shouldn’t be longer than a sentence. The whole thing is drenched in a little social networking sauce. So you can follow how many profound insights your friends or whoever can squeaze into a sentence. Surprised I was when someone on the internets in all earnest referred to a Twitter discourse about Gaza.

So I was faced with a dilemma: I could stand at the sidelines and moan and gripe about what progress brings us, or I could jump in the fray, and ride this brave new wave of social conduct. My heart and soul say: ‘Sidelines!’, but my lust for adventure and my fear of being left behind won out.

But I don’t need Twitter to pen down shallow soundbites. The text-saving capabilities of this blog wil suffice just fine. So here we go. My private life (now public) during Januari Twitterized:

- Spent New Years eve dancing to bad R&B, until a bit before midnight angry party-goers beat up the DJ, and after he still wouldn’t quit, threw his equipment from shoddy table on the dance-floor

- Daily power outage (loadshedding) went up to 14 hours a day

- Went to see Ghajini; hindi version of Memento: half comic love story, half violent action-movie, with song and dance!

- Interns weren’t allowed to get into the Department of Education computer lab on Wednesday because student protesters had blocked the entrance to said department

- Loadshedding went up to 16 hours

- Rumour has it that the high loadshedding hours are due to the government wanting to force money and gasolene guzzeling diesel plants down our throats, so as to ensure some shady deal

- Area of my home is out of water, perhaps because there’s not enough electricity to pump sufficient water our way

- We are rationing our showers

- Office battery backup broke down

- I am a wee bit stinky

- Started smoking again

- Water truck to pump 8000 litres of water in our underground basin for about 1300 rupees (13 eur) didn’t come for some reason

- Went to Nagarkote for the weekend with the house-girls to trade the cold city for the cold country-side

- Mountains are pretty

- Loadshedding went up to 18 hours a day

- Stopped smoking again

- Am getting a wee bit tired of loadshedding

- The whole household, many of whos inhabitants don’t dislike animals, is plotting the death of the neighbourhood dog, who is driving us insane with rabid barking EVERY SINGLE NIGHT

- Mac, MP3 player, mobile phone, DS, 2 XO’s (one for battery swap) are adhering to a strict make-sure-it’s-plugged-into-the-wall-at-night-and-when-away-because-you-never-know-when-the-power-is-back-on policy

- Started smoking again

- Water is dripping into underground basin again from regular sources, just a few hours after our ad-hoc water truck finally came

- Loadshedding hours went down it seems; rumor has it they’re experimenting with new hydro-plant

- Am less stinky

- Finally reading up on Bash scripting, as I’m a bit ashamed of my admin skills in this area

- Am absolutely horrified (HORRIFIED ( HOR – RI – FIED )) at the godawful brysantine inconsistent mess Bash dares to present us as its syntax

- the idea of programming through program return values and processes is kinda cool

- Found out that an infected red swollen eyelid the size of a wallnut does not attract the opposite sex half as much as expected

- Lost again playing poker

- Missed Ministery of Sound, who alledgedly played at Platinum just before we arrived

- Felt like a script-kiddie-hacker when I, as a reluctant soldier in Microsofts officious volunteer army, armed with a Linux live cd, cracked XP admin password to unlock locked user account of roommate

- Stopped smoking again, due to sickness

- Had to prospone Nepali artist interview once again (sorry Ram!)

- Finally got what I was craving for for (four?) months: a birds-eye view of the Linux kernel, while reading Linux Kernel Development 2nd ed. (really as an excuse to get away from Bash)

- Am reminded again at how ugly C really is

- Sorda, kinda started smoking again

- Power cuts are a practical way to curb my Weeds viewing addiction

- Got woken up today by a puppy licking my face

- The posting of this post has been constipated due to puking and pooping and tummy problems for about a week

30
Dec
08

Customizing the XO image

Bryan asked to write something about the XO-customization build process for OLE Nepal. See this post as the second installment of the OLE Nepal deployment series.

So here we go:

First: why do we need to customize a standard XO build? What’s wrong with the one supplied by OLPC. Isn’t that one tested through and through, and shaved to perfection?

Absolutely. To perfection… Well, almost… But that’s besides the point. In a software package as big as a total XO install, it’s just about inconceivable that the local requirements overlap a hundred percent with OLPC’s. General stuff, like proper support for Unicode keyboard layouts, is… general enough for OLPC to integrate in the standard software. But between us wanting it, and them integrating it in a stable build lies a time-gap to great to wait for. And since we are progressing with local stuff over time, we will have new requirements, when the old ones are integrated. Also we have, or might have requirements that OLPC just isn’t interested in or for which it just doesn’t have the manpower. And then then we have local configurations like our own update server for Activities or System software, which are scattered around the filesystem.

It’s easiest to keep track of all these changes in one place, and we made our own version-controlled Pilgrim build to do take on that burden. For the uninitiated: Pilgrim is the XO filesystem- and image-builder that the folks at OLPC use themselves to build their images.

The biggest benefits of Pilgrim over for example cloning (which we did before) are:
- All the customizations are contained in scripts, so you don’t have to document them, so you can’t forget certain steps
- It forces you to structure the files needed for customization, and while you’re at it, you might just as well version-control them
- You get a customization factory which builds lots of different useful files, like image files, with which you can flash XO’s, the .usb files which you can use for machine-local olpc-update-s, and an fs tree which you can use for olpc-update over the network. (note btw that olpc-update preserves user-data).

A rival of Pilgrim is Puritan by the way, written in Python, mostly by Michael Stone, which tries to be more elegant about things like caching, debugging and aborting the build process, and building and customizing the image (and has a cool way to use Git for changes). The need for something like Puritan is there, because Pilgrim IS a big daisy-chain of hacks.

Pilgrim nitty-gritty

So what kind of stuff did we change at OLE Nepal? Perhaps a bit more overview first. Say one would want to get a clean 8.2 image. One checks out Pilgrim, sets it to the right build (be it 8.2 or 703 or whatever), installs some dependencies, make-installs it and enters an incantation on the command-line to let it poop out the .img file and its brothers and sisters. And voila!

But one wants and needs to hack pilgrim a bit. The relevant big ones are the ‘pilgrim’ file in the root and the olpc-development.stream one in the streams.d dir, with some auxillery config files sourced in. A few thousand lines of bash scripting, so it’s a little dynamically scoped monster.

The first step was to cache all the rpms needed for building the XO local, since downloading them from outside Nepal takes hours and out of the box Pilgrim deletes them. We put them in a local Yum repo, and edit the yum directives  in olpc-development-yum-install.conf accordingly.

Also we revived the automatic installation of activities. Which needed a little bit of love, since last it was used it still put all of them in /usr/share/sugar. Also the installer expects an html file with links to the activities you might want to install, which it wgets to a local directory, after which it takes the latest version of the ones you specified in olpc-development.stream. So you might want to have a script to generate that file from the contents of your activities directory, much like what one needs for the software-updater, but a bit less sophisticated.

Related to the last paragraph, you’ll find that the fake mounted image in your build-system will fill up pretty quickly with all that activity content. A bit to quick actually, since the XO uses jffs2 which will compress your fs pretty tight, while pilgrim configures the image on your build system to only one gig. So you might want to set PILGRIM_FS_SIZE_jffs2 and/or PILGRIM_FS_SIZE_devel_jffs2 in olpc-development.stream to double that amount, which is about right I believe.

Then some customizations on what output would be created was necessary. First of all we want to use olpc-update for updating the XO’s from time to time. olpc-update expects a filesystem tree, and a contents file pooped out by pilgrim. With the standard build, pulled from the interwebs, the files aren’t put in the right order and place (or, at all really) to be consumed by the olpc-update script present on the XO’s.

Also be ware if you want to olpc-update from your own server with a 703 build. Its on-board olpc-update version doesn’t have the option to specify another server than the standard. And the development version of olpc-update doesn’t contain all the bitfrost files needed by 703, since it doesn’t have them itself yet. You can just supplant the bitfrost dir in the development version with the bitfrost dir from a recent XO build ( /usr/lib/python2.5/site-packages/bitfrost  works with the one from 8.2 in any case. Should still send a patch). AANNDDDDD, olpc-update pulls in files from the server through rsync://…, so set up a correct rsync daemon conf file in /etc, and start the rsync daemon at startup.

And also the standard pilgrim will make tars out of the fs that you’ll rarely need but will take forever to build and take up useless space. So we commented them out.

XO customizations

Then we have to deal with the customizations to the XO itself. The whole reason for this operation.

1) We had issues with xkb and the traditional Nepali keyboard layout. SCIM solves these issues, so that’s what we installed. Everything, except for Write, seems to work for us. Since we’re expecting to work that kink out of the cable, we’re switching to SCIM. Adding extra packages in Pilgrim is just a matter of adding them to the yum list in olpc-development.stream and making sure you point to a repo that holds them and their dependencies.

2) The same holds true for auxillery packages needed by certain activities. We want flash and gnuchess for example, and xpdf, which comes with its own set of dependencies.

3) Then we have config files that we want to hardwire. So the xo’s should update from our schoolservers, not from the laptop.org wiki or from a location specified by the activities themselves. So we put a file in /etc/olpc-update. Of course you can do that through the gui, but you don’t want to do that for every XO that goes through your hands.

The correct way for incorporating these configurations is perhaps making rpm packages, but to me that seems like to much of a hassle for no real gain, so we’ve got our own ne-customization.stream-module for that. Makes it sound nice and official.

Other victims are the scim config dir, the list of default activity favorites, Nepali espeak data and the wpa2 password for the schoolserver if utilized (connecting to aps with wpa2 set is very flaky atm).

Right now we can’t just put our images on non-unlocked (so locked) XO’s, because we can’t sign them (olpc-updating locked XOs to unsigned builds should perhaps not be that hard though, if all one needs to do is tweak the olcp-update script), but apparently OLPC is working on a solution for deployments.

Of course we tested the builds, and they work as expected. So now we’ve got a nice updater and a nice custom image generator. Pretty sweet!

Oh! And happy New Year, to the ones who celebrate! And also for the ones who don’t. No need to be cheap.

22
Dec
08

Shielding against fate

As written before, at the moment we’ve got two pilot schools, fairly close to our office. We, them and the Department of Education are connected to eachother through a simple network. If something goes wrong software- or hardware-wise, or we need to upgrade XO’s, it’s fairly easy for us to come over and fix stuff on the same day.

But actually that already is a hassle. Whoever goes to the schools looses a day, and putting new activities on 135 XO’s, repeating the same mundane commands, is time consuming. In spring we’re gonna deploy a couple of thousands XO’s to 15 schools around Nepal. We need automation! And not only that; we also need compartimetalization. Actually we are trying to strike a balance between the easiest way to put content on laptops and the most robust way to put content on laptops.

The problem

That is to say, in a country like Nepal you can’t count on anything. Take power for example. Our office is located in the center of Kathmandu, the capital. For two days running now we hardly had any power (so I’m filling my time writing blogposts on my XO). For one we have scheduled power outages which total 10 hours a day (‘loadshedding’). Rumour has it this will go up to 18 hours a day. Our battery-backup system can’t handle that many hours. Also our UPS has problems. Something that’s gonna happen in the field as well, but then there’s no power-engineer present on-site to address the problem.

A related issue is the fickleness of internet connections. Often we at the office don’t have internet because of problems at our ISP or with the connection from Nepal to the outside world. And of course no power automatically means no internet. And this can happen on a number of levels. Our schools are connected to the internet through the computer-lab at the Department of Education (DoE). And DoE is equally affected by loadshedding. Last week we discovered that the capacitators there can’t handle the power-requirements of the battery-rig we set up in the lab. No power at DoE, no internet for the schools.

The solution

And it’s not just about internet access. We’re gathering more and more content for the kids to use during their classes. Way more than we can put on their XO’s. So they need a way to access that information, and we need a way to easily update this information. An ideal scenario would be putting that content on a central server and to let all kids access that content on-demand. An additional benifit is that kids from non-pilot-schools can also benefit from our efforts. But because of network and power issues we can’t rely on a central server alone. And this is where things get messy. So software-wise, what we’re sort of trying to create a little three-layered system.

1) At the top there’s a central server, capable of upgrading the schoolservers and able to serve all our content to everybody that has access to the web.

2) The schoolservers have a local copy of all the content, since we can’t count on the central server. The schoolservers should be able to upgrade the XO’s. Both the system software and the content, which both have different requirements.

3) The XO’s themselves of course.

Upgrading the system-software is the least of our problems. Right now we use olpc-update from local servers who get custom builds, made by Pilgrim, from the central server. Upgrades will be pushed only once in a while. Content is a different problem. Since we can’t count on the schoolserver being up all the time we need to have content on the XO’s themselves. But since we’ve got too much content, some should stay on the server.

Our plan is to have the content needed for specific lessons of the current week, the last week, and the next week on the XO. If the kids want or need to access more info, they should be able to get it on demand. And all of this should be transparent and automatic. We’re gonna use Moodle to specify the content for all the school-weeks on the schoolservers. We’re gonna use google gears to cache three weeks of content on the XO’s. If for a specific week the content is not to be found locally, the XO’s should go to the schoolserver and get it there.

Most of the stuff cited above is being worked on. We’ve got a lot of content. We’ve got a central server for that content. We’re putting the last touches on our customized version of the OLPC schoolserver software (0.4 atm). Thanks to XO version 8.2 we can update our own set of activities from our local server. We’ve got our own Pilgrim XO baking factory. Olpc-update:ing from a local schoolserver works fine.

What doesn’t yet works is the whole Google Gears/Moodle setup. Moodle is set up properly but Google Gears hasn’t had enough love yet. Our in-house developed content also isn’t yet integrated yet, but our individual activities made in both Squeak/Etoys and Flash, can easily be split up and accessed through the web individually.

Also we don’t yet have a mechanism in place to update individual schoolservers from a central server. And again we need a separate mechanism for system-software and content. This is the only aspect we haven’t worked on at all so far, but we still have a few months till the deadline in mid-April. Should be time enough… we hope…

22
Dec
08

Deployment preparation

So this summer we’re gonna deploy a few thousand XO-s in around 15 schools, in around 5 districts in Nepal. How are we preparing for it?

The first question might be: what do you need?

- software infrastructure
- a well functioning, customized XO image
- a good plan to set up networks for these schools
- money
- people to go to these schools and have the knowledge to set up the schoolservers, the network, train the teachers and pour their knowledge into a local person, who can troubleshoot and will be our contact when we upgrade or something goes wrong beyond their control

These five items might be a good starting point for a blog series, and darn it, they are. In the next weeks I’ll write a bit on all of them, except for the last one, because there’s already enough written on them over on the OLE Nepal blog. See ‘Deploying Volunteers’ and ‘The Intern Experience’. I’ll link to the items in this post when they are written.

13
Dec
08

Moving along

The path from the ring-road to my house is littered with speed bumps. It’s ridiculous. There are nine of them all about 20 metres apart. And that’s on a road that’s really some sort of shopping street for the most part, and the road is to small to be able to drive fast in anyways.

I thought it was just my street but a few weeks ago I actually came across an article in the paper which complained about this practice, which apparently is being practiced all around Kathmandu. It seems to me that the bump-layers get a quota per district and they just lay them all at once just to be done with it.

Have you noticed that fate seems to follow exactly the same pattern: Lay lots of speed bumps all at once just to be done with it.

‘Fate spins it’s little web’. Yeah right. Like it’s a delicate operation. ‘Fate bulldozes your house’ would be more apt a lot of the time.

Point in case:

I’m gonna move in the next couple of days. Not once, but thrice. Yes thrice!

1) Tomorrow I’m gonna move in with a couple of Australian girls and an American one. Here, in Kathmandu, Nepal.

cimg1115

Moving-to-Rotterdam gift from '95. Part of the '08 Rotterdam moving preparation photo series. Curtosy of Marja.

2) After having occupied the better half of a floor for four years the stuff I’ve got laying around in my old apartment in Rotterdam, Holland has gotta move because my old roommate is gonna move in with her boyfriend (She’s so selfish. Where am I supposed to live when I get back!).

3) I’m still on the contract of the house I shared with my ex in Eskilstuna, Sweden. She wants to move asap, but she can’t because she has to get my consent to leave the place. I hope she takes some of my stuff with her.

So my stuff all over the world is moving. Perhaps it’s a good thing. Perhaps all the stuff, and the people herding it, will be a bit closer to each other after all of this is done. But I am getting a bit tired of the logistics of it all.

The contract thing is the easiest of course. Filling in some stuff and faxing it. Then after a while there will be some stuff sorting issues but that will be of later concern. The other two sites are a bit messier at the moment.

Here in Kathmandu the situation is a bit weird in a way because I’m not just bringing my own stuff along. Just about all ex-roommates and ex-colleagues left in a hurry for one reason or another. I’m like a little left luggage department. Except for the fact that the luggage isn’t lost but the respective owners. Well, it’s always a matter of perspective of course. It’s just that for once I’m more sympathetic with the luggage.

In Feb I came here with two backpacks and some money in my pocket. Now the money is gone, it seems to have solidified in lots of junk. Which is not true btw. The money went into other things. The junk I inherited from the same people that I got the luggage from. So now all of a sudden I own a rice-cooker, lots of reed furniture (bed, couch, chairs, tables, cupboards, baskets, benches), loads of sci-fi books, lots of clothes that don’t fit me, garden chairs, two of those Italian stove-coffee-brewers (not actual people but those metal things with a beak), roti-creation-utensils, an electric heater, an army of plastic cleaning vessels, a unicycle and lots and lots more. Yesterday evening, when I started packing, I still went into this with the pack-half-an-hour-before-lift-off mindset of a backpacker: “passport, check! money, check! bag seems heavy enough to contain some clothes, check! Let’s get outta here.” I now see the error of my ways.

For the Rotterdam one I am not on-site. That’s a bit crappy. I’d like to know which trigger-objects of my precious memories will be preserved and which ones will be cast into oblivion by ignorant hands, operated by ignorant people.

I asked my roommate Marja to jolt my memory with some piccies. She complied and embarked on an odyssey of photo-shooting. She mailed me around 15 mails which all had attached to them around 6 photo’s. In the end I got 89 pictures worth of info on the state of all my Dutch belongings. Before I looked at the session I thought, for the sake of logistics, to salvage about two boxes. One for important papers and one for mesmerising purposes.

cimg1100

Grumpy old desktops. Part of the '08 Rotterdam moving preparation photo series. Curtosy of Marja.

I should never have looked at those pictures. The greedy little reptile part of my brain took charge quite vigorously when my head tried to democratically decide on the individual pieces. It issued veto after veto and in the end I wanted just about everything except for my old clothes and the array of desktops in the hallway that over the course of four years seemed like ancient dinosaurs, left in the dust by Moore’s law.

Here in Kathmandu I just finished the BIG SORTING. I’m a bit anal about that. All and every item has found it’s brethren. The heap of batteries is lighting up the night. Lots of flirting, lots of rubbing skin, in an electric frenzy that can’t last till morning. Candles ignite with joy seeing loved ones long gone, weeping for those that burned up to quick. But nothing is in boxes yet. And it’s getting late. In my optimism that all will sort itself out I didn’t press my friends hard enough to come and help me, and so I’ve got no sure confirmation. Well, we’ll see about that in the morning.

01
Dec
08

Cheers to relief-aid

Since I’m living here all by myself in my beautiful three-storey Bagdol abode, I’ve been looking around for a new place lately. Preferably with some other people, cause I don’t really like to live alone. Yesterday I went to check out an apartment very close to my work. I would/will (I dunno yet) be living with two Australian girls from the Hash and so we talked a little the evening I was there. One of them is involved with the flooding that happened some months ago in the east of Nepal. She told one of those classic stories of social horrors that’s hard to comprehend for us mere worker bees.

Just a quick recap: last August the Koshi river broke through it’s eastern embankment (through the collapse of a dam I believe) and flooded a big part of the flat, fertile part of Nepal, the Tarai. Then the water streamed on into the Indian province of Bihar. About 60.000 Nepali’s had to move and about 3 million… let me repeat that… THREE MILLION Bihari’s had to high-tail it. Leaving flooded farmland, dead cattle and destroyed crops which would have been eaten by the locals of course, and which is vital for the rest of the country.

I learned from the room-girl that the water still hasn’t been sealed up yet (the breach grew from 300 meter in August 18 to over 2 km due to erosion). We in Kathmandu probably only have felt this directly in that the loadshedding (scheduled power cuts) hours have gone up; a/the dam(s) alongside the river supplied power. But there’s still running water over farmland, villages and such. I don’t know how much land, and how much people is/are affected, but that isn’t the biggest problem here.

In a couple of months it’s gonna be monsoon season again. Room-girl was quite sure that they couldn’t seal the hole before that. So enormous amounts of water in river, breach not sealed yet… Not good. Embankment will erode once more. Again massive floods.

Now that’s a natural disaster. Force of nature, bad planning, perhaps… no, probably not enough resources allocated. But there’s quite a vicious social horror story attached to this. Which makes this whole thing damn right evil, if not purposefully then through negligence to investigate the issue by the responsible policy-makers:

All those 60.000 people had to go somewhere, right? Most of them went to the big cities, and so a lot went to Kathmandu. As a LOT of rural people went to Kathmandu over the past years. Policy-makers would rather want them out, so now they offer these people the sum of 150.000 rupies a person (could be wrong by a couple of zeroes) in relief-aid IF they sign this piece of paper that they march right back to their ruined farmland and homes and dead buffaloes and wait for the next flood to displace them. Just what the neglected, poor, ethnic-tension ridden Terai needs… Ain’t that evil?

I wouldn’t even mind if someone out there on the interwebz could harshly point out to me where in my post I tried to rape reality.

27
Nov
08

Boring work-description

Well, you might not have suspected it from my blogposts of late, but I AM actually here in Nepal to work. Since I don’t read much on the net about the inner workings of the XO deployments, I thought it would be nice to spend some brainpower and time on our rapidly expanding deployment-NGO-startup. Consider this an introductinary post. I’m a sucker for framing, so the following will perhaps be a bit to general for the acquired taste you undoubtedly have, but subsequent posts will bite more into the flesh. Is the plan…

So what did we do again? Giving cute little laptops to cute little kids. Not all the time do we perform that tangible act of course. Until now we only distributed 135 of them to two pilot schools. When I came to Nepal in the end of Feb we didn’t even have those yet. We had about five at the office in total. And it was a hassle to get your hands on one to test stuff.

There was less to test of course. On the productive side, there were only three activity developers, one graphic designer, a Bryan, one curriculum expert and a freshly hired admin and we didn’t have to worry at all about networking and server interoperability.

After three quarters of a year we tripled in size. We’ve got 6 activity developers (and we’re looking to hire two more), two graphic designers, two curriculum experts, a network guy, two admins, still that Bryan, a power guy, four volunteers, a me, a guru (not the Indian kind though, we’re not that kind of organisation; more the “in the old days we cut our bytes out of the bones of buffalo’s” kind), and there’s no sign of saturation.

coders at work

coders at work

So yea, we’re a startup. Operating in uncharted territory. When was the last wave of laptop deployments in poor rural area’s? Before the AI winter? No there was none I tell you. So requirements change all the time; the mess we need to control grows exponentially.

And time is never on our side. In my perception the last couple of months the biggest struggle was in content creation. Perhaps because I was very involved in it. We write activities to compliment the Nepali curriculum and it was a big struggle for us to churn out enough of them to satisfy the hunger of classes 2 and 6; the ones we initially service. How should the activities look like? Where do you pin the needle between quality and quantity? What’s the workflow?

But now we’re starting to get some rhythm going. We ended up creating a framework for every activity; with introduction, notes for the teacher, a theoretical part and a practice part. The activities are now properly versioned, packing is automatic. Still we’re struggling with a number of aspects, but it almost seems like we know what we’re doing!

Now the centre of mayhem-gravity has moved towards deployment. Or perhaps it’s just that I’m mostly involved in that atm :) . In spring we’re going to expand our operation manifold. Nothing is certain, but we’re going to deploy thousands of XO’s. Today I heard the number of around 7000 (it’s a fuzzy number-type), perhaps more, perhaps much less. Nothing is certain as of yet, but that number is gonna be a hell of a lot bigger than 135.

All those XO’s need to be connected to schoolservers. All those servers need to be connected to the internet. All that equipment needs power! The XO’s need to be updated in batch and reliably. Teachers need to be trained. Wireless networks need to be installed. XO’s need to be repaired. And all this needs to be done in remote area’s in perhaps the most mounteneous (is that a word, and if so, is it spelt right?) country of the world, with inherent massive logistics problems. It’s a huge task for a small organisation as ours, and we’re working hard to get up to speed.

Especially the scale scares me. Imagine you accidentally put on some wrong firmware version, and you brick 7000 XO’s all over Nepal, without experienced on-site help… you, ehh.. well I at least would disconnect from the internet and run into the nearest pub to.. ehh.. reassess.

Baby steps.. First things first. One thing we need is a reliable way to update general XO stuff. Say we hack Sugar to force activity updates from only the schoolserver (check) we should have a reliable way to update the XO’s. So I figured using olpc-update from our schoolservers. A good suggestion from the olpc-devel list was to set up pilgrim to prepare for a sane way to service the update script, with the added benefit that we automate our custom XO build-process. Which makes perfect sense of course.

That’s a nice rounded task. I can handle that. Baby steps…

29
Oct
08

Taxi driver

Yesterday I took a cab-ride out of my previous life. From the tourist district Thamel to my place in Bagdol, about 15 minutes away, but not before the driver delivered Anoek at her place in Leinchaur. Beforehand we haggled the price down to 250 rupies (100 rupies ≈ 1 euro). After the Anoek-drop-off, I got into somewhat of a surreal conversation.

a totally unrelated picture, and not a good one either, but at least it's got a cab in it on the right

a totally unrelated picture, and not a good one either, but it was the only one I had with a cab in it

For a while now I’ve been wondering about how much cab-drivers earn around here. I’ve always been hesitant to ask though, because I knew I would be embarrassed by the reply and I was afraid they would be too. Yesterday however things started off a bit the other way around. The cabbie wanted to know a bit about my housing situation. How much did I pay for the rent (about 5000 a month in an ideal situation), did I have a nice garden (yes I do!), do I have air-conditioning/heating (no, and I’m gonna suffer in the next few months).

The for me nameless driver was talkative, but serious. Tired and inquisitive; not the social-overflowing-chitchat kind of driver who is normally the one to drag/strike a conversation out of nothing. For some reason his composure enticed me to return fire.

So I asked him about his monthly wage, his home-town and his living conditions. The conversation was scary. Not because his answers were shocking. Exactly the opposite actually. He gave an account of the state of things that was so polished in details, so standard, that it seemed to flow from the hands of an unimaginative novel writer. The details he gave to color in his life, without me asking for it, his frankness, his background, even the numbers concerning wage (all are divisible by four) were in harmony somehow. It almost seemed he was taking the mickey out of me.

You should know that in Holland, in the nineties, we had this tv-program called Taxi, in which some actor engaged his passengers in conversation. We on the couch could see the end result on our screens. Ever since I’m paranoid that I’m being filmed in the cab. (In Rotterdam these days, this is standard fare btw (excuse the pun), but those are security camera’s. Kathmandu is quite safe in comparison.) I’m pretty sure though that this guy had better things to do than fiddle with electronics. It just seemed like he wanted to get his situation across to the kind of person that has the leisure to read blogs.

So here it is, his life. As I said before, it’s not exiting. It’s the kind of story you hear all the time. Thirteen in a dozen. And you internetters are a jaded bunch, so you might just as well skip it.

He has been transporting people here in Kathmandu for 16 years. The first four years he was a riksha driver, the last 12 he was a cab driver. The chauffeuring trade isn’t all that easy in Kathmandu. There’s a lot of competition. Only government or NGO jobs are nice, because they’re relatively secure and pay good. Otherwise you’re usually on your own driving a cab: Small, square, white things without suspension, often adorned by their owners (haven’t spotted a women cabbie so far btw) with religious symbols or pics of Hindu actresses. He comes from a small village, the name of which I forgot, as well as the area it’s in. The living conditions were crappy. The hills around the village were bad for growing crops. So he left for Kathmandu. He still sends money home.

Almost none of the cab drivers here actually own their car, so they rent them. The money flowing in from rides every day is about 1600 rupies (so 16 euro’s), but almost all is lost, mostly to car-rent and fuel (the price of which has gone up very fast in the last few months). At the end of the month he’s got 2000 rupies left, which is less than 10 times what I make in Nepal, and about 100 times less than what I made in Sweden (which was pretty much the minimum for the kind of work I did). He pays about 1200 rupies a month for his room, the rest goes to food: Dal Bath (rice with lental soup and veggies) every day. Just one glass of roxi (clear, tasteless booze, comparable to the Dutch jenever) every night, the quality of which isn’t half as good as the pure stuff you get on the countryside. Then it’s time for bed. Repeat 365 days a year, except for Bandas (the strikes here that happen about once every four days) and the occasional festival.

And there are millions and millions and millions like him… of course.

That’s all folks.