Peru, OLPC, and Wikipedia

It’s incredibly rewarding to see videos like this one. I think working on the Wikipedia activity might be the most important thing I’ve ever done:


Web: La Selva
Uploaded by WebFilm.

(via Jimmy Wales)

Update, 2010-02-10: The video on Vimeo became password-protected, so I’ve switched the embedded video over to a copy on Dailymotion.

An e-mail counting t-shirt

I’ve been wanting to get into electronics for a while now (it seems like a sensible thing for someone who works for a laptop manufacturer to do) but haven’t known where to start. Back in January, the fine people at Sparkfun Electronics helped out with that by running a Free Day where they gave away electronics worth USD $100k: $100 free, to 1000 people. I was lucky to be one of the 1000 people, which put some electronics ideas within my reach that I otherwise would have found it hard to justify spending money on.

And, here’s the result — Madeleine and I made a t-shirt together that displays how much unread e-mail I have using an Arduino Lilypad and Bluetooth dongle, and an Android phone to send the number of unread mails to the shirt. Here’s an image of the center of the shirt, and a video showing it in action:

Lilypad t-shirt (youtube, download in Ogg Theora)

I’ve uploaded the source code that runs on the Lilypad and the python script that I’m running on the Android phone to my github account.

Computers that aren’t computers

Me: “I think I’m done buying computers that I can’t run my own code on.”
Friend: “Just think of the iPad as being a pile of books. You can’t run your code on those either.”
Me: “Thinking of a computer as being a pile of books is like thinking of a guitar as being Abbey Road by the Beatles.”

Btrfs snapshots proposal

I’ve written up a feature proposal on how we can use Btrfs snapshots to enable system rollbacks in Fedora 13, by gluing together the existing kernel code to do Btrfs snapshots, a UI for performing rollbacks, and a yum plugin to make snapshots automatically before each yum transaction. Lots of good comments so far, and LWN has written an article about it.

(Updated: The LWN link is no longer subscriber-only.)

Heroes

Boston was good to me last week — I got to see two talks from two particularly inspiring and heroic people, a day apart. (And a Rodrigo y Gabriela gig on Friday, which perhaps wasn’t as heroic, but was also awesome: check out Tamacun, Orion and Captain Casanova on Youtube.)

Now, on to the talks:

William Kamkwamba

When he was 14, William Kamkwamba built a working windmill at his house in Malawi, despite having dropped out of high school a few years earlier because his parents weren’t able to afford to send him anymore. He knew what to build by looking at pictures of a windmill in a science textbook in a library, using a dictionary to translate the words that referred to the pictures from English to his native language of Chichewa, and believing that the presence of the photo meant that someone must have built one before, therefore it must be possible for him to do it too. He also had some experience with repairing radios, taking them apart and working out what each component was doing by trial and error. His story is so inspiring because he lacked enough schooling in English and Science to be expected to gain the knowledge of electromagnetics he picked up, lacked any money to buy parts to work with, but somehow achieved his goal anyway. He gave a humorous and fascinating talk at MIT last week with Bryan Mealer, the co-author of the book that tells his story: The Boy Who Harnessed The Wind.

Reading the book after the talk totally changed my understanding of what he’d done and why, though; the background for his wanting to build a windmill is not always mentioned in articles and interviews with him. The season before he started, there had been a famine throughout Malawi — there was a drought, and corrupt government officials had sold off the country’s strategic grain reserves and kept the money, meaning that the government did nothing to help feed millions of subsistence farmers (including William’s family) who were left with a small fraction of the amount of food they needed for that season. William’s family lost a lot of weight, sold their possessions and dropped out of school to pay for food, and watched many of their friends and other villagers waste away and die from hunger over a period of months. The book contains detailed descriptions of what it’s like to live and go to bed hungry, after maybe a few mouthfuls of food all day, that make me deeply ashamed that we allow this to happen to anyone in the world.

Given all this context, it becomes totally obvious what William was doing the next year at the library: the textbook said that windmills could be used to power water pumps, which would mean freedom for his village from having to go through another drought and famine. The surprising conclusion you’re left with is: “Of course he built a windmill, teaching himself a massive amount of electronics that was described in a language he barely understood in order to do so — what else was he supposed to do?”.

Peter Singer

