First example of mapping and calibration: the Shape Shifter

On his Web site, Forrest Bishop introduces something he calls the Shape Shifter:

Imagine an object that can change its shape, color, and texture to mimic many types of things. If you had a bread-box size piece of this "material," it might take the place of most of your electronic and household appliances by simply turning into the machine you wish to use at the time.

Then, on another page Forrest describes how such material could be made from Gantry cells.

When I learned to use a spreadsheet (in 1985), it occurred to me that a spreadsheet with a macro language is equivalent to a computer. You have an array of cells. Each cell can contain a number, a text string, or an instruction in the macro language. Thus the cells correspond to memory locations in a computer. To run a program, you enter the instructions in a column of cells, point to the top cell, and give a start command. This is just like setting the program counter to a certain location in memory, bringing the contents of that memory location to a register, and doing something with it.

I experimented with this idea and found that it is possible, though awkward, to write programs. I wrote an implementation of Conway's Life Game using the Lotus 1-2-3 macro language. It wasn't slick but it worked.

The same principle applies to Gantry cells. The "material" Forrest describes will be equivalent to a three dimensional spreadsheet, which is equivalent to a computer. Each Gantry cell will have to contain some information. It will interact with other cells based on that information. There will be a language, like assembly language, with instructions like "move one space to the right," and also higher level languages, like C++ or Java, with which one can describe and manipulate large-scale structures.

Thus the proposed system (the Shape Shifter) is equivalent to a computer. It could be emulated by a program on an existing computer. It isn't necessary to build it first to investigate its properties.

If one Gantry cell program represents a vacuum cleaner, and another Gantry cell program represents a refrigerator, the Shape Shifter transforms one program to another. Thus, the "shifter" is a new genre of software. It resembles a compiler, in the sense that a shifter has one program as input, and another as output. But instead of merely translating a program from a high level language into machine language, the shifter transforms the program itself into something else. The input could be a bubble sort, and the output of the shift would be a Shell sort. As a first step toward calibrating this idea, you might try writing a simple shifter for sort algorithms. (First you have to have a high level language in which you can express an abstract representation of a sort algorithm. Then the bubble sort and Shell sort will be instantiations of this general representation.)

There are many other possibilities. The input could be a Pascal compiler, and the output of the shift would be a C compiler. The input could be NT, and the output would be Linux.

A Shape Shifter could be used to port software from one platform to another. The input could be Photoshop for MacOS, and the output would be Photoshop for the Be OS.

If you have a 3D modeling program such as trueSpace, the Shape Shifter would be a plug-in that would morph a model of a refrigerator into a model of a vacuum cleaner. If you have AutoCad, the Shape Shifter would morph a design for a refrigerator into a design for a vacuum cleaner.

To calibrate this idea, consider a simpler project. Consider using a shifter to transform Windows NT from version 4.0 to version 5.0. (Hmm... would that really be simpler?) I am using this as an example because anyone who has done any programming has some idea what is involved in it.

Why isn't it done that way now? Instead of maintaining an expensive staff of programmers, why doesn't Microsoft have a Shape Shifter to update the OS? In fact the same question can be posed about programming in general: why do we have human programmers instead of Shape Shifters? (If you want the Shape Shifter to morph NT 4.0 into 5.0, how detailed do the instructions have to be? Does it already know what NT 5.0 is, without being told?)

I am using this as an introductory example of how I approach nanotechnology. First, I note that two things are equivalent: Gantry cells are equivalent to a computer. This is the mapping step. This puts us in a more familiar domain, the domain of software. Then, calibrate the idea of a Shape Shifter by considering what would be involved in "shifting" one sort algorithm to another, or one version of an OS to the next version. We know how much work is involved in going from NT 4.0 to 5.0. That gives us some idea of what would be involved in a Shape Shifter for Forrest's magic material. However, it's not just a matter of calibrating the complexity of the task. The question raised in the previous paragraph introduces a logical point which is also an indication of what is to come.

The position I am defending here is that the world is going to retain its general features, regardless of what can or can't be done with atoms. So we are concerned with the question, Why is the world the way it is? -- Why, for example, do people only do one job? Why do assembly lines produce one product? Why don't refrigerators turn into vacuum cleaners? Why does software, once written, stay in use for decades? Why don't we have Shape Shifters now? The answer is that a Shape Shifter has to be programmed. In other words, to use a Shape Shifter to morph A into B, you have to describe B in such detail that it amounts to the same thing as writing a program. Writing a program in the Shape Shifter language to morph NT 4.0 into 5.0 is exactly equivalent to writing NT 5.0 in C++. Thus the very idea of a Shape Shifter is an illusion.


next page: the organism that can make anything,
including copies of itself

back to the table of contents

home