Friday, December 02, 2011

Occupy Computation

The title slogan popped into my brain this morning; now I have to figure out what it means. I have a pretty solid idea of what computation is and I hope you do too, so this will mostly explore the meaning of "occupy".

Really it's what I've been trying to achieve for most of my career -- making computational worlds visible, controllable, buildable, and habitable by the people who need to interact with them. Often this manifests as some form of end-user programming language, but there are other ways to do it. Spreadsheets, for example, succeeded because they created a tactile, habitable way of interacting with data.

Occupying a computational (or virtual) space is different than occupying physical space, of course. Easier in that there are no logistics to overcome, none of the scarcity and commitment that defines our physical world. On the other hand we have highly evolved tools for dealing with physical reality; our methods for dealing with computational worlds are primitive and difficult to use in comparision.

Virtual Reality always seemed to me like a crude, overly-literal way to have people live in computation. So I've not spent much effort on 3D graphics and goggles, instead I'm more interested in coupling more modest user interfaces technology with complex worlds like bioinformatics, animal behavior, programming in general. So I've built visual programming systems, tactile interfaces, spreadsheet-like systems, and the like, all in an effort to lower the barrier between mind and the structures in the computer.

 Part of occupying computation is erasing the class barriers between developer and user. in this world, users are the 99%, developers like me are in the 1%. Other people have noted that the word "users" is in itself somewhat demeaning*; "the only two industries that call its customers users is the computer industry and drug dealers." The word encodes a kind of passivity which needs to be challenged. Users need to become programmers. There have been many attempts to extend programmability to the non-expert; I've worked on quite a few such projects. I don't think any of them were wildly successful, partly because either they come from programmers who think everyone should think like them, or they come from non-programmers, in which case they are messy and inelegant.

I ran across the phrase "habitable systems" awhile back, although I can't remember where (ah, OK, it's from Richard Gabriel's book Patterns of Software (big PDF)). Gabriel is, non-coincidentally, a Lisper. Habitability, in his writing, is linked to the idea of piecemeal evolutionary growth -- designing software systems so that the inhabitants can modify them based on their day-to-day changes in experience and needs:
I think this should be the goal for computer science practice. Most programming languages are excellent for building the program that is a monument to design ingenuity—pleasingly efficient, precise, and clear—but people don’t build programs like that. Programs live and grow, and their inhabitants—the programmers—need to work with that program the way the farmer works with the homestead.
Habitability is great -- but the point of an Occupy Software movement is to demand habitability, to find ways to force systems to be habitable. It's a more active form of the concept.

Lisp environments are (for me, and many others) the quintessence of a computational habitable systems. Lisp combines several properties -- interpretability with a read-eval-print loop, a basic data structure that is simple to serialize and deserialize, a unity between programs and data -- to make an environment where you can touch what's going on. This quality is so important, and so missing from standard languages (although this is changing). The very first thing I did when encountering Java was to write a small Lisp, not to actually program in but for the REPL loop, to give me a way to inhabit the computational world.

 One of the keys to the web's explosive success (taken for granted these days, but in no way inevitable) is that its standers were open, and its contents were open -- for any web page you see that does something interesting, you can click on View Source and see how it did it. So many non-technicals learned web building in this way. But that only gets you so far.

The Free Software Movement started out as a political effort to resist what was effectively an enclosure of the commons -- what was open research software, habitable by anybody with sufficient technical skills, was being converted to proprietary code that locked most people out. This has been amazingly successful in creating occupy-able systems, but only for hackers. Ordinary people don't have access. So the software is only sort-of habitable.

A hacker is someone who knows how to inhabit a system, who wants to inhabit it so much that they will do anything to force their way in, (in some meanings of the term) will go so far as to use illegal techniques to overcome barriers set in his way.

The Maker movement is another cultural push in the direction of habitability. All these motions are efforts to make everybody an insider -- whether this is practical or not, it's enormously appealing; the inclusivity of it very much in the American mold.

As an example of a non-habitable system, take iTunes and its genius feature (which generaates music playlists based on a starting example). This works rather well, and I use it a lot, but lately I've been irritated at its repetitiveness -- the same songs from my collection keep coming up again and again until I'm sick of them. Presumably there is some parameter hidden in there, but I can't change it because the geniuses at Apple didn't see fit to create a UI affordance for it.

If it was open source, then in theory I could go study the code, find where this parameter is, and alter it. In practice I'd be unlikely to do so (for one thing, it's probably written in a language I don't program in every day, and thus the overhead to figure it out would be pretty large). So an imagined inhabitable music player would not only be open source, but have its rules encoded in some accessible way, so that you don't have to be an expert to modify it.

So, this is what occupy means to me -- a declaration, both individual and collective, that I/we have a right to inhabit this world, this space, this society. To live in it, make it habitable, to share it, to humanize it. And that these rights are not handed out by some authority, but must be taken. Spaces under the control of systems that are not life-enhancing must be occupied and transformed. That's the impetus behind the main movement of OWS -- the shared recognition that the financial system is a life-sucking vampire squid and needs to be replaced -- with what, nobody knows, but that is, for now, beside the point.
As I went walking I saw a sign there
And on the sign it said "No Trespassing."
But on the other side it didn't say nothing,
That side was made for you and me.
                    -- Woody Guthrie, This Land is Our Land
Now the occupy meme is starting to spread. There are many things I'd like to occupy, areas that seem closed where they should be open. Occupy music, occupy language, occupy religion, occupy your own mind... This blog itself is an act of occupation, my little insistence that my voice is out there and part of the public discourse. There are people with orders of magnitude more impact than I have -- doesn't matter, much. It is the act of occupying that is important.

One last note: The future is going to be a network of smart, networked objects and algorithmic policy engines. Our lives will be only become more inextricably bound up with software. It is critically important that these systems not be closed off, that ordinary people retain a measure of control. We will be living in these systems whether we like it or not, but there is a difference between mere living and occupying.


Patrick McFarland said...

This post has a severe lack of mention of Bitcoin. Excuse me, while I occupy computation that way.

scw said...

Just curious - do you "occupy" your car, or your radio?

When these machines were first introduced, the people who used them needed to "occupy" them in the sense I think you mean - that is, they had to have hands-on involvement with their regular maintenance, and a good knowledge of the theoretical basis of their operation. Early automobiles either had hobbyist-owners or professional chauffeurs. "Ham" radio operators existed before commercial broadcast radio stations.

It wasn't till the 'twenties that the automobile and the radio became consumer technologies, bought by people who were content just to use them, without knowing or caring how they worked. Of course, there are still "automobilists" and hams, but such technically proficient folk are distinctly
in the minority.

The downfall of your proposal lies in lack of motivation and lack of capacity. Most people are either preoccupied with other responsibilities or just plain lazy, and have no interest in becoming their own programmers. In addition, a great many do not have sufficient knowledge (or the ability to acquire it) to carry out such a task, any more than they have to fix or maintain their cars or to repair or rebuild their radios. As Mencken observed, no one ever went broke underestimating the intelligence of the American public. The only freedom most people want is freedom from responsibility. This is why the sort of consumer or user technology that you lament first came into being, and long will persist.

mtraven said...

In the modern world, it's program or be programmed.

It is true that there is always going to be a large class of people who are content with their technology and never want to modify it. That's OK; I'm concerned with growing the fraction that does want to, and lowering the barriers to doing so.

On the other hand, I do believe everyone should learn some programming, because computation is a genuinely deep idea. If I was in charge, secondary school math would get rid of trigonometry and calculus (more or less useless) and replace them with computation and statistics, both of which are useful, potentially deep, and highly accessible.