Skip to main content

Program a Pacifist Tyranny

Edit #1 (6th May 2015): Upon re-reading this article with fresh eyes I realise it's very "raw". This is merely a reflection of the underdeveloped nature of the ideas expressed herein. Put simply, I'm interested in how programming relates to the exercise of power. Keep that in mind as you read on. Finally, I welcome feedback, constructive critique and ideas - it helps these ideas to develop. I will ignore vacuous comments that state some variation of "you're wrong because I'm right and I know what I'm talking about". Thoughtful, respectful yet robust argument is always most welcome! :-)

Edit #2 (9th May 2015): I've made minor changes to simplify and clarify several points. I've also improved the flow by correcting clunky prose.

Violence is a forced curtailment of one's well-being and autonomy, usually via unwanted physical intervention by a third party.

To be blunt, the threat and eventual use of violence is how government imposes itself on citizens. In places like the UK, the Government derives its authority to use such onerous power from its legitimacy as a democratic institution: the citizens get a say in who is in charge. Laws created by the legislative and judicial elements of government define the scope of the threat and use of state-sanctioned violence towards citizens.

Usually violence is not required - the threat suffices. Most people pay fines associated with a traffic ticket: they understand failure to do so would end badly for them (arrest followed by prison). Obeying the law is so ingrained and unquestioningly assumed that it is a habitually formed behaviour - violence is not even appreciated as part of the context.

Any reasonably intelligent person understands why we have laws: they help people live together peacefully and, one would hope, in a way that is consistently equitable and fair. The figure of Lady Justice atop the Old Bailey is the personification of law as an impartial, objective process without fear nor favour. Put simply, the law and the veiled threat of violence applies equally to all.

Except that it obviously doesn't and the law is an ass on so many occasions.

There are any number of examples I could use to illustrate bad laws misapplied in an unequal, prejudicial and discriminatory way. So common is this unfortunate turn of events that I imagine you could think of your own examples. As a result, I'm merely going to bring to your attention the case of Aaron Swartz, a gifted coder and activist who was hounded by legal authorities in the US until he committed suicide. I strongly recommend you watch the rather excellent The Internet's Own Boy (embedded below), a creative commons licensed film about these tragic events:

What do such cases tell us? While the spirit of the law is "blind" and impartial, the practice and application of the law isn't.

The authorities understand this and realise that technology can help both in terms of law enforcement and impartiality. For example, in the UK speed limits on roads are often measured by average-speed-check cameras.

Average speed check sign

At certain points along a road (and at known distances apart) cameras are positioned to read car registration number plates. If you average a speed greater than the advertised limit then you are automatically sent a speeding ticket.

At no point in this process is a human actually involved. The cameras never tire, they work without prejudice and they apply their machinations to everyone. Such co-opting of automated computing technology for law enforcement appears to be on the rise.

What could possibly go wrong?

Since the Snowden revelations we know that everything we do online is open to the government. If you're technically savvy enough to correctly use encryption, such innocent countermeasures become an automatic marker for the authorities to investigate further. More worryingly, lethal force is becoming automated through the use of autonomous drones and other similar technologies.

This raises an important question:

Who defines the machinations of such autonomous computing enforcement devices?

In a sense, programmers do. The code they design and write encapsulates the behaviour of the speed camera or autonomous drone. Furthermore, with the increased connectivity and programmability of "stuff" (the so called Internet of Things) our tools, belongings and infrastructure are increasingly dependent on code. Our world (more accurately, the things we create in it that make it comfortable, pleasant and interesting) is becoming programmable. Ergo, governments have a new mechanism for imposing upon citizens: software.

The sanction to force compliance is no longer violence - the government can pass laws to program the world to automatically coerce you, nudge you or persuade you. For instance, imagine a situation where the car of a flagged suspect is automatically and remotely deactivated until certain conditions are met (not dissimilar to the Police intervention in this case).

Governments can legislate to program a pacifist tyranny.

Why pacifist? Because the traditional threat of violence is replaced by a threat of non-action or (worse) counter-action on the part of your belongings.

