The Thanksgiving Turkey Murder

Claudia is leaving Malawi in four days. Me just a few weeks later. We decided that Thanksgiving was not a priority - perhaps last night's leftover chimichalupawangas would do the trick.

So it was Thanksgiving. I was working. I had meetings. I was handing over. I decided to head home for lunch, because Claudia and I had precious few days left together in Malawi. On the way home I saw two guys walking along the side of the road. They had turkeys. I thought - cool - nice to see some turkeys on Thanksgiving. Then it hit me. How many Thanksgivings in my life will I have the opportunity to impulse buy my very own live turkey. So I hit the brakes, turned around and beckoned the turkey dudes over.

Could I really just buy a gigantic turkey and put it in my car? Would it crap all over the back seat? Fly at my head while I am driving? Looking at the turkeys splayed before me, and I considered slaughtering a baby turkey - it was smaller, but I realized the fallacy of this approach and negotiated my way to a full on gigantic turkey.

[caption id="attachment_229" align="alignnone" width="300" caption="Turkey market"]Turkey market[/caption]

Its legs were tied and my turkey trader laid him across the floor in the back seat, and the turkey seemed pretty happy. So I headed home. Arriving home I yelled to Claudia to hold the dog - she had no clue why. I approached grinning holding my turkey. Claudia was not pleased. She wanted nothing to do with killing an animal and eating it. As for me, I just couldn't help grinning - I had a real live turkey!

[caption id="attachment_230" align="alignnone" width="300" caption="Me and my turkey"]Me and my turkey[/caption]

I was going to ask George, our gardener to kill it, and then have Alice our housekeeper de-feather it and prepare it for cooking. But then I realized, that was not the real experience. It was time for me to face up to life as a carnivore and kill an animal with my bare hands.

George showed me how to put one foot on its legs, the other on its wings and then grasp its neck with my left hand. I stared down the turkey for a long time. I tried to consider all of the chickens I have eaten, the hamburgers I was raised on, and to realize that my sustenance has come at the price of many, many lives. The turkey didn't seem to care too much. It was calm in my grip. Didn't it sense that I was about to end its entire consciousness permanently? I guess hundreds (thousands, millions?) of years of breeding had broken the turkeys resistance to its place in the foodchain. I picked up sharpened garden clippers that George assured me were the right tool for the job. I wasn't sure I was going to be able to do it. But I wanted to do it well - I didn't want to make the turkey suffer - it should be fast. With my resolve set I went for it - and planned to cut the neck in a few strokes. But it wasn't easy. My strokes weren't cutting the red loose neck skin. I had to push harder, and grip the neck tighter. Then I pierced the skin, the blood splurted and I pushed with all my might until the neck snapped and I was left with the turkeys face free from its body, opening and closing its mouth in my hand, while its dismembered body quivered and tried to get up and run. George held the body down - it took what seemed like forever - probably 3 minutes or so - for it to calm itself.

I put the face down on the palm fronds that George had arranged as the place of slaughter, and we plunged the turkey body into hot water. We then plucked the feathers easily, and I tried to memorize all of the steps George did next. We pierced the fatty tail, removed the stomach, pulled out the entrails, the gall bladder (George emphasized the importance of the gall bladder) - the heart, etc etc. It started to look like pretty much any other supermarket turkey.

With the man's work done, George passed it to Alice our housekeeper who cleaned it a bit. I rubbed it down with spices and put into the oven.

Less than 3 hours after I had taken the turkey's life, Claudia and I were eating it.

(More photos here)

The craze and the menace of skateboards

Better Friedman and Slashdot rss feeds