The second talk was from Peter Singer, who’s an applied ethicist at Princeton, and writes about modern ethical questions from a utilitarian perspective. He wrote Animal Liberation thirty years ago, which is thought of as having founded the animal rights movement; his work persuaded me to start approaching vegetarianism, then become vegetarian nearly three years ago, and mostly-vegan earlier this year (vegan at home, vegetarian when eating out with friends or if it’s difficult to find vegan food). Lately he’s been writing about poverty and the nature of our responsibility to people suffering due to poverty in countries other than our own, and has a powerful argument that we aren’t doing nearly enough. I first encountered his anti-poverty work with What Should a Billionaire Give — and What Should You? in the New York Times, and he’s since written a book on the subject, The Life You Can Save. The book is excellent — as well as describing the moral basis for aid, he handles common objections to charitable giving, including what responsibility we have when others aren’t accepting their share of it, where it’s okay for us to stop and feel like we’ve done enough, why we shouldn’t be giving money locally instead, and how we can find efficient and life-changing charities to donate to. Here’s the book’s opening and most provocative question, first proposed in his 1972 paper Famine, Affluence, and Morality:

“On your way to work, you pass a small pond. On hot days, children sometimes play in the pond, which is only about knee-deep. The weather’s cool today, though, and the hour is early, so you are surprised to see a child splashing about in the pond. As you get closer, you see that it is a very young child, just a toddler, who is flailing about, unable to stay upright or walk out of the pond. You look for the parents or babysitter, but there is no one else around. The child is unable to keep his head above the water for more than a few seconds at a time. If you don’t wade in and pull him out, he seems likely to drown. Wading in is easy and safe, but you will ruin the new shoes you bought only a few days ago, and get your suit wet and muddy. By the time you hand the child over to someone responsible for him, and change your clothes, you’ll be late for work. What should you do?”

Of course, we all answer that the minor inconvenience of having to buy a new pair of shoes and change our clothes are not valid excuses for refusing to save a life, and the follow-up hits you like a ton of bricks: there actually are people dying from poverty every day, around 30,000 of them, and we really can save a life for not much more than the cost of a good pair of shoes. Furthermore, more than two and a half billion people live on the equivalent of less than USD $2 per day. How, then, can we say that we’re different from the person who walks by the lake, sees the child drowning, realizes they could save them, and does nothing?

Singer’s book explores the differences between the two situations — primarily that in one a child is next to you while in another they are far away — and concludes that this cannot be a sufficiently different situation to present a different moral answer, if we claim to hold ethical beliefs like “the value of a human life is the same no matter where in the world it is” and “a human life is worth more than a pair of shoes”.

Now, I didn’t mean for this post to make you feel guilty — in fact, I’m feeling very optimistic about this issue. Singer observes at the beginning of the book that the struggle to reduce suffering due to poverty has historically been a sort of climb towards an unreachable, unknowably distant mountain peak; but now we have cleared the clouds and can see the summit, our ability to do this is clearly within our means. I want other people to enjoy life the way I did at the gig on Friday night. While I can’t give everyone tickets to go to concerts, I can certainly work towards them having enough food so that the William Kamkwambas of the world can, rather than trying to fall asleep in darkness and hunger, enjoy a full stomach and some good music with a radio they’ve managed to repair.

On keynotes and apologies

I wasn’t going to blog about this, but I’m becoming pretty angry about it now, and I think I might actually have something constructive to say.

Here’s the story: Mark Shuttleworth gave a keynote at LinuxCon, which I attended, in which he said lots of reasonable things and one very unfortunate thing. Paraphrased, he said that if we did a better job at considering our non-technical users and accepting help from expert UI designers, we’d have an easier time “explaining to girls what we actually do”. (By girls, he meant women, not female children.) I’d like to be able to provide a direct transcript when critiquing his words, but the LinuxCon organizers don’t seem to be willing to make the video available for free, so I can’t do that yet. I’ll link to it as soon as it’s available.

Before I get started properly, I want to make it clear that I like and respect Mark Shuttleworth. I regularly use and recommend Ubuntu to other people, and am very glad that he’s doing what he’s doing in the world. There’s no personal animosity or ill will behind this post at all.

It’s actually not just the Ubuntu distribution that I recommend: I’m also hugely impressed by the Ubuntu Code of Conduct, which was a groundbreaking document at the time it was adopted, and made it clear — for the first time — that there is a free software community that is willing to put a stake in the ground and say that it’s not a place for people who want to communicate by disrespecting someone else, or another group. I think the Ubuntu community is one of the most tolerant, welcoming and diverse free software communities we have, and I’m sure that this is a reflection of Mark’s own thoughts on the matter.

