Archive Page 2


A modern family

Longing has never looked this intense. A picture,. thousand words..

First look at photo… This is how I sit here every night, in my Darjeeling hostel-room. Staring out into the black of night like a seaman’s wife; a widow of the sea. Hoping to catch a glimpse of my coveted cdma telephone internet network. A blinking green light means a signal. A continuous green light means a connection. But my signal is always red..

Oh, how I remember the days that the halls of my home were filled with the mirth of young and ecstatically screaming tcp/ip packets. Running back and fro and bumping into each other.. How I laid them to bed at night, all orderly in a row. And how they would tell me all the crazy stuff they had filled their heads with that day. On their tired faces a peaceful smile as I guided them into eternal sleep, just before I would slit open their fat bellies.

These days.. I dunno.. They leave the house, but never come back.. The youth of today!.. So ungrateful.. I’m a widow of the net.


The Rock

I’m pretending right now that I’m in my cold, cold bed three days ago. Bear or bed with me. I wrote this post in my head at the time so it’s not really cheating, and (what’s with me and this Oxford comma these days) the story is more fun to read this way:


I am the bum programmer. Fear me and give me a nickel.

Yea, so I’m lying in my bed, right. And I’m kinda contemplating. Got nothing to do really. It’s a loadshedding free-zone over here. And it’s loadshedding freezing. Once again I forgot to ask extra blankets. I’m afraid that when I breath upwards my breath will freeze and will attack me from above as ice shards; which is ridiculous of course. The cold has surpassed my gloomiest predictions. All my blankets and all my clothes can’t make me warm again.

Darjeeling, the city itself, or the mountain perhaps, seems to have designs on me. I used to walk freely along its streets. Me animated, talking with my arms, yapping my jaws to my peers. But as the days passed this place has stilted me. Pinned me to one place.

First a strike scared my friends away, and closed all bars. The stiff cold trapped me in my hotel. Soon I had to abandon the promise of companionship in the abandoned bar for whatever extra warmth my blankets could give me. Under those rags I was forced to lay still as a corpse so the cold wouldn’t notice me. Afraid to breathe. Darjeeling, without touching, tried to squeeze me into nothingness. And so here I lie. Imagining myself crawling out of the other side. Whatever is on the other side of nothingness? Something I guess. Darjeeling won’t efface me that easily.

As far as I can see, it’s a trend. Darjeeling tries to squeeze everyone like a pimple. First the British who made it into a summer retreat of sorts, but fled in the winter, then they fled for good. After them the Indians made this hill their governmental summer retreat. But they also retreated from their retreat.

There are much older, more tenacious occupiers though: the Ghorkas, now India’s mercenary killing machines, who invaded Darjeeling a couple of centuries ago under their own banner, from what now is Nepal. And they kinda got stuck here. So they’re scary killers. You try to attack killers. On them the hill closes in more slyly. They’re a hard target. The average Ghorkian has a back made of butter. The cold doesn’t affect them. Getting angry at them, shouting at them.. they just look at you and blink their eyes. They’re stuck in a cue.. they switch off or start to chit-chat. What’s a mountain to do against such indifferent opposition?

Police in training suits. It's novel and modern. Even their lathi's look like they're designer weapons!

Cunningly the mountain let them be ensnared in the web that is the state of India. Let them be harassed by the economy and other ethnicities of a crushing nation. Now that the Ghorkas don’t like. Even the Ghorkas have limits. So now the Ghorkas are fighting back. They want their own Ghorkaland. They already lost a few rounds against the Indian machine, and they just lost the last one. No own state for Ghorkaland, as Hydrabad DID get.

So the Ghorkas declared a four-day strike and a demonstration. It was nice and peaceful on the central square. Funny how different everything feels when stuff like this is organised by the government. It’s also a bit of a useless gesture to strike just now. There are tri-party talks next week between the Ghorkas the state and the government, so any action before that is just plain silly.

I met a Nepali at the demonstration. An old guy from the homeland of sorts. At home they said to him: “There’s no work for you here. Try Darjeeling. Become a guide.” But it’s swarming here with guides. And now he’s scolded by the locals and he’s being told to get off the rock. Kinda ironic on a day like this. Just because he came a bit later.. But it follows.. He’s just by himself and he’s poor. He doesn’t stand a chance against the machinations of the rock.

Stay tuned next week for our next installment of ‘The Ghorkas vs. the Rock’, if I myself will have managed to hang on to it that is.


So this was three days ago. In the meantime I purchased sweaters for two Euro a piece, warm warm socks, and a heater for seven Euro fifty. Also the temperature has climbed a bit. I am living in dignity again! Ghorkas and Nepali dude still live pretty much in the same way though I think. More on them later if I’m not lazy.


Darjeeling jani ho!

Am in Darjeeling right now. Just got myself settled after two days. The preamble to the trip there from Kathmandu was memorable. Just wrote a humongous rambling Facebook post about it to a friend of mine. If you like ramblings, read on:

