The concept of liminality was first used to describe the structure of rituals like the one at the centre of The Encounter, but its application as a term for thinking about modern societies is connected to the study of theatre and performance. The anthropologist who made the connection, Victor Turner, distinguished the ‘liminal’ experiences of tribal cultures – in which ritual is a collective process for navigating moments of change – from the ‘liminoid’ experiences available in modern societies, which resemble the liminal, but are choices we opt into as individuals, like a night out at the theatre. This distinction comes with a suggestion that true liminality, the collective entry into the liminal, is not available within a complex industrial society. Now, perhaps this has been true – but here’s my next wild suggestion. The consequences of that very complex industrial society are now bringing us to a point where we get reacquainted with true liminality. To take seriously not just what Dark Mountain has been talking about, but what Monbiot and Harris are touching on, is to recognise that we now face a crisis which has no outside. The planetary scale of our predicament makes it as much a collective experience as anything faced by the tribal cultures studied by Turner and his colleagues. […] To navigate at these depths, you need a different kind of equipment. Facts alone don’t cut it down here.
One important step towards a more systematic approach to online update is to make the dimension of interaction explicit. This is one of the things I’ve focused on in my own research, which I call interactive programming, although that term has probably already been laid claim to. I allow the user to step sideways in time, into a “counterfactual” execution where it is “as though” the program had been written differently from the outset. Inspired by Demaine etal‘s retroactive data structures, which are imperative data structures which permit modifications to the historical sequence of operations performed on them, I’ll refer to this notion of online update as retroactive update. Retroactive update allows the “computational past” to be changed. Self-adjusting computation (SAC) is another system based on retroactive update. SAC explores another crucial aspect of online update: efficient update, via an algorithm called change propagation. SAC’s commitment to retroactivity appears in the correctness of change propagation, which is defined as consistency with a from-scratch run under the modified code.
Behind every value lies a computation struggling to get out. That’s the idea behind what I call the explodable user interface. (Forget wearable. Explodable.) By “explodable” what I have in mind is the ability to pick any part of an application’s GUI that you happen to be interested in and interactively “unpack” it into a story that explains how it was computed. It should be as though code lurks behind everything you can see, all the way back to the data sources your application works with. In Lisp you can explode an atom into its constituent characters, but the relationship between a Lisp atom and its characters has no computational content to speak of. In a typical application, the relationship between a value and its parts is non-trivial. If it were otherwise, you wouldn’t call it an “application”: you’d call it “a bunch of data”. Whenever this non-trivial structure is present, you should be able to browse into it in order to understand it or change it.