When I used browser bookmarks, I had too many bookmarks. When I used an RSS reader, I had too many feeds to keep up with. I have too many emails backlogged. I'll deal with them because otherwise they never go away. Compare this with with my ad hoc list of little projects I want to do. I never do most of them because I forget them. This is annoying but fine, although it'd be nice if I could note down all those projects in a way that they too haunt me until done.
The problem is that there is an impedance mismatch between my memory and the memory of my information gathering applications.
Here's a feature I want from my RSS feeder. Every so often it should silently hide one of the feeds. If I notice, and if I remember what it was is that's been hidden, I should be able to say: Hey, you forgot feed X, give it back!, and the application would say: Okay then, you got me banged to rights, here it is. If I don't notice or can't remember, the feed is deleted permanently.
There's a trend for people to reboot their brains, to be reborn as children. Some of my friends do it. Gordon Brown does it. There's a sense this is a good thing to do, but also very sad because you lose a friend and they lose their memories, and a great thing for a politician because you can't chose what kind of child you're reborn as except it's you, and so they have to live among their policies. They have to take that longer, less self-centred view.
It's an alternative to dying. You get to live twice as long, but at the expense of cutting off "you" earlier than was meant. The reboot has to happen while you're alive.
But something with Gordon Brown goes wrong, there's a scratch during the operation on the brain and Brown starts to degenerate. His brain is dissolved from the inside. They copy the outside and graft the shape onto his reboot, which is now half this shape and half a new person. There is a sense this is tragic, but he is to be admired for this sacrifice.
This person, I talk to them in an interview for my website, is ignored by society; he is just another person. I see him riding a tricyle slowly through heavy traffic. He is slow too, mentally, stupid but not really, a child in a man's body. He feels like he is ruled by his brain. He says his neurons have their own desires.
Sometimes his neurons want something, they want to move in a particular way, rubbing up against each other like muscle cells. They want to dart out to talk to someone. But if he doesn't want to do it, they halt all his movement until he does. It's as if all the linkages of the cortex are in place, but without them being in sync with the emotional, motivational part of the brain. Usually these bits grow in parallel. Here the cortex is mature, subtle, but the motives are childlike and the "conscious" bit. There is a clash.
And this is kind of what we're all like. We can't help but to respond in certain ways to faces. Our face intelligence has responses that are wired in, and it just wants to do them. But we don't necessarily follow why. We can't cope if we resist it.
Imagine you always have tea when you get up. The pattern: walk left into the kitchen, move to switch on the kettle. It's all well and good to perform these actions in response to the alarm clock if that's what happens every day. And every day we believe we're in control, that we get up when we hear the alarm and go downstairs and turn left and switch on the kettle. But it's become hardwired: the alarm clock controls the kettle. We never notice, because the hardwiring is in the context of our life. Our life changes gradually, and the hardwiring too.
Put these hardwired actions in the context of a different life, and they're out of place: We perform, but the performance is mysterious, without motive. The performance of the face intelligence, of evolutionary intelligence, of an adult is subtle. Mostly we are motivated to do the same, so we never notice we're not in control, but sometimes we're not motivated yet the performance wants to happen anyway.
Programming languages have very few differentiated constructs. They calcify common patterns. The while loop tames the goto, fixing the if-then-goto pattern. While while is the human use of goto, foreach is the human use of variables. Foreach sees the possibility of writing the same code and, by changing the values, applying it to a number of variables. These two take a latent possibility and turns it into a pattern which is comprehendible to reduce the amount of code written. What others are there?
Numbers are quantities. Algebra abstracts away from numbers: variables carry pointers to numbers. Code abstracts once more: variables carry pointers to code, that which can be run to produce more code, or more pointers, or more numbers. What's the next level?
It's no use asking what an object is, you have to ask what it does. The code cannot guarantee the data has total integrity unless the data store and the code comprise a self-contained, unbreakable system (they never do). Asking what the object is an instance of is prone to breakage. Use duck typing. Assume the minimum about the data of the object for any given operation. Try it. If it doesn't work, that's fine. Do more if there's more data present. Operate by binding, not by pointing. Data lookups are different with binding: you need to express not a type, but a possibility, and ask the datastore what could work with that. Limits are set by inflection points of possibilities of binding, not by categorisation by properties. A flirting glance for code; a runtime implicature.