I’ve seen some very interesting stuff recently about the relativity of time in consciousness. It confirms some things I’ve long suspected.
I noticed that I often appear to start listening to the noise of the fridge humming just about 3 seconds before it stops. This of course isn’t really possible, so what it points to is a time buffer in consciousness.
This is confirmed by recent experiments in neuroscience – here’s a transcript from a Reith Lecture by VS Ramachandran.
“So we’ve talked about hysterical patients with hysterical paralysis. Now let’s go back to normals and do a PET scan when you’re voluntarily moving your finger using your free will. A second to three-fourths of a second prior to moving your finger, I get the EEG potential and it’s called the Readiness Potential. It’s as though the brain events are kicking in a second prior to your actual finger movement, even though your conscious intention of moving the finger coincides almost exactly with the wiggle of the finger. Why? Why is the mental sensation of willing the finger delayed by a second, coming a second after the brain events kick in as monitored by the EEG? What might the evolutionary rationale be?
The answer is, I think, that there is an inevitable neural delay before the signal arising in the brain cascades through the brain and the message arrives to wiggle you finger. There’s going to be a delay because of neural processing – just like the satellite interviews on TV which you’ve all been watching. So natural selection has ensured that the subjective sensation of wiling is delayed deliberately to coincide not with the onset of the brain commands but with the actual execution of the command by your finger, so that you feel you’re moving it.
And this in turn is telling you something important. It’s telling you that the subjective sensations that accompany brain events must have an evolutionary purpose, for if it had no purpose and merely accompanied brain events – like so many philosophers believe (this is called epiphenomenalism) – in other words the subjective sensation of willing is like a shadow that moves with you as you walk but is not causal in making you move, if that’s correct then why would evolution bother delaying the signal so that it coincides with your finger movement?
So you see the amazing paradox is that on the one hand the experiment shows that free will is illusory, right? It can’t be causing the brain events because the events kick in a second earlier. But on the other hand it has to have some function because if it didn’t have a function, why would evolution bother delaying it? But if it does have a function, what could it be other than moving the finger? So maybe our very notion of causation requires a radical revision here as happened in quantum physics.”
The New Scientist recently carried an article which argued that our perception time is just one of many possibilities which happens to be evolutionarily advantageous. We could store up all events perceived and view them backwards, but this wouldn’t help us for example in catching a ball… (or a fly if we are a frog).
I’m impressed with the British reaction to the bombings last week. There’s no hysteria – calls for bombing innocent people in far-off countries, wall-to-wall press coverage, and not too much exaggeration. There was a call at my office among the british to have some minutes silence for the victims, but (not to diminish their suffering but…) the guy in charge just said – we didn’t have a silence for the victims of the 2003 heatwave (30,000 of them) or the linate plane crash – so why this? – and we decided not to do it. I think the word *terror*ism is an important clue to how and why these things happen. With a relatively low cost action, a very small number of people cause practically a whole population to be terrified. In reality the chances of being hit by one of these guys in the average year is similar to winning a substantial amount of lottery money, dying in a road accident, and much less than a number of other risks kicking around. So well done to Blair for his life-goes-on stance.
A bit of Java which should have been on some mailing list somewhere but wasn’t thereby causing me an afternoon of brainstrain – so here it is for googlers:
When you create a Swing JTree using the adapternode pattern – see here: Java Web Services Tuturial
This is a related problem but not the same:
Basically this is a method of displaying any XML or other document which is structured hierarchically in a very quick way by overriding the child, childcount etc… methods of the JTree node so that they get the children etc… according to the way the hierarchy is defined in your format. For example I used it to display an XML schema document which for DOM purposes is flat.
Anyway the problem is that it produces a kind of a stateless tree – in that each tree node only knows about its children and the whole tree doesn’t seem to know about the paths it contains from root to leaf (although it does seem to know how many nodes it has in total). So it seems that it only works out the child node as and when you expand them. So the problem I had was how to expand and select a given path which I had matched in a list in the GUI.
This is the only way I could find to do it:
…..
//Create the treepath recursively using the recurseConstructPath method below and convert the vector to an array (otherwise you don’t know how long it is before hand)
Vector treePathToSelectVector=recurseConstructPath(selectedListElement,new Vector());
TreePath treePathToSelect=new TreePath((TreeNode[])treePathToSelectVector.toArray(new TreeNode[treePathToSelectVector.size()]));
//Then recursively match and expand the visible rows as you go through the paths:
recurseExpandTree(treePathToSelect,treePathToSelect.getPathCount()-1,parent.parent.dataSchemaTree,0);
…..
Using these methods:
//Get the tree path recursively. Note that you have to add a parent() method to the Adapter pattern to make this possible – just pass the node itself to the child() method’s adapternode constructer
private Vector recurseConstructPath(TreeDataTypeModel inputNode, Vector treePathVector){
treePathVector.add(inputNode);
if(inputNode.parent()!=null){
treePathVector=recurseConstructPath(inputNode.parent(),treePathVector);
}
return treePathVector;
}
//Go through all the currently expanded rows and if it matches that level of the path, expand it. Then do it again until you get no match. Note that the path nodes go backwards!
private void recurseExpandTree(TreePath path,int pathIndex,JTree tree,int startRow ){
int matchRow=0;
for(int i=startRow;i