free Ghorka-land

free Ghorka-land

I was getting more and more frustrated as that fateful last day in kmd went by. Already I missed the morning bus ’cause travel guy Nilam failed to notice the day before that the transport bandh was cancelled. I couldn’t get hold of him this day ’cause Nilam was at his own wedding. As this wedding had thwarted my attempts at fixing anything concrete all week long. Eventually I got hold of his employee Raj, who went to the bus-stop to check it out. He said that there was a bus leaving at three in the night and at four in the night. ‘Both at night?’ I asked. Yes at night. ‘Both?’. Yes. ‘Are you sure? Raati?’ Yes, yes. ‘So that’s one hour in between?’ Yes.

I swear to you, this is how the conversation went. So I opted for the night bus. At three. Talked to Jimi and he was gonna pick up the ticket ’cause he had to go to Nilams wedding which was a stone’s throw from the bus stop. Called Raj to tell him this, but Raj really wanted me there, also so I could talk to Nilam about the trip and about his uncle, who was gonna pick me up at the Nepalese border. On his wedding day; perfect time to talk shop. But hurry up! Only 20 minutes to go. For some reason this was important. So I called Jimi at the last minute, and he could pick me up. I went to the football field, got there and got a call from Jimi that he had to take someone else. And he was already late. I kinda lost it there. Got to my house and started pounding pillows and stuff made of concrete and did some throwing around the house of things that weren’t too breakable; even more annoyed at my foot for not letting me run this off. Had been actively at this trip for three days, and as of yet absolutely NOTHING was taken care of.

It was then I got the tingle from Jimi telling me my bus would leave in about 40 minutes and that I had 20 minutes to pack my bags. And I got this calm zen state over me that I always get when I’m under extreme pressure. I love that. That lasted for about 2 minutes. As my mind made a priority list of needed items, my passport quickly surfaced to the nr1 spot. I knew exactly where it was: under the cracked glass table, in the left-upper corner from where I usually sit. It was nowhere to be found. After a systematic search of the premises, I started an unsystematic search, and after that I randomly started to upheaval boxes, bedsheets, chairs, etc. After which I started throwing stuff around the apartment for no reason at all, accompanied by cries of desperation and anguish. After that I resumed the pillow, floor and wall pounding like before the call. 5, 10, 15 minutes had passed. 5 minutes to go. Still I hadn’t packed a thing, and still my passport was nowhere to be found. The stuff of nightmares and bad pulp-tv scripts. All rationality had left me. But then by accident, it flew loose from a bunch of documents and binders in my, by now totally disorganised, administration. Four minutes to go and nothing packed. Except my passport that is. 20 seconds later Jimi walked in. So we packed my stuff, quick-snap, and all went pretty smooth from there.

In the bus, underway it was a bit Jesus fucking cold since in the haste I didn’t pack anything warm in my hand-luggage. Held my pee for as long as I could, so my seat wouldn’t get stolen, which it did eventually. In a mere 19 hours I was at the border. No uncle was waiting for me. I wonder if there actually exists such an uncle. Then I discarded everything Nilam told me and went by my own compass. We both know that is not a smart thing for me to do, but miraculously I ended up in a very cosy and cheap Darjeeling hotel about eight hours later. 27 hours on the road, and a bit on the Jesus fucking tired side. I fell in with some fun backpackers straight away, and have been hanging around with them at night.

The day after I tried to get my stuff in order, and I noticed it is pretty hilly. Smart as I am I got a hotel on the top of a hill, so I’ve got a great view of the mist and I’m guaranteed to always march up and down it. Going down to get a sim-card. Going up to get my passport. Going down to get a sim-card. Going up to get a letter from my hostel that I’m living there… waiting for the owner to wake up. Planning to go down to get my sim-card. Going down to eat. And those hills are steep. Nice place for a Jogi-hash. Today I bought all I need for a month-long stay: wireless internet access, power-strip, soap, cutlery, etc.. Time to get some work done!

It’s a funny place here. It is basically little Nepal, but with the city on top of the hills for a change, in stead of in between. Strange with hardly any cars, just four-wheel drives. No bikes. No booze as well. No live music, no events. No fun. Or it would be the Christian festival on the big square close to my home. The rest is banned by the (somewhat forced in places) Ghorka independance movement; little Nepal. Last night we got rebellious and went hunting for booze. Turns out everyone sells booze under the counter. No fun at all.

In, what, two days there’s a four day strike against Ghorka-land not becoming a separate province, if I got it right. My buddies will try to flee before the lock-down, and I will be alone; little Nepal. Sniff!


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.


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 wiki (see, 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 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 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 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 """
      <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>
    """ % (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 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 url is to open /usr/share/sugar/shell/controlpanel/model/ 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.



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


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 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 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 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 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 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 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.


Get every new post delivered to your Inbox.