So, back to the keynote. Kirrily Robert heard about this statement of Mark’s from Emma Jane Hogbin’s transcript in a conversation on identi.ca, and wrote an e-mail and blog post asking Mark to apologize and clear this up. Sam Varghese now has a blog post attacking Kirrily Robert, because Kirrily based her objection on someone else’s transcript of what was said rather than being there herself.

Well, I was at the keynote too, and was paying attention, and it turns out that even with context applied, someone who talks about “explaining to girls what we actually do” when talking about free software really is saying something sexist, and buying into the noxious stereotype that women can’t be developers or tech-savvy; that they’ll never be a real part of our group, even if a few of them are brave enough to try in the face of other people dismissing their efforts (and Mark certainly isn’t the first to have done that).

This statement actually wasn’t the first exclusionary thing Mark had said in the talk, in my opinion. Earlier he attempted another joke about how when he talks about “releases”, he doesn’t mean “release” as in “happy ending”. The joke didn’t go over very well, and he made a comment about how it must be because we were tired and not listening properly. Actually, I was confused because I already felt pretty sure that he was talking about software, rather than male orgasms and hookers, because that’s supposed to be a safe assumption to make during a technical conference keynote.

So, Sam Varghese can stop claiming that Mark’s statement wasn’t sexist because no-one in the room found it sexist: there’s no doubt in my mind that it was a sexist thing to say, and I was there.

Varghese tries to paint himself as a martyr, saying that he’s “sure he’ll be shouted down too” for denying sexism, but it’s actually extremely, overwhelmingly common to attack the person who points out sexism in free software communities — common enough that Matt Zimmerman, Canonical’s CTO, has an excellent blog post on the subject: Backlash: feminism considered harmful. The backlash is so strong that if Kirrily were just an occasional contributor, I’d be thoroughly unsurprised if the kind of attacks she’s receiving drove her away from free software completely. She’s been in the community for long enough, though, that she’s willing to put effort into calling out sexism even though she’ll be attacked and ridiculed for it by people who think that there’s nothing wrong with the situation. Thanks for not giving up in disgust and leaving us alone to enjoy our 1% participation by women, Kirrily.

Varghese finishes his post with:

“Shuttleworth has many faults, I’m sure, but one has to always assume that a person is innocent until proven guilty. If someone violates that basic rule, which should extend to every human on the planet, then that person is in the wrong.”

Look, we’re not talking about a trial that attempts to judge whether Mark is a good or bad person; we need to move past the idea that someone who said something sexist is “guilty” or deserving of punishment. Kirrily’s letter, after all, didn’t ask Mark to apologize for being a sexist person (which I don’t think that anyone involved actually thinks is true), it just asked for an apology for one sexist thing he said. I don’t know anyone who doesn’t behave in sexist ways sometimes, because it turns out that discarding privilege is really goddamn hard, even when you’re consciously trying to. We need to make it clear that someone who accidentally said something sexist is not “a sexist”, or a bad person, or worthy of our contempt, or deserving of a ruling of innocence or guilt. I do respect Mark, and I still think he said something sexist, and if he apologizes for accidentally saying something sexist and says he’ll try to make amends, that makes everything totally okay with me. We need to be able to admit when we say/do something sexist without it turning into something huge and unmanagable, because it’s something that’s probably going to happen quite a lot.

Matthew Jones also made a post defending Mark and I’d like to reply to that too:

“When Mark said try to explain to girls, he was not talking about women not understanding technology. He was talking about how hard the design work is to do, and that if things were designed poorly or had low usability, he would not know how to explain them to girls (my translation). The tone of his voice suggested sarcastic embarrassment, which implies he would prefer to impress girls.”

I totally agree with the context of Mark’s statement provided, although I don’t at all see how that’s “not talking about women not understanding technology”. The statement is still as exclusionary a statement given this context — the fact that Mark may like to impress women doesn’t excuse that his statement thinks of women as a synonym for “people who don’t understand how software works”! That’s a really destructive phrasing that we should all reject. It’s not hard to substitute “the average person” or just “people who aren’t as interested in computers as we are” and turn the statement from exclusionary-to-women to gender-neutral.

Here are some of the arguments made against asking Mark for an apology in the comments on Kirrily’s blog post:

Mark is a nice guy. I agree! However, when someone (metaphorically, perhaps) steps on someone else’s feet accidentally, you expect them to say “Oops, sorry.” regardless of how nice a person they are; that’s just not relevant to the fact that someone else is hurt and it’s their fault. If they refused to apologize for it, that might change your idea of how nice a person they are, but the fact that they hurt someone unintentionally doesn’t have any bearing on whether they’re a good or bad person in the past or in the future. It’s just a thing they did that they should apologize for.

