Tuesday 5th May 2015 (19:00PM)
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.
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 in the following excellent talk on security and encryption, 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).
Monday 30th March 2015 (14:00PM)
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.
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:
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.
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.
Sunday 30th November 2014 (2:00PM)
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).
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, is 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