Another place to find a helpful biological metaphor is in the human brain. The brain is made of specialized parts, like the visual cortex, the cerebellum, and the hippocampus. During fetal development, the many parts find each other to make an extraordinary number of connections, neuron reaching out to neuron. Each part forms itself so as to make the best use of the rest of the brain. Each border between regions of the brain can be thought of as a grand version of the sort of connection I’ve described between a computer and the outside world, based on an ever-improving approximation instead of a perilous reliance on perfection.
Suppose software could be made of modules that were responsible for identifying each other with pattern recognition. Then, perhaps, you could build a large software system that wouldn’t be vulnerable to endless unpredictable logic errors.
What would the modules be like? One idea is that each module could be a user interface, like the contents of a window on a Mac or Vista desktop. Here’s a bit of trivia: Andy Hertzfeld, who wrote much of the original Macintosh OS and is a major figure in Dreaming because of his work on Chandler, helped me try to realize an early experiment along these lines. It was called Embrace back then, in 1984, and it came together right after Andy quit Apple (when the Mac was released).
In the Embrace system, user interfaces could operate each other—one window manipulating another as if it were a human user. This might sound like a strange idea, and it was. A hidden digital character—like a figure in a video game that just isn’t animated to appear on-screen—was affixed to the back side of every window. This figure could be trained to operate other windows, each of which had an ability to do the same thing. In this way a whole software environment was made of nothing but user interfaces that could operate each other! Instead of a library of arithmetic routines, for instance, there was a graphical calculator gadget, and either a digital character or an actual human could use it to add numbers through the same interface.
Oddly enough, the Internet might be evolving to look a little like this old experiment. Existing Web pages are already being used by intrepid programmers as raw materials for new Web pages, called mashups. In my opinion, the biggest missed opportunity in the current wave of Web development is that mashups are glued together using the traditional sort of abstract programs. Now that machine vision and other pattern-based techniques are becoming reliable, it is finally conceivable for Web pages to use each other at the user-interface level, the same way that humans use them. That would be a great development: Then a mashup construction could become adaptive and escape the curse of random logic mistakes.
Perhaps something like the phenotropic idea will be realized out of the Web as it evolves, or perhaps it needs to be built in a lab first. Whether the old Embrace idea of “user interface as building block” is any good or not, it seems likely that pattern recognition will come to play a greater role in digital architecture.
I’ll leave you with a thought that haunts me. In my earlier days, when I experienced “dreaming in code,” I had a peculiar and profound experience from time to time. I would get a gut feeling that a program had suddenly achieved the state of being bug free. When I got that feeling, I was always right—as far as anyone could tell, at least. (As Turing proved, there is no general way to predict the outcome of running a given program; see "The Soul of the Machine".) The sensation was like the one I get when I understand a mathematical proof. It’s a sharp-edged sense of rightness that I wish everyone could feel. Of course, there was no way to know how reliable this sense really was. I could have easily had a lucky streak or fooled myself by forgetting the times the feeling was wrong.
This reminiscence can’t help but invoke Roger Penrose’s notion that the experience of “getting” a mathematical proof involves extraordinary neurological mechanisms—according to him, a quantum computation going on within the brain. I don’t accept that argument. What I gather instead is that approximate pattern recognition—the process that was taking place in my head during my programming epiphanies—can become very reliable at understanding a complex system. And that is one big reason why I am still chasing the dream of phenotropics.




