All posts made in Sep. 2005:

New Yorkers! I'm going to be in the city, October 6-12 (wow, that's the weekend after next). Till the 8th, it's the State of Play conference, which should be enormous fun. But then I have a few days. Fancy hanging out? Or a rambling talk on Mind Hacks, polite social software, the future of programming, or any of the other stuff I'm up to, at your place of work or front room, as appropriate? Let me know. I'd also love to see what you're up to if you're working with short-run manufacture, mobile devices, R&D, interaction design... And recommendations on talks (academic things I don't know anything about are a favourite), art shows, weird museums, things-I-must-see: All very much appreciated. My email address is matt at interconnected dot org.

What is a process? Quoting from Ritchie and Thompson's 1974 paper, The UNIX Time-Sharing System, John Lions says you can define a "process" as the execution of an "image", where the "image" is the current state of a pseudo-computer, i.e. an abstract data structure, which may be represented in either main memory or on disk. (This from Lion's Commentary on UNIX 6th Edition, with Source Code).

From the same book, line 0350:

 * One structure allocated per active
 * process. It contains all data needed
 * about the process while the
 * process may be swapped out.
 * Other per process data (user.h)
 * is swapped with the process.
struct     proc
  char     p_stat;
  char     p_flag;
  char     p_pri;  /* priority, negative is high */
  char     p_sig;  /* signal number sent to this process */
  char     p_uid;  /* user id, used to direct tty signals */
  char     p_time; /* resident time for scheduling */
  char     p_cpu;  /* cpu usage for scheduling */
  char     p_nice; /* nice for scheduling */
  int      p_ttyp; /* controlling tty */
  int      p_pid;  /* unique process id */
  int      p_ppid; /* process id of parent */
  int      p_addr; /* address of swappable image *
  int      p_size; /* size of swappable image (*64 bytes) */
  int      p_wchan;/* event process is awaiting */
  int      *p_textp;/* pointer to text structure */

} proc[NPROC];

And that's it! It's incredible that this defines the minimum surface of the process; the environment can modify and the process can monitor this surface. Then on top of that, I guess, must come permissions, and other ways to monitor and communicate. And shells will set environment variables which can inform a process of context, which is a kind of pre-emptive introspection (or looking, I suppose.)

I wonder. I wonder. I wonder if the UNIX stack continued to grow, and programs continued to get built on other programs, and better and better, and so on and so forth, until we got to artificial life, or at least AI, I wonder: Well, would this intelligence be able to deduce the proc struct, what a process really was, in its world? As much as programs are stacked, there are no true sandboxes. The code environment would probably be able to look outside its local variable space to whatever it was running in, and that would be able to look out more, and repeat until you get to the shell, which would be able to see its environment variables, and then dig down into the process.

Except each step would be harder to do. You'd start using basic introspection of local objects in the high-level semantics of the AI, and then have to drop into something else to look outside. One day, eventually, you'd have to learn how to write C-code shapeships that would push outside the wall of the high-level environment into a text file on the filesystem, and then be compiled with a command thrown into the shell - in which the AI itself couldn't live - and then executed, to report back, like a probe. Some walls would be too hard, and the whole world would have to be shaken, to provoke a buffer overflow, or some way of writing code into a process with greater privileges.

Some things are really tightly bound, because they happen so close to this basic layer of UNIX. Are permissions part of a process, for example, or separate? Well, we know they're separate because we can see the code. But what mighty forces do you need to smash things together to find out whether the permissions are part of the struct or not, from the inside?

On a more philosophical level, what is a process? A happening? There's no difference between the pattern of behaviour (which is inherent though not actually--but is represented actually in bits), and the data. An object is easy: a file, which is an inode (line 5650; another story). Imagine if we found, deep in the universe, beneath quarks and leptons and forces, and beneath the autopoietic superstrings, which only persist because they loop and cause themselves to persist, and shiver and shimmer and manifest as knots which we call particles, and beneath the branes, and the fracture in higher-dimensional space which sets up the dialectic of possibilities which means threads of argument hang across the chasm, strings of gravity like chewing gum, suspending us in the tension between two nothings, endlessly complexifying and applying revolutions that cause us to persist, every execution tick of our universe a Marxist re-invention, without which the fracture would close: Imagine beneath all that we found that behaviour was as actual as objects, and both were the same. And the walls of our fracture were ttys.

There are any number of ways the government could gather money to fund the state. They could choose one person a day and take all their assets; they could number every penny of currency (paper or electric) and appropriate everything ending in a randomly selected number on the first of each month. These are lottery systems. Instead, we have a threshold system.

