Design Takeaways from Steve Grand's "Creation"

“Playing with Lego bricks is much easier and more intuitive than writing computer code.”

Steve Grand, Creation

I heard about Steve Grand’s book “Creation” though some now lost twitter post about the early day’s of AWS1. Apparently Jeff Bezos made the book required reading for the entire team. It was strange that a book about “artificial life” would be so important for the start of an infrastructure platform, and getting a chance to peek into mind of an artificial life designer was definitely intriguing enough, so I decided to pick up a copy and see what the fuss was all about.

On the surface, the book attempts to answer the question “What is artificial life?”. In the first half of the book, Grand discusses the building blocks of life, and how life emerges from a series of causes and effects. In the second half of the book, he walks through the design process of Creatures, a video game he created in the mid-90s that involves the nurturing, observation, and interaction with artificial life creatures.

The main points of the book revolve around “cybernetics” - the study of cause and effect. If “life” is currently found in nature, then Grand proposes that we should begin the search for artificial life by exploring the way nature itself has organized life. He discusses the basic, interconnected building blocks of the world around us.

“The universe is not made of stuff but of events and relationships.” (p41)

He talks through a basic understanding of neurons and biochemicals, how these atomic pieces can relate to and influence one another, and finishes by giving examples of how these basic building blocks can self-organize into much more complex structures to accomplish more advanced tasks. Tasks such as the moment-to-moment self-regulation of hunger, exercise, and reproduction, as well as the long-term tasks of learning from past experiences and predicting new actions when put in a new and unknown scenario. Grand’s ultimate hypothesis is that the only way to produce “life” is to design a system that is able to self-organize from a set of disorganized atomic parts, as opposed to being designed and engineered top-down. Self-organization is the only way to produce emergent behavior in a sufficiently complex environment.

While the discussion of artificial life, cause and effect, emergent behaviors, and simulating the building blocks of life was incredibly fascinating on its own - and Grand is certainly a good enough author to keep me engaged - I had a number of takeaway thoughts on the nature of design itself from reading the book.

1

First, when designing, it helps to have a strong historical understanding of the problem domain. History provides a useful context for what has been tried, as well as what has been tragically forgotten. It’s easy for designers to follow the trends of the current day, replicating existing solutions to a problem, and getting stuck in a local optima of exploration. It can feel like a regression to refer back to historical work, but often this can lead to a renewed set of approaches towards problem solving that might have been shelved too early.

“The problem with all fields of research is that people are impatient. If a particular line of enquiry seems to be making progress, we continue down that line, but if it seems to be getting nowhere, we abandon it. This is a problem, because the route to the future is often tortuous. Things seem to be moving towards the goal but then unexpectedly snake off in the wrong direction. Initially unproductive approaches can often turn out to be the only ones that lead to the desired destination.” (p16)

In his exploration of artificial life, Grand reaches back to Alan Turing’s work on “self-organized machines”. Turing categorized computation around “organized”, “disorganized”, and “self-organized” machines2. “Organized” machines are top-down, serial, and procedural. “Disorganized” and “self-organized” machines are bottoms-up, parallel, and relational.

The computing industry has mostly explored the “organized”, top-down way of constructing programs, and been very successful following that model. The designer writes the program to match explicitly the outcome they are trying to achieve. It’s much easier to reason about these kinds of programs, allows for more centralized control of the experience, and maps incredibly well to our modern day, serial compute architectures. Unfortunately this success and simplicity means “disorganized” and “self-organizing” approaches have not been explored as much. They are not sharpened tools in our tool bag.

Grand takes a step back and reconsiders which form of computation would most likely yield interesting results when it comes to creating life. He believes the conditions needed are far too complex for any intelligent human designer to brute force a solution to the problem, and argues that instead of “organized” approaches to life, we should explore the “disorganized” and “self-organized” models for inspiration. All of his work continues down this path, but it’s clear that he’s having to do a lot more discovery along the way.

Getting back to basics and challenging the current “best-practice” assumptions is often the best way forward. Of course, this means having a decent grasp of the problem being explored, both the domain and the historical assumptions that are being made.

2

The next thought on design from the book is that, in many cases, you should be building a system bottom-up, starting with first-principles and composing the system from those basic building blocks.

To start his exploration of creating artificial life, Grand steps back to explore the biological and chemical rules that govern existing life, steps back again to consider the molecular and atomic building blocks of those rules, and finally takes one final step back into the physical laws of the universe that allow for matter to exist at all. You begin to wonder if Grand is about to simulate the entire universe, but he doesn’t. I’m sure he would if it were realistically possible, but for Grand, it’s a useful exercise to drive the design process as far into the deep-end as possible to find the right starting point.

Grand ultimately chooses to model the biological and chemical rules of life, abstracting away the underlying atomic and physical principles. He decides that modeling these biological rules will give him enough relational complexity to allow for emergent behavior, which is what he is looking for.

“Emergence is the essence of what we are trying to achieve -a thing that is really alive and really thinks, not a sham that looks as though it is alive and thinking.” (p73)

This abstracting away of underlying complexity isn’t a bad thing at all, design exists within constraints. In Grand’s problem, he was limited in the power of the machines, as well as the fact that he was designing a video game, which required a real-time simulation that a human user could interact with. He wasn’t going to be able to simulate the universe in real-time on a personal computer from the mid-90s.