Why tyranny? Because citizens no longer control or own their belongings. They can't argue with code if it refuses to start their car, nor can they change such code so it more closely fits their requirements.

Unfortunately, most people don't understand code in much the same way that medieval serfs couldn't read the Bible (so couldn't question the authority of the church). It's not that programming is hard, it is simply not a widely practised skill.

This is why programming is such an essential skill to promote in education. In order to lead a flourishing self directed life in such a digitally dominated world we must have control over our digital devices both in a physical and programmable sense. The alternative is to allow others, through the code they write, intimate control over our world.

By the way, it's not just governments that exercise this power: any service that helps you organise your life can do the same. Facebook, Google and the rest are already trying to modify your behaviour (except they're trying to get you to spend money rather than obey the law).

How can such a morally suspect state of affairs be foiled?

Our digital world is dominated by centralised entities that hold power and control over our data and devices. Only by decentralising (to avoid points of control and coercion) and engaging humanity to learn about and take control of the computational world will a tyranny of software be averted.

As Bruce Schneier points out, software itself does not distinguish morality from legality - it's merely "capability". Yet capability permits certain forms of behaviour that in turn pose moral, legal and political questions, requirements and possibilities. Furthermore, we're engineering a digital world from a certain point of view that is reflected in the capabilities of the code we create. It is for this reason that writing software is both an ethical and political activity.

If you're a coder, ask yourself about your own project's capabilities. Work out how it influences, empowers or diminishes your users. If at all possible, promote users' personal autonomy.

Technology should help humanity flourish (rather than constrain).


TransCode logo

Over the weekend I had the privilege of attending the world's first Trans*code event in London. Trans*code is a hack-day for transgender persons and trans-allies (like me). We came together to create software that addresses transgender issues and participate in introductory programming workshops for people not currently familiar with the world of technology.

A hack-day is usually a community organised event centred around some form of civic or community good. For example, I participate in and sometimes help to organise the health-care related NHS Hackdays, I organise the education track at PyconUK where we run hack-day like workshops for teachers and developers for generating educational resources and I've taken part in many post-conference sprints where members of the free-software community get together to plan and hack.

I strongly believe that wonderful things happen when diverse groups of people get together to collaborate and solve problems: any cooperation that brings about a cosmopolitan, tolerant and receptive world view should be encouraged. After all, what's the alternative? I'd argue its an obviously undesirable small-minded, prejudiced and unimaginative world view. I also passionately believe that programming is a vehicle for empowerment and emancipation. Our world is increasingly influenced and controlled by computing so it is important that everyone has the opportunity to take control of technology and make it work for them.

However, the majority of such hack-days are attended by people like me - white straight dudes who already write code. Therefore I have no hesitation in supporting any effort that will increase diversity, participation and understanding.

How did I find out about Trans*code? My main programming language is Python, I'm a former teacher and I'm interested in education. I have a buddy called Naomi who is also a Python programmer, former teacher and has an interest in education. She's the organiser and force-of-nature behind Trans*code. Naomi put out the word via various UK based Python channels and I was one of several Pythonists attending as a trans-ally.

Briefly, here are my impressions of the day:

The transgender people I chatted with are brave. From my position of ignorance I had no idea about some of the situations trans-folk have to deal with and overcome on a regular basis.

It was a really friendly event. When there were disagreements people were sympathetic and respectful. It's refreshing to encounter this sort of deliberation rather than a pissing contest between silverback alpha-geeks.

I'm a naturally enthusiastic person and given only half a chance will talk the hind-leg off a proverbial donkey, organise people and "get stuff done™". It's important to listen, especially given my position of ignorance. I learned to frame my contributions as "have you thought about X..?" type questions. I should do this more often.

My group were a lot of fun to work with. The idea was an application called TransFlare a sort of "bat signal" or "flare" mobile app for the trans community: in case of trouble, use the application to call for help.

Bat signal