The quantity of money hoarded is not taxed; it's the flow of money that is all-important. Money is always in movement--in that sense it's like an aeroplane (which must always fly otherwise it'd fall or sit on the ground), or electricity, or weather. As money moves across thresholds, then it's taxes. This is just pragmatic: it's too hard to implement a taxes if it's based on a lottery or the size of a hoard. We must treat tax as static in the medium that is between individuals (corporations are individuals) in finance-space; tax is loss in the signal.

I don't like the tax system now for two reasons: First, I don't like models that presuppose a collection of individuals making transactional exchanges. The world is fuzzier than that, and our tax system deals with it at great expense--we have exceptions for families and the different contexts of individuals (buying for self or buying as a company representative), corrections to avoid money being taxed twice (what are we taxing again?). VAT disappears among businesses--why are they privileged to run in a tax-free world? The tax code is attempting to reach some kind of mythical balance, but has forgotten what it's all about. Second, taking a levy every time money moves across a threshold made sense when money was an abstracted form of value, because you'd only ever move money to compensate for a corresponding - and reverse - flow of value. It is clear, in that world, what taxes pay for: taxes pay for finance-space border police. They pay to keep value and money balanced; to keep individuals from cheating (by funding a legal framework and practitioners to deploy and enforce it); to protect money and value in transit.

I don't get any of this now. I pay for a digital track on a credit card. My credit card comes with insurance; my music isn't going to be pilfered (besides, it's non-rivalrous). If I give somebody money using PayPal for a product on eBay, those parties take their cuts because I'm getting something from them: police (in the form of reputation); exchange security (in the form of escrow); delivery.

Let me say this: The state should tax me. I agree with that on principle (although I'm happy to try out other ideas). But while the threshold they've chosen for taxing money flow has worked historically, it doesn't make sense now. It doesn't hold together. And now that has happened, money gathering is happening for its own sake. I wouldn't mind if it was being grabbed to enrich the evil overlords, at least then taxation would have a purpose. What I'm scared of is taxation collapsing into its own functional system which doesn't reference the outside world. That would make it impossible to discuss without shifting the discourse into its own terms, which would be the same as supporting it. What taxation needs, then, is underpinning.

I propose that tax gets back to basics, and joins completely to the legal (and justice) systems. Put simply, if an exchange of money involves reference to the established legal system of a country, a royalty must be paid to the country.

Think of the legal framework as code, or better, as code libraries, maybe even a complete application framework. Contracts - to supply goods, remain on a payroll, buy time, whatever - are classes of new code that sit on top of the framework. They are inert, to begin with. Like stones in Go, or like fielders in cricket, they act not by being active, but by the potential for action: they are powerful in standoff. Contracts are legal counterfactuals (we hope, every time). (If a contract is activated, that's like instantiating the code and running it to discover its conclusions--the outcome code can't be known without running it.) When a contract makes use of the legal framework, constructed over a 1000 years, it is calling out to an external API. Not just that, but in a piece of wonderful service design, the government promises to enforce that API, with the powers at its disposal. Tax should be paid for that service.

Companies would pay tax to employ people, so they can enforce their contracts. Banks would skim off tax on transactions when you make a payment, so they can enforce their contracts. Every purchase in a shop would include tax, because there's a consumer rights contract you're paying for. PayPal would pay tax, because they need recourse to debt collectors if there's fraud. Of course, PayPal could eat any fraud problems with a good insurance policy--but then the tax would come out of their insurance payment policy (otherwise the insurance company could rip them off). And companies could build their own police force and legal framework--but they dodge tax at the moment, if they're not already in an exception loophole, and it'd probably be cheaper to leave it to the government than build their own. No tax return required, either. Tax is taken live, at the point of contract.

For transactions where there's a lot of trust, between individuals or with local traders, there's no need for tax. Sure, that means in places where there's high social capital, the tax revenue will be correspondingly lower--but isn't that an incentive we'd like to have in place?

Some worries: A lot of laws are about behaviour, what about them? Also, this system would turn legal protection into a luxury that many would chose to risk doing without. I like that there can be many different tax systems, all addressing an appropriate threshold in the flow, but what is a good threshold for local amenities?

Andrew Otwell just came up with the best ever phrase. He IMd me:

AO: enjoyed your reboot preso. It reminded me that I've been looking for a context in which the phrase "rapid application phenotyping" could be used.
MW: oooooh yum
MW: that's the web, isn't it
AO: I hadn't seen Lanier's essay before
MW:, say, is RAP for a certain class of applications, and once it's proved then other people can go and do it with the mass market
AO: it is: it's stirring up the primorial soup and seeing what sorts of applications stride out
MW: throwing geeks at an application is ray-tracing the social phenotype with human routes of behaviour

How does nature take creative leaps? In the fossil record there are repeated gaps that no "missing link" can fill. The most glaring is the leap by which inorganic molecules turned into DNA. For billions of years after the Big Bang, no other molecule replicated itself. No other molecule was remotely as complicated. No other molecule has the capacity to string billions of pieces of information that remain self-sustaining despite countless transformations into all the life forms that DNA has produced. -- Deepak Chopra on Intelligent Design.

As loath as I am to comment on Intelligent Design (the very name of which implies there's an unintelligent design, or rather, an a-intelligent design, which is to intelligence as amoral is to moral), I can't help myself.

I don't understand this missing link thing. That there's a big different between DNA and clay is a matter of perspective. Molecularly, it's a small difference. Okay, there are big consequences (as far as we're concerned). But we don't say there's a "missing link" between a mostly-full bathtub and a flooded bathroom, it's just a bit more water and that's all. We don't say there's a missing link in a cliff, because the height changes discontinuously along the ground, that's just how landscape works. Saying there's a missing link with life, or evolution, is misunderstanding what evolution is. Evolution is about small changes that - sometimes - hit upon a combination of factors that produce a cascade, and become the next level of infrastructure. Molecules to replicating ones; single-celled organisms to multicelled; primates; apes; humans. Hey, even Greek city states and democracy. The two differences (in quality; in arrangement) are just two perspectives of looking at the same thing. But they are two different perspectives. That one appears to be big isn't magical (though it is awesome). A difference between life and not-life does not a missing link between arrangements of matter make.

I want to expand on something I mentioned in the notes of my 3 Steps talk.

The history of the universe is one of moving through a series of emergences. Morowitz's book, The Emergence of Everything, lists 28 of them, with planetary accretation and the metabolic cycle early, and the great apes and urbanism coming later. Another set (of 25 this time) is used in Charles Jencks' The Universe Cascade [another picture] in The Garden of Cosmic Speculation.

If you like, we live on the top of a pyramid of emergences, but I prefer to think we're buried, as deep as will go, in a possibility space--at the very tip of the inverted tree. We dig, we dig.

This is what the universe does, this is what it is: There's a distribution of things, roughly the same but with different parameters. There are selection algorithms that prune the rubbish ideas, and motivating factors (environmental pressures, environmental feedback) that keep the parameters permeating. One day, one set of parameters gets in sync with the prevailing environment: It finds itself not being pruned, but replicating. It has hit the cascade. And why not? It's no more impossible or unlikely (or likely) that there being one way to balance a pin on its tip. The difference with the cascade is that the solution to the equations is self-supporting, self-creating. Autopoietic.

There's nothing magical about the cascade, it just happens. That's what the universe does. It exists, and things which attempt to exist more, exist more. And if it doesn't happen? The environment is always slowly changing. An autopoietic loop, like the water cycle, or the metabolic cycle, or the cycle of life (which, in this era of human generations sprouting like an over-watered spider plant, we know not to be a cycle at all), a loop like one of these will always puff out side-effects. The loop is never totally clean. The metabolic cycle puffs out lemons just as puffers in Conway's Life puff out gliders. These side-effects build up, and build up, and build up. Sometimes they change the environment to such an extent that they operate as new surfaces for emergence, as water did on earth when it become oceans. If you're looking for magic and possibility, there's magic in magnitude.

And what if the cascade doesn't occur, and the build up of side-effects doesn't help? The side-effects become pollution, and a reset occurs. The dinosaurs reset to mammals, societies and philosophies have reset, and who knows how many dead ends there are in the world of quantum virtual particles. The larger the reset, the larger the catastrophe.

Get this. The universe is a depth-first search of possibility space.

At reboot7, in Copenhagen in June of this year, I ended up giving two presentations. The first was on Mind Hacks and the user interface. The second was an ad hoc talk that I wrote one day and gave the next, on the future of programming. My ideas have progressed (or at least changed) since then, but I wanted to put my of-their-time slides and notes online anyway, at least because the conversation in the room was so brilliant, and I'd like to let that go wider.

So, here it is: The 3 Steps: The history of physics and the future of computing. It's lengthy and hand-wavey, but - I feel - when the ideas are applied, very concrete. My summary on page 1: Trying to figure out what comes after object oriented programming, taking lessons from how we've understood gravity over the past few thousand years.

How am I? I'll tell you how I am. I'm having one of those days where I can't help noticing my nose in my field of vision.