But Grand concludes that starting at a higher abstraction doesn’t necessarily reduce the success of the outcome. In fact, he argues that if you sufficiently abstract and model the underlying complexity (create an abstraction that responds to inputs as close to reality as possible), you can actually consider anything built on top of that abstraction to be as real as anything else.

“A computer simulation of an atom is not really an atom. It does not really have mass or charge, it only behaves as if it does (just as the virtual ball above behaves rather like a ball, yet clearly is not one). But if you make some molecules by combining those simulated atoms, it is not the molecules' fault that their substrate is a sham; I think they will, in a very real sense, actually be molecules. If we then go on to make materials out of these molecules, it is not unreasonable to call these materials real. In fact, it is even fair to describe them as material things.” (p78)

Thankfully, a lot of specific details inside an abstraction don’t greatly impact the consumers. You just have to be careful to make sure your abstraction includes the critical parts.

“Not all systems are brittle, happily. In many systems the exact details turn out not to be important, and much the same behaviour emerges out of the second level, regardless of the exact implementation of the first.” (p80)

So dig deep, push the problem domain and design to the logical extreme, then step back, find the right abstraction to start with that gives the behavior you’re looking for, make sure the important details are included in the abstraction, and trust that what you’re building on top is just as real as anything else.

3

The third thought is that to be a designer is to “cheat”. Of course good design involves knowing how to bend or ignore certain rules, but I was struck by how often Grand said that he was “cheating” while figuring out how to implement his designs.

“Happily, one of the virtues of a virtual world, compared with the real one, is that we can cheat.” (p152).

“This is an embarrassing cheat, I know.” (p152)

He had just discussed abstractions, how second-order principles were just as real as anything else, but still seemed to think he was “bending the rules a bit too far”.

Designers can get too wrapped up in the purity of their designs, and any violation of that purity feels like cheating. But that’s not really true, it’s just admitting that the constraints are real, and that prioritization and trade-offs are necessary to make progress towards getting something out the door.

It’s interesting that the “cheat” feeling exists though. Even for well established designers. It’s a good reminder to acknowledge the feeling, but ultimately put the feeling in the right context and move forward.

4

The final, and biggest takeaway was the reminder that to be a successful designer, you need to roll your sleeves up and be actively building.

“But I think that there is a kind of understanding that can be achieved only by building things for oneself, and that this kind of understanding generates a respect for the subject that may be lacking in one who merely ‘sees how the trick is done’.” (p11)

The creation process is a feedback loop itself, starting with Curiosity, which leads to Play, which increases Understanding and Respect. With more Understanding and Respect come new questions or hypotheses to explore, which kicks off your Curiosity again.

But curiosity and play can be frustrating at times. Answers are sometimes easy to find, and sometimes hard to come by. Sometimes it’s clear where the next step is, sometimes you feel aimless.

Part of the process of design is simply creating space. Sitting for a bit in the discomfort. Yuval Noah Harari called this “wasting time” 3, John Cleese called it “being childlike” 4. The idea is to give yourself the physical and emotional opportunity to explore the domain in a way that is not trying to achieve some specific, in-the-moment outcome, but simply to learn and be challenged. It can be easy to want to jump to conclusions, but attempt to stay inside the problem space for as long as possible. Don’t settle for cheap answers.

This requires patience. Luckily, curiosity and patience are not independent. An authentic curiosity for the problems being solved can provide patience for challenging times. It probably helps to focus on problem domains that you are genuinely curious about.

“Find a job you enjoy doing and you’ll never work a day in your life.” That’s probably not really true, but “enjoyment” probably helps with motivation to keep at it.

Fin

It’s not hard to see why Grand’s book was a big influence on Jeff Bezos in the early days of creating AWS. AWS is an infrastructure platform that provides the basic building blocks of modern, cloud-based applications. By focusing on the right first-principles and separation of concerns, they’ve created a platform that has allowed many different applications to be created and formed. From online bookstores, to real-time chat, to machine learning pipelines, and many more. Talk about emergent behavior!

What other problems are just waiting for further exploration? What other domains could use a bit more emergent behavior?

Overall, it was fun to watch Grand walk through the creation of life. It was a good reminder of the truly fun parts of the creation process and sparked a lot of interesting thoughts and principles to explore.

But enough writing, time to get back to play.


  1. It wasn’t this, but this will get you in the ballpark: https://twitter.com/search?q=aws%20creation%20steve%20grand&src=typed_query ↩︎

  2. Alan Turing, Intelligent Machinery ↩︎

  3. “Yet if you want to go deeply into any subject, you need a lot of time, and in particular you need the privilege of wasting time. You need to experiment with unproductive paths, explore dead ends, make space for doubts and boredom, and allow little seeds of insight to slowly grow and blossom. If you cannot afford to waste time, you will never find the truth.” (Yuval Noah Harari, 21 Lessons for the 21st Centrury↩︎

  4. “McKinnon showed that the most creative had simply acquired a facility for getting themselves into a particular mood, a way of operating, which allowed their natural creativity to function. In fact, McKinnon described this particular facility as an “ability to play”. Indeed, he described the most creative when in this mood as being childlike, for they were able to play with ideas, to explore them, not for any immediate practical purpose but just for the enjoyment. Play for its own sake.” (John Cleese on Creativity in Management, 5:43↩︎