As far as I could tell, the most valuable part of the day was the debate, idea generation and discussion we had rather than any coding we got done (truth be told, I didn't do a lot of coding). We ended up thinking about a lot of different things:

  • Identity verification - we investigated the OpenName protocol to allow people to indicate the provenance of their identity online in a manner that wasn't controlled by some third party that may change its terms and conditions or decide to push some non-friendly agenda.
  • Web of trust - a humane peer-to-peer community driven mechanism to verify that people were of good standing and appropriately qualified to be helpers (who ultimately see the flares that are generated).
  • Appropriate technology - mobile, geo-enabled, encrypted and, where possible, peer-to-peer (so there is no single point of failure where sensitive details could be hacked).

As a technical person, these are really interesting problems to solve but with the advantage of having real use-cases to flesh out what can sometimes be quite abstract problems.

I had a lot of fun and I hope my contribution was helpful.

Many thanks to Naomi and the other organisers, the sponsors ( and Go Cardless) and the other attendees who made the event such an interesting and stimulating occasion.

There are plans afoot to run another Trans*code related event at this year's PyconUK in September in Coventry. I'd encourage you to join in and support in any way that you can.

Thought in Motion

I recently had the opportunity to dip into the book, A History of the World in 100 Objects. It mentions one of my favourite objects in the British Museum: a 5100 year old Mesopotamian clay tablet that records the allocation of beer by administrators in the city of Uruk (I've written about this object before).

Mesopotamian tablet

The chapter about this tablet explains how literacy was a catalyst for a fundamental change in human civilization. For the first time complex information could be recorded, checked and stored outside the human mind. It concludes with the following quote from the American philosopher John Searle:

"Writing is essential for the creation of what we think of as human civilization. It has a creative capacity that may not even have been intended. I think you don't understand the full import of the revolution brought by writing if you think of it just as preserving information into the future. There are two areas where it makes an absolutely decisive difference to the whole history of the human species. One is complex thought. There's a limit to what you can do with the spoken word. You cannot really do higher mathematics or even more complex forms of philosophical argument unless you have some way of writing it down and scanning it. So it's not adequate to think of writing just as a way of recording, for the future, facts about the past and the present. On the contrary, it is immensely creative. But there's a second thing about writing which is just as important: when you write down you don't just record what already exists, you create new entities - money, corporations, governments, complex forms of society. Writing is essential for all of them."

What does Searle mean when he states that writing creates new entities essential for complex society?

Try this example:

I am married to Mary and we have a piece of paper called a marriage certificate that proves we are. Somewhere else is written down an act of Parliament explaining how one obtains such a proof of matrimonial status along with definitions of terminology, responsibilities and activities in accordance with the custom of "marriage" in England and Wales.

Mary and I had to make vows (that are written down somewhere) in front of witnesses. Since neither of us is religious we had a civil marriage so a licensed registrar then spoke the specified words (that are also written down somewhere), "I now pronounce you husband and wife". It was only until these words were spoken by such a licensed person in accordance with the practices written down in the afore mentioned act of Parliament that Mary and I were married.

Immediately afterwards, we signed our names in a special register to record our marriage and duly received our marriage certificate. Sometimes we show the certificate to people in accordance with the practices and customs written down in other acts of Parliament to prove that we are, indeed, married.

In terms of the physical world, not a lot happened that was of great interest. An alien observer from another planet might describe the occasion as a group of hairless apes making sounds then scrawling marks on flattened dead tree.

The new entities and aspects of complex society that Searle is thinking of are, of course, those things that only exist in our human, social world.

The "truthiness" of my marriage, a certain act of Parliament or other such things does not come about in the same way that it is true to say that water boils at a certain temperature. Importantly, this doesn't make such things less true (I'm still married).

The mechanism for creating the truth of such social states of affairs is not the result of observing a natural phenomena (as a scientist might do in the case of the boiling point of water), rather, it is merely someone expressing some thing in some context. The registrar (someone) saying "I now pronounce you husband and wife" (some thing) at a wedding ceremony (some context) is how we became husband and wife. It is a special incantation. That it lacks physical properties or side effects is overcome by bureaucratic overhead (writing of a certificate to record our married state and other activities in accordance with written down laws - as I describe above). This is how writing creates complex forms of society.

Such performative statements (simply expressing them makes them true) don't have to be spoken by some official person as is the case at a wedding. Simply by writing them down can be enough. For example, the United States' twenty dollar bill has written on it, "This note is legal tender for all debts public and private". This makes it money! (Although I can't just write this on any old piece of paper and expect to get away with purchasing things with it - the "someone" making the statement and "context" of the statement are both wrong according to the terms set out by some other performative statement written down as a US law).

Put another way, it would seem bizarre to use this mechanism in the context of the physical world: I simply can't decree that water boils at a certain temperature because I say so and then issue a certificate to prove it! This mechanism only works when constructing facts in the human social world.

Does the social world have any effect on the physical world? Of course it does: the rules of football are social constructs yet govern how people should run around a field kicking a ball in a physical sense.

We share a culture, a form of life, a social world that exists by virtue of us being human and doing things humans do. This includes creating social constructs that only exist in such a social world via performative statements. It is only through our behaviour that evidence of such social constructs is manifested in the physical world (we run around a pitch kicking a ball in accordance with the socially constructed rules of football).

This is a key aspect Searle's argument: it requires humans to work. Someone must have written down such statements and others, collectively, need to have read, understood and acted as a result of comprehending such writing. This is, in a sense, a movement of thought or intent between minds.

Of course, intentions and information can be shared via speech. Yet I believe Searle is correct to point out that literacy both records and creates such social entities that shape our collective behaviour that would be otherwise difficult or impossible to work with in a pre-literate society. Just imagine how hard it would be to keep track of the arguments in this blog post without the convenience of being able to re-read them. How would we keep track of complex laws? There's only so much anyone can commit to memory.

It's important to note that such movement of thought between minds is not just textual in nature: for example, it works when writing symbols in the musical and mathematical realms. I find it remarkable that I can enjoy the musical thoughts of a genius such as Beethoven almost 200 years after his death - I consider it a privilege when I think about the amount of effort spent to bring about such aural experiences.

Furthermore, it is possible to follow mathematical thought processes so long as you understand what the symbols represent and how they are to be manipulated. Take, 2+3=5 for instance. As any child will tell you, the "=" (equals) symbol means that what's written on its left is of equal quantity to what's written on its right. Furthermore, the "+" (sum) symbol indicates the quantities adjacent to its left and right should be added together (start at the highest quantity and count up the other-quantity-number-of-steps to find the result). Such mathematical literacy symbolically records thought processes that unfold in a deterministic manner (it's a formal system: if you understand the symbols, 2+3 must equal 5).

And so we get to the nub of this blog post:

Like us, Computers process symbols. These symbols are a sort of literacy (we write them down as code). Such symbols record our thoughts as algorithms (instructions used to achieve some useful end) or data (representation of information that can be easily manipulated by the computer).

To execute such algorithms or manipulate such data does not require a human - a computer will do. Computers are designed, created and operated by humans but the execution of the algorithm and manipulation of data is most definitely within the digital realm. This is, in a sense, a movement of thought, intent or information between (human) minds: I want to do X, so execute a program (written by another human) that brings about X but get a computer to do it for me (rather than a human).

For example, I want to buy a ticket to travel on the train to London. I used to have to ask a ticket clerk at the station to bring this about (assuming we both followed the conventions required for the purchase of a ticket). Today I can book online, print my tickets or even pick them up from an automated ticket machine with no human intervention at all.

I am not saying computers are minds (more on this in a later blog post). Merely, computers are a medium for the transmission of thought, intent or information (expressed as algorithms or data) in a similar way to how clay tablets or pen and paper are also a medium for the transmission of thought, intent or information (expressed as writing). The important distinction is that computers are active (they can execute the algorithm or manipulate the data) and clay tablets or pen and paper are passive (a human is required to act upon their content).

Perhaps this is the fundamental change of our time. We live in a social world where I can record my thoughts and not require a human for their content to be acted upon (for example, as a programmer I can write a train-ticket purchasing program for other people to use). The computer, in some sense, is the performative actor (rather than, say, the registrar at my wedding). In Searle's terms, the software is the someone expressing some thing ("you have a valid ticket to travel on such-and-such a train") in a computational context that we humans accept as valid (in the same way we accept a wedding as a valid context for a registrar to perform their duties).

Personally, I need to think about this further simply because I believe we (humanity) have not lived with computers long enough to comprehensively understand their role in our daily (social) lives. You might say that we're at the same stage with computers as the Mesopotamians were with writing when they created the clay tablet.

Interesting times ahead.


Image credits: Mesopotamian tablet © Trustees of the British Museum

PyconUK 2014 Round Up

(This write-up is a bit late: I've been ill and we've recently had a death in the family.)

This year was the biggest ever PyCon UK conference - a community organised event for users of the Python programming language. Just under 500 tickets were booked including 45 for teachers and 75 for kids. We couldn't have done it without the support of the sponsors, especially Bank of America, the Python Software Foundation and Raspberry Pi Foundation without whom the education track would not have been possible.

For me, the person responsible for the education track, I had most fun working with the teachers and kids who turned up. I also seemed to be giving far too many presentations (four in total during PyCon UK). I also realised, due to circumstances beyond my control, that I have many kind and generous friends in the Python community and that when disaster strikes people step up and make "stuff" happen even at 4 o'clock in the morning!

It was a privilege to watch several masters at work during the education track:

The education team from the RaspberryPi Foundation are insane, inspiring and intelligent in equal measure - if you can attend one of their free Picademy events for teachers than you're in for a real treat. It's easy to sound bombastic about the work of the Raspberry Pi Foundation (so allow me to demonstrate): the pedagogical forces that they unleash are both unique (because who'd have thought such a small, cheap and "raw" piece of kit would result in such a huge amount of interest) and important (because the Raspberry Pi liberates computing education from the boring sad little world of locked down RM boxes, presentations and spreadsheets). That they are a UK based effort makes it all the more important that we, the UK's Python community, give them as much of our support as possible.

It was also wonderful to see Martin O'Hanlon work his Minecraft magic on both teachers and students. Martin introduces Python programming via only a handful of very simple Minecraft related concepts that he uses to build some amazing things within the Minecraft world (his in-game house that follows you around was a big hit with the kids). He's so good at this sort of thing that he's written a book on this very subject (that's bound to be a big hit with young programmers and teachers alike - what an inspiring textbook that would be). In case you can't wait for its publication you can grab his PyCon UK resources here.

(Here's a photo of Martin and fellow author Carrie Anne looking like the cartoon versions of themselves used in their books.)

I was especially pleased to welcome John Pinkney and his NAO robots. I met John at a CAS hub meeting over the summer where he described how he uses robots as a catalyst for all sorts of interesting educational activities. The visual programming tool used to interact with the robots strikes me as particularly child-friendly. Interestingly the code behind the visual building blocks used to describe the robot's behaviour is all written in Python (and thus handily gave me an excuse to invite John to PyCon UK). John gave two workshops (one for teachers, the other for kids) and the fact that he managed to keep both groups in rapt awe for an hour is testament to both his skill as a teacher and the "charisma" of the robots. We also ran a robot code dojo at which we let the developers play with the bots. I gave a quick overview of the Python API to the assembled developers and my slides can be found here.

Dave Ames also deserves a special mention for leading a couple of excellent workshops on using the PyGame project. Dave's workshops involved taking an existing (yet broken / unfinished) game and modifying the code to fix things and make it your own. I really like this approach since it gives students an existing base to work from. It also makes sure that beginner coders begin the think about debugging their own and other people's code (for which we provided all attendees with a PyCon UK Debug Duck. This rather excellent state of affairs is wonderfully encapsulated in the following video from the kids' day:

Alan O'Donohoe, Ben Smith and Vikki Dodd are three teachers without which the education track would not function. Alan's pragmatic encouragement when disaster struck (twice) was invaluable and Ben and Vikki made innumerable contributions throughout the event that meant I was regularly thinking, "Oh wow, [Ben/Vikki] has already done that." That's what I mean when I say that people "step up".

It was an immense privilege and a lot of fun to work with Naomi Ceder (founder of the PyCon US Education Summit) on our own small contribution to the education track: introducing object oriented programming to teachers through the medium of cows. I especially enjoyed the tag wrestling modus operandi of our talk. I'll leave you to guess which one of us was Big Daddy or Giant Haystacks (a UK specific cultural reference I'm sure Naomi will be delighted to quickly forget). In any case, both teachers and developers got stuck into our Parrot related exercise (as the picture below shows):

Finally, Carrie Anne gave a stonking keynote address to the whole conference on Sunday afternoon. I've heard far too many boring-yet-worthy-important-people-talking-about-boring-yet-worthy-important-things as conference keynotes in my time. Happily it soon became apparent that Carrie Anne's keynote was definitely not a boring-yet-worthy talk about matters of an educational nature. If you want to actually know what Carrie Anne said you should invite her to your conference to give the keynote. It would be definitely worth it: evidence via social networks suggests hers was the warmest received and most highly regarded keynote of this year's conference.

Other wonderful aspects of this year's PyCon UK included the beer for the conference meal (brewed using Python), the charity cheese shop that raised several hundred pounds for a local children's hospice and the inevitable silliness during the lightning talks.

Finally, it was a pleasure to catch up with Van Lindberg (chair of the Python Software Foundation). I'll leave what we discussed for a separate blog post but, in the meantime, you should all totally sign up to be members of the PSF here. Why? Because,

The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.

We've already started planning next year's conference. If you can think of any ways in which we can make it better please don't hesitate to get in touch.

PyconUK 2014 and the Education Track

I write software. I use a programming language called Python. As well as being very easy to learn and fun to use Python is an amazingly powerful language that's used by thousands of organisations the world over - from the likes of Google, Bank of America / Merrill Lynch, and NASA to small start-ups and scrappy little websites such as this one. Every day, you inadvertently encounter thousands of digital creations made with Python. By any measure of technical success Python, it seems, is a triumph.

For all Python's technical prestige, I believe the most important aspect of Python is the community that has evolved around the language. Perhaps Guido's desire for computer programming for everyone set the seeds for the growth of such a community. Of course, the development of Python is an entirely voluntary affair and inevitably attracts the sort of person who likely wants to contribute to the wider public good. Maybe it's because the Python Software Foundation (the charitable organisation that promotes Python and coordinates its development) is not just sympathetic to but proactive in encouraging engagement in Python programming no matter your background and especially if you belong to an underrepresented group of nascent programmers.

Happily, the UK's Python community are a diverse bunch who maintain a reputation as a friendly, welcoming and dynamic group. Every year we meet for our community organised PyconUK conference. We come together in a way that reflects the widely held view that diversity and friendliness are strengths of our community to be celebrated and fostered (to paraphrase PyconUK's statement on diversity and conduct).

For the past three years we have welcomed colleagues who are teachers of Python in UK schools. For the past two years we have put on a special education track to promote programmer / teacher collaboration and mutual learning. Last year we ran a kids' day where the proto-programmers of tomorrow explored Python with the technologists of today. The following videos give you a flavour of what we got up to:

We are delighted to be running an education track at this year's PyconUK (to be held on 19th-22nd September in Coventry).

The philosophy of the education track is simple: wonderful things happen when diverse groups of people come together to learn about and explore empowering technology such as Python.

If you are a teacher, parent, programmer or young person interested in exploring technology then the education track has something for you. We have secured some very generous support for teachers, parents and young people to attend at little or no cost. Kudos to Bank of America, The Python Software Foundation, Hewlett Packard, The Raspberry Pi Foundation and our very own PyconUK Society for their extraordinarily abundant support.

Full details can be found here:

Book now because places are limited!