My wife has been insisting that I read Thomas Friendman every week. So I added the RSS feed only to find that it just gives me the first paragraph. L4m3rz!! Clearly there must be a way around this. His column is fully available, but the RSS feed is crippled so that I will have to click on the headline and visit the NYTimes site and be subjected to their ads (which are blocked for me anyways, because I use AdBlock Plus on Firefox (why waste my precious African bandwidth downloading ads for stuff I can't buy anyways?)).
A bit of googling led me to a very useful find: This tool basically fixes RSS feeds by getting the content that you want. I pasted in the RSS feed for Thomas Friendman which I then sent to google reader, my RSS reader, and voila - now I get the full text of Friedman's articles without having to shake, roll over or go into my crate first.
I then thought I might as well see if this same trick could fix another of my longest standing RSS feed annoyances: slashdot. Slashdot was my first RSS feed but the clever hackers at Slashdot have purposefully removed the inline links in their text - so if you want to actually click on any of the stories you have to first go to Slashdot and load up the entire page full of script kiddie rants just to find the original story source. But the echoditto script did the trick here as well. Same slashdot stories now with links!
If you want to save the effort of finding the RSS URLs and just want to add the new and improved versions, click below:
Full text Thomas Friedman RSS Feed
Slashdot RSS Feed with links

iPod Touch on Ubuntu via VirtualBox

So I finally am able to do full syncing on my iPod Touch with iTunes despite running only Ubuntu. I use Virtualbox to create a virtual instance of Windows XP. VirtualBox makes it really easy to install Windows within Ubuntu. There were a couple of hurdles to jump to get USB working, but I followed the instructions and was able to plug in my iPod Touch but then iTunes crashed out with an error, something about 0xE8000035. I eventually found that other people had the same problem and waited for a fix. None came, so I tried vmware, which people claimed success with - but I couldn't replicate it. And then a few days ago, some guys posted a hack that required rebuilding the Linux kernel and all sorts of fun stuff, so I gave it a try and I am in business. Who hoo. Now if I can just unlock it so I can get to reading books...

The final magic recipe to make VirtualBox support iPod Touch with a guest Windows XP under Ubuntu is as follows:

sudo apt-get build-dep linux-source-2.6.24
sudo apt-get install linux-source-2.6.24 build-essential
tar -jxvf /usr/src/linux-source-2.6.24.tar.bz2
cd linux-source-2.6.24/drivers/usb/core
perl -pi.bak -e 's/16384/131072/' devio.c
make -C /lib/modules/`uname -r`/build/ M=`pwd` modules
strip --strip-debug usbcore.ko
sudo install -m644 -b usbcore.ko /lib/modules/`uname -r`/kernel/drivers/usb/core
sudo depmod -ae
sudo update-initramfs -u
sudo reboot

(I love the iPod Touch but all of this made me hate Apple and its closed ways. Bring on Android!)

Military Service in Israel

A few years ago I had an incredible couple of weeks traveling solo through India. One night I had dinner with a group of young Israelis who invited me to join them. It was great. I did not know about mandatory military service in Israel and how both men and women (boys and girls?) were forced to participate. Military service is not too uncommon in the world of course - but the experience of doing it in Israel is another thing entirely. Turns out, many Israelis head to India and spend months or years or lifetimes in drug induced escape from all that they experienced as part of their military service. I have become more and more fascinated about Israel ever since (The People On the Street is a great book) and can't wait to visit. A few days ago, BoingBoing posted a link to a photography project about women (girls?) in the IDF. I started clicking and was fascinated by these M16 carrying girls of so many races, all of one race, fighting millenia of injustice with the tools of injustice, so innocent and yet not.

Girls in the IDF

Obama on Africa

Last night Obama was on Letterman and spoke at length about Africa. Not even looking at what was said - the fact that Africa was being discussed at all was great. But looking at what was said is pretty great too:

Dave: “Well, it’s pretty short now. Just a couple of months and there will be the election and the inauguration in January. Do you ever think about going to Kenya as president of the United States?”

Obama: “You know, I do think about that. I went there a couple of years ago after I’d been elected senator and, you know, it was moving for me to see people’s response. You know, sometimes we forget how people overseas look at America. They place so much hope in the United States, and that’s something I think we’ve forgotten because we always hear bad news about how, you know, people don’t like Americans anymore. That’s not true. They’re disappointed precisely because they’ve got high expectations, and obviously, given that my father’s from Kenya, there was a special connection, so we were just seeing these enormous crowds, and you know, I went up to the village where my grandmother lives and folks were lining the roads for miles. And, you know, we took an AIDS test because the CDC, which is doing great work - this is something that George Bush has done well is work on AIDS issues in Africa, he has made a serious commitment to it and I give him credit for it. But the CDC that’s working over there, they asked Michelle and I to take a test because they said just the act of you as a married couple taking a test, potentially a million people will see it, and you can save thousands of lives just by people getting tested. So it was a great trip. I can only imagine what it would be like if I were president, but we have 55 more days of work before we get to that point.”

Dave: “What - I, for like the last 10 years, even longer - for as long as I’ve been aware of stuff,” (audience, Obama laugh) “rarely do you hear positive stories coming out of Africa to the point where you can create the impression the continent could be lost. And you mention George Bush actually providing medical care and food and funding and so forth. Is it a lost cause? Is that a false impression?”

Obama: ”You know, it is. Look, we tend to focus on the negative, and when you go there, first of all what you realize is that the people there are more energetic and optimistic than you would ever imagine. In fact, there’ve been some surveys done showing that Africans are surprisingly happy and positive about the future, and there are a lot of good things going on there. You go to a place like Rwanda that suffered such brutality and now it is thriving, it is growing. President Bill Clinton has done some great work in helping to foster economic development and other efforts in those areas, Bill Gates’ foundation has done great work, so it makes a difference. But what is true is that we’ve got to have better governance in Africa. You know, sometimes we spend so much time running down government that we forget what it means, how important it is to have a functioning government, one that can deliver services, one that, you know, if you want to get a telephone, you don’t have to pay a bribe, if you want to start a business, you don’t have to give a cut to somebody. All that makes an enormous difference, and hopefully we can hold governments there more accountable so that their people actually have a chance.”

Dave: “Is there a way for this country to do that without pushing people around and being resented?”

Obama: “Well, no, I think that if we send a signal, and this is true whether it’s in Africa or the Middle East or anywhere in the world, if we say we want to be a partner with you, we respect you, but if you’re getting our help, then we’ve got certain expectations, that we’re not just helping the wealthy or the people who are going to send the money to Swiss bank accounts, we expect to actually see results on the ground. Just holding people accountable but doing it in a respectful way, I think that could make a big difference.” (audience applauds)

Dave: “And - absolutely. And then I saw today, closer to home, in the Caribbean - Haiti - things just get worse and worse and worse and worse.”

Obama: “They’ve had a long, long run of bad luck, and, you know, we need to make sure that we’re providing help to them - obviously, our prayers go out to the families who’ve just been devastated by the recent hurricane. They already had little, they have even less now. But one of the things that I think it’s important to remind ourselves is, you know, New Orleans hasn’t been in great shakes either, and you know, if we’re not doing our job with respect to our fellow citizens here during crises, then it’s a bad sign for us being able to help others and that’s part of the reason why we’ve got to have a government that works, and I am campaigning now, Dave. That’s why I’m running for president of the United States.” (audience applauds)

Dave: “But it’s frustrating to me because even I know that the resources are here. You know, we have the resources, just in terms of money, we have the money. We can raise the money, the world can raise the money to solve these problems. Africa can be solved, Haiti can be solved, New Orleans could be solved.”

Obama: “You know, part of it is that we’ve been sold a bill of goods, I think, that says just look out for yourself and everybody’s on their own. Now, I am a big believer of individual responsibility and whether it’s improving our education system or dealing with issues like welfare, I’m a big believer that you’ve got to take care of yourself and take care of your kids. But, I also believe that part of what makes this country great is that we rise and fall together, and that our attitude is, you know, if there’s some child out there that doesn’t have a decent school, that that affects Harry and that affects my kids, and it affects everybody.”

Dave: “That’s right, it’s everybody’s problem, absolutely. Yeah, that seems to have evaporated, yes, I think so.”

Obama: “We’ve lost that, let’s see if we can restore it.”

Github is forking incredible

Github is incredible. They are doing everything right...down to the fact that they don't use www in their url. That kind of stuff does impress me. This article summed up their approach (which I found quite inspirational).(Git allows people to collaborate on software projects, to share, merge, follow, revert from, and track peoples ideas/progress/code)It is great for big projects, and is great for one off projects or when you are asking for help with a snippet of code in IRC or something (think code pastie of the future). But what happened tonight was just crazy. I read about a blog program that someone wrote that will listen to your mp3's and identify them by sound. So I downloaded it, and it crashed, but ruby told me the line number causing the trouble, so I looked, and it was trivial to fix. I decided that a more helpful error message would save the next guy from my woes so I forked the source code from github, made the change, pushed it back to github and sent a "pull request" to the author. This all took less than 2 minutes - seriously. Within 10 minutes, the author had merged my changes to his code. As Jeff said - "I can't wait until this is applied to everything".Overall, the thing that makes github so great is how they leverage already existing great ideas:git (easy branching/merging/managing of source code)gravatar (why doesn't everybody use this?)twitter (so many people don't get why twitter is so important - I certainly didn't)lighthouse (bug tracking that doesn't suck)And a bunch of other stuff. I mean - why does everybody always reinvent mediocre crap when they could just hook it up to something somebody else has built and focus on what they are good at. Probably because cross site leveraging used to be hard. It is easy now - as opposed to the days of crappy meaningless Java APIs (with factories and other meaningless metaphors). RESTful APIs are stupid easy and they let you use other people's stuff to make your own stuff better. Very few people and even fewer websites understand this. Github does. Kind of makes me excited to be alive right now.

OIBM in the Wall Street Journal

Check out this article about Opportunity Bank (where Claudia is the head of microfinance banking) in the Wall Street Journal

Microfinance Mobile Bank Malawi Opportunity International

The promise and problems are clear in Malawi, where the nonprofit group Opportunity International holds $15 million in 150,000 accounts in a banking system for the poor. The organization uses armored trucks equipped with ATMs that travel to rural areas where the bank doesn't have branches or kiosks.

The bank is profitable and growing but is limited by the cost of reaching the rural poor, said Francis Pelekamoyo, board chairman of the group's Malawi bank. The trucks, laden with satellite, computer and security technology, cost $250,000, and the bank runs each of its new clients through an eight-lesson training course on financial products.

"It's very expensive to introduce financial services to someone for the first time," Mr. Pelekamoyo said. With more funding, he said, "I would go deeper into rural areas."

The pizza man of Newark airport

So I had a manic, aimless, highly productive and ultimately very useful tramp across the eastern seaboard a few weeks ago. Lots of flying, driving, hiking, cycling, walking, yadda.Measured against expectations, no question, the best meal I had was in the Newark airport. I got in the line for a slice of pizza, not realizing that I was preparing for a show of pizzatastic proportions. This half Italian, half black, half Puerto Rican, ginormous dude yelled out at people - "YOU! WHAT CAN I GETCHYA?" And then the magic would begin. He played his spatula like Kurt Cobain on a guitar that was about to be smashed. Cha-ching, ching, ching, ching cha! "PEPPERONI COMING UP - HEY WATCHU WANT?". The spatula sang as it slapped open the pizza oven, and then shimmied under a slice. It was incredible.I took my singing slice o' margarita (my baseline pizza comparison standard) and headed over to the A&W section of the mystical airport food court and ordered a root beer float. It is not often that I can say with conviction, "God bless the USA".

Wireless for Sony VGN-NR220E on Ubuntu

The Sony VGN-NR220E makes a great Ubuntu machine, and thanks to a deal I found here: cost around $600.Installing the latest Ubuntu (Hardy) on it, made almost everything work, including very nice desktop 3D effects. (to really get the cool stuff do: apt-get install compizconfig-settings-manager)But I couldn't get the wireless to work, even with madwifi sources from svn. But today, rejoice! I have found a patched madwifi package that made it all work. Good directions here:

Weather insurance in Malawi

My wife is head of microfinance banking at Opportunity International Bank of Malawi. They have many amazing programs including biometric identification at ATMs, mobile banks that visit rural areas, plus good old fashioned microfinance that is having a big impact on Malawi. One of the more interesting things that they have been working on lately is integrating agricultural microfinance with weather insurance to reduce risk for the bank and protect the farmer from fluctuations in weather. Imagine if we could eliminate drought from the list of Africa's many challenges by simply insuring against it...

Here is an interview with some of Claudia's employees and clients talking about the new program:

Text editors and electric kettles

A few weeks ago I was asked to meet with a company that is selling a software product for doing hospital management. On first glance the product seemed nice, truckloads of features and modules in a fairly clean layout. But there was something wrong with it, something I couldn't quite put my finger on. A few weeks and this blog article later, I figured it out - the application is too close to the text editor side of the user interface spectrum.

The text editor is the most powerful computer application that exists. With it you can write a novel that starts a revolution, create a system to organize recipes, write code that can create a different text editor or a new operating system - the possibilities are truly limitless. On the other end of the user interface spectrum would be something like an electric kettle. You pour water in it, you press a button and it brings water to a boil before turning itself off. If you were really creative you might manage to cook soup in it, but you wouldn't do this because it would probably ruin all subsequent attempts to boil water. The electric kettle does one thing only, it requires very little training and it performs it's task to perfection.

User Interface Spectrum

I think all user interfaces land somewhere on the spectrum between text editors and kettles, and the goals of an application should dictate where on the that spectrum the application should land. Problems occur when an application lands on the wrong part of the spectrum.

I think this is the problem with the application I saw yesterday. Lets call it "boxware", because it had a lot of boxes. In fact boxware had boxes everywhere, and each box more or less represented a new feature, even if it was just a box. Let me explain. After clicking on the patient registration icon a screen pops up with a lot of little boxes, one for last name, first name, address, city, phone number, and so on. There is also a box with three tabs in it, patient history, family history, other history. Almost any kind of data you would want to capture has a box for it, and if you don't see it, then the required box is probably behind a tab or another icon.

Interfaces like this are common, and for good reason. This kind of user interface is the path of least resistance for software developers. Any new feature simply requires a new box, which is created by drawing a new box into the software development tool. The new box gets labeled "surgery management", which is usually enough for the decision maker to tick off "surgery module" from their required feature list. When this happens, the software developer wins and the decision maker is pleased at having found a system that matches their requirements. Unfortunately the users and in this case, the patients are the losers. Just because a bunch of labels on boxes happen to correspond to some important activities, there is absolutely no guarantee the boxes will be used for the intended purpose. I can count a dozen different repurposed boxes and containers on my desk alone. If only I knew what was in them!

I have seen many boxwares, and they often have a common origin: a single person uses MS Access (or Foxpro, or whatever) to computerize a process. Often the end user and the developer are one and the same. Adding features is easy (just add a box, or a database column or a tab) and before long the system is fully featured and easy for the user/developer to use.

If the system is useful, then other people want to use the system. This is a nice problem that gets solved! But soon, the developer notices that users keep using the system in a way that was totally unexpected. Time for another training session...

But there is another approach that doesn't rely on training. They are called constraints.

Let's think about the constraints of kettles and text editors. An electric kettle is constrained to heat liquids and is either off or on - not much training required. A text editor requires dozens of keys and key combinations just to do it's primary function of editing text. It doesn't constrain the user at all, and if you have ever taught an absolute novice how to use Microsoft Word (think grandma, or a nurse in a rural health clinic in Africa) then you know that training is not easy. Lack of constraints are even more apparent when people use text editors to model the more complex human processes of organization or collaboration.

The amount of training required is usually inversely proportional to the number of constraints in the system.

Training Spectrum

Constraints do two things, they filter garbage and they guide processes.

For example, an application may allow you to enter a weight value for a patient. A simple box will do just fine. But a user could type in No ("Why would I want to wait?"). Or they could type in 2 (is that pounds or kilograms?). Or they could simply not click on the box at all (whether a user knows how to use mice or keyboards is beyond the scope of this article).

Constraints can put ranges on what is allowed in the box - anything outside of that range will get rejected. So we could say that all patients must weigh between 2 and 300 (and make it explicit that we are talking about kilograms). But constraints can be even more clever. If we know what the patient's age is, we can narrow that band or even better, if we know what they weighed a month ago, then we can assume that their weight is plus or minus 10% of their last weight. If the user entered something that is outside of that range they will immediately be warned or perhaps even stopped. Maybe they typed in an extra 2, or they were entering data for the wrong patient, or they were reading pounds instead of kgs. Range constraints can catch that, they filter garbage.

Besides data validation (garbage filtration), constraints can also guide processes. Process guidance is a powerful way to move your application towards the appliance end of the spectrum. Instead of having a bunch of boxes that can be clicked on in any random order, an application can hold the hand (or mouse) of a user and guide them step by step through the process. One question gets asked at a time, in a specific order that matches how the user thinks or acts. This is the wizard approach that Microsoft has successfully used to help people navigate complex processes like setting up networks. And like data validation constraints, with a little bit of logic, the step by step wizard approach can add extra cleverness as well. For example, if you have a question that asks if the patient is pregnant, you could first make sure that their sex and age are asked. If the patient is a 60 year old man, you can then automatically skip the pregnancy question - this makes filling in the form easier and faster. But wait! We can do even better! Since sex is a critical piece of data to know, you can make sure that the user can enter no other data until the patient's sex is known.

If you are creating an application that will be used by a lot of different people to do very specific things, then range contraints and process constraints are important tools to make users happy. They empower them without needing training and usually speed processes up. If we are talking about first time computer users capturing life or death information in Africa, then constraints are critical.

So next time you are evaluating software pay attention to the user interface - not just how pretty it is - but what it actually does. How does it guide the user? How does it ensure quality data? Who will it make happy? Is it a text editor or an electric kettle?