Mark wasn’t trying to offend people, he was just making a joke. I agree with this too, but making a joke doesn’t stop the words we choose to tell the joke with from having power.

And, perhaps one that I’m expecting to see in the comments on this post:

Hey, you’re not a woman, so you can’t be upset about this. I think that actually helps, in this case. Sam Varghese used a lot of very loaded words like “emotional” and “irrational” in his rejection of Kirrily’s post that I think were an idea of his that she shouldn’t be able to complain about this because she’s a woman. I don’t agree with that restriction, of course, but I’m happy to help remove it from the discussion.

Finally, I want to repeat that for me the real shame here isn’t that Mark said something unfortunate — we can all say something unfortunate when we’re speaking in front of a large crowd for a long time, myself certainly included. What’s a shame is that it doesn’t take a superhuman dose of empathy to give a short and sincere apology for an obviously harmful joke afterwards, yet we don’t have one yet. To make matters worse, it’s the second time in a few months that someone’s implied that women are people who lack technical knowledge during a conference keynote, and it seems to be the second time we aren’t getting any kind of apology for it. We’re left to conclude that the biggest heroes in free software — the people who speak for and about us to the world — don’t care much about whether women feel invited to or excluded from free software, or how they could use their power to affect that.

The Best Card Trick

I gave a talk on The Best Card Trick at the Boston Haskell meetup tonight, and then we implemented the technique together in Haskell as a group. Afterwards, we compared our program with this one that my friend Mark Carroll wrote a long time ago. Here’s a summary of the trick from the paper’s abstract:

You, my friend, are about to witness the best card trick there is. Here, take this ordinary deck of cards, and draw a hand of five cards from it. Choose them deliberately or randomly, whichever you prefer — but do not show them to me! Show them instead to my lovely assistant, who will now give me four of them, one at a time: the 7♠, then the Q♥, the 8♣, the 3♦. There is one card left in your hand, known only to you and my assistant. And the hidden card, my friend, is the K♠.

In even-more-mind-blowing news, today John McCain gave a talk about OLPC.

Ciudad de México

Mad and I just got back from a fun two-week vacation — the first week was spent in Mexico City, visiting Mika and Mako and meeting Gunnar and Carolina for the first time, and the second week in Peru with Mad’s family: Ayacucho, Cusco, Machu Picchu and Lima.

We spent a while working out a long list of stuff to do in Mexico City; here’s the list of what we did, together with Mad’s photos, in case you’re interested in having a fun vacation in Mexico City too.

Saturday:

Sunday:

  • The Zócalo (photos)
  • Templo Mayor (photos)
  • Palacio de Bellas Artes (photos)
  • Shopping at the Centro de Artesanías La Ciudadela (photos)

Monday:

Tuesday:

Wednesday:

  • Xochimilco (photos)
  • drinks at a mezcal bar in Condesa (photos)

Thursday:

Friday:

Teaching old code new tricks

ExploreTree

Over the July 4th weekend, I found time to release the tree visualizer that Mad and I wrote for the Processing Time code jam a few months ago. Mad’s worked on it some more since the code jam, adding a search function, options for specifying font size and the tree depth shown, and a link from each node to its Wikipedia page. The program’s available as an applet now, at:

http://exploretree.org/

Feedback welcome, especially if it doesn’t work for you and you’re able to figure out why.

Bugs Everywhere

Bugs Everywhere, everyone’s favourite distributed bugtracker, has been seeing a decent amount of work lately thanks to some strong efforts:

It’s nice to keep momentum going on some small projects. Counter-intuitively, I think it’s much easier not to get tired of programming when you’re working on code for work and different code outside of work, than when you’re just concentrating on the code for work.

Microfinance in Ayacucho

My awesome sister-in-law Suzy is in Ayacucho, Peru, volunteering for Kiva for around nine months. One of the difficulties with poverty relief charities is that people feel a disconnect between their donation and the result, and Kiva works around this problem by personalizing the process of making a loan to a specific entrepreneur. Kiva also empowers recipients by organizing loans that the recipients are expected to pay back.

Suzy’s working with a local microfinance organization, interviewing potential borrowers and uploading their profiles to the main Kiva site for lenders to see. She’s posted three times to the main Kiva Fellows blog now, and I hereby humbly present her posts. You should read them.

(Updated on 2009-07-22 to add the third link.)