But birds and fish had no leaders. Their groups weren't organized that way. Careful study of flocking behavior-frame-by-frame video analysis-showed that, in fact, there was no leader. Birds and fish responded to a few simple stimuli among themselves, and the result was coordinated behavior. But nobody was controlling it. Nobody was leading it. Nobody was directing it.
Nor were individual birds genetically programmed for flocking behavior. Flocking was not hard-wired. There was nothing in the bird brain that said, "When thus-and-such happens, start flocking." On the contrary, flocking simply emerged within the group as a result of much simpler, low-level rules. Rules like, "Stay close to the birds nearest you, but don't bump into them." From those rules, the entire group flocked in smooth coordination. Because flocking arose from low-level rules, it was called emergent behavior. The technical definition of emergent behavior was behavior that occurred in a group but was not programmed into any member of the group. Emergent behavior could occur in any population, including a computer population. Or a robot population. Or a nanoswarm.
I said to Ricky, "Your problem was emergent behavior in the swarm?"
"Exactly."
"It was unpredictable?"
"To put it mildly."
In recent decades, this notion of emergent group behavior had caused a minor revolution in computer science. What that meant for programmers was that you could lay down rules of behavior for individual agents, but not for the agents acting together. Individual agents-whether programming modules, or processors, or as in this case, actual micro-robots-could be programmed to cooperate under certain circumstances, and to compete under other circumstances. They could be given goals. They could be instructed to pursue their goals with single-minded intensity, or to be available to help other agents. But the result of these interactions could not be programmed. It just emerged, with often surprising outcomes.
In a way this was very exciting. For the first time, a program could produce results that absolutely could not be predicted by the programmer. These programs behaved more like living organisms than man-made automatons. That excited programmers-but it frustrated them, too. Because the program's emergent behavior was erratic. Sometimes competing agents fought to a standstill, and the program failed to accomplish anything. Sometimes agents were so influenced by one another that they lost track of their goal, and did something else instead. In that sense the program was very childlike-unpredictable and easily distracted. As one programmer put it, "Trying to program distributed intelligence is like telling a five-year-old kid to go to his room and change his clothes. He may do that, but he is equally likely to do something else and never return."
Because these programs behaved in a lifelike way, programmers began to draw analogies to the behavior of real organisms in the real world. In fact, they began to model the behavior of actual organisms as a way to get some control over program outcomes. So you had programmers studying ant swarming, or termite mounding, or bee dancing, in order to write programs to control airplane landing schedules, or package routing, or language translation. These programs often worked beautifully, but they could still go awry, particularly if circumstances changed drastically. Then they would lose their goals. That was why I began, five years ago, to model predator-prey relationships as a way to keep goals fixed. Because hungry predators weren't distracted. Circumstances might force them to improvise their methods; and they might try many times before they succeeded-but they didn't lose track of their goal.
So I became an expert in predator-prey relationships. I knew about packs of hyenas, African hunting dogs, stalking lionesses, and attacking columns of army ants. My team had studied the literature from the field biologists, and we had generalized those findings into a program module called PREDPREY, which could be used to control any system of agents and make its behavior purposeful. To make the program seek a goal.
Looking at Ricky's screen, the coordinated units moving smoothly as they turned through the air, I said, "You used PREDPREY to program your individual units?"
"Right. We used those rules."
"Well, the behavior looks pretty good to me," I said, watching the screen. "Why is there a problem?"
"We're not sure."
"What does that mean?"
"It means we know there's a problem, but we're not sure what's causing it. Whether the problem is programming-or something else."
"Something else? Like what?" I frowned. "I don't get it, Ricky. This is just a cluster of microbots. You can make it do what you want. If the programming's not right, you adjust it. What don't I understand?"
Ricky looked at me uneasily. He pushed his chair away from the table and stood. "Let me show you how we manufacture these agents," he said. "Then you'll understand the situation better." Having watched Julia's demo tape, I was immensely curious to see what he showed me next. Because many people I respected thought molecular manufacturing was impossible. One of the major theoretical objections was the time it would take to build a working molecule. To work at all, the nanoassembly line would have to be far more efficient than anything previously known in human manufacturing. Basically, all man-made assembly lines ran at roughly the same speed: they could add one part per second. An automobile, for example, had a few thousand parts. You could build a car in a matter of hours. A commercial aircraft had six million parts, and took several months to build.
But a typical manufactured molecule consisted of 1025 parts. That was 10,000,000,000,000,000,000,000,000 parts. As a practical matter, this number was unimaginably large. The human brain couldn't comprehend it. But calculations showed that even if you could assemble at the rate of a million parts per second, the time to complete one molecule would still be 3,000 trillion years-longer than the known age of the universe. And that was a problem. It was known as the build-time problem.
I said to Ricky, "If you're doing industrial manufacturing…"
"We are."
"Then you must have solved the build-time problem."
"We have."
"How?"
"Just wait."
Most scientists assumed this problem would be solved by building from larger subunits, molecular fragments consisting of billions of atoms. That would cut the assembly time down to a couple of years. Then, with partial self-assembly, you might get the time down to several hours, perhaps even one hour. But even with further refinements, it remained a theoretical challenge to produce commercial quantities of product. Because the goal was not to manufacture a single molecule in an hour. The goal was to manufacture several pounds of molecules in an hour. No one had ever figured out how to do that.
We passed a couple of laboratories, including one that looked like a standard microbiology lab, or a genetics lab. I saw Mae standing in that lab, puttering around. I started to ask Ricky why he had a microbiology lab here, but he brushed my question aside. He was impatient now, in a hurry. I saw him glance at his watch. Directly ahead was a final glass airlock. Stenciled on the glass door was MicroFabrication. Ricky waved me in. "One at a time," he said. "That's all the system allows."
I stepped in. The doors hissed shut behind me, the pressure pads again thunking shut. Another blast of air: from below, from the sides, from above. By now I was getting used to it. The second door opened, and I walked forward down another short corridor, opening into a large room beyond. I saw bright, shining white light-so bright it hurt my eyes. Ricky came after me, talking as we walked, but I don't remember what he said. I couldn't focus on his words. I just stared. Because by now I was inside the main fab building-a huge windowless space, like a giant hangar three stories high. And within this hangar stood a structure of immense complexity that seemed to hang in midair, glowing like a jewel.