What this simple exercise has attempted to do is to show you how to create a very powerful application engine in RAM.
If you look at your Ram allocation through something like "MemoryMapper" - which gives a graphical image of the physical allocation of Ram - you will see something like that shown in figure 1.19
Figure 1.19
A memory map showing a Director player named "Bio.pjr" together with its "portal" movie in memory
Figure 1.19 shows a Director player engine (the projector) and the portal (the "portal" document) as a kind of "cell" within RAM. This is the physical appearance of a biotelemorphic cell made using the Director authoring package which uses a RAM space of 4,112 kilobytes, of which 3,328 kilobytes is free.
The used space of 784 kilobytes is the amount of memory taken up by the player code (engine) and the portal movie - this constitutes the nucleus of the biotelemorphic cell which has been created.
It is appropriate at this stage that we completely forget about all the metaphors that are normally used with the Director application. As far as we are concerned we are dealing with a "cell" in Ram, into which we can place objects.
In this initial simple example, we can place objects into the free space within a cell by means of the portal facilities of an "Input" field and a "Do" button". We can also communicate and control the objects which we place into the cell by using these same portal facilities ("Input" field and "Do" button").
In essence, this is the total of what the biotelemorphic cell is all about. It is a cell with a Lingo code engine and a portal through which objects, messages, instructions and media can be passed in order to build and control objects and media.
It is the spread sheet equivalent of the "empty rectangle".
The virtual cross platform nature of the cell
On first thoughts, the biotelemorphic cell appears to be platform specific. It is certainly true that every different platform will require a different kind of cell to cope with the local hardware and software configurations, but, this is unimportant. What is important is that environment within the cell remains constant across platforms. As far as messages and media entering the cell are concerned it doesn't matter what the platform is.
The biotelemorphic cell must be treated as part of the users system in the same way as the hardware or the operating system. As you will see, this avatar stuff isn't about sending cells across the net: they remain fixed and constant on a client machine. The whole essence of avatars is that they are enigmatic software phenomena which manifest themselves within the cells from messages and media enering from outside.
If you don't quite get the idea of this, remember that to send an email to somebody, you don't have to send a copy of Eudora or Claris Emailer with every post - the posts manifest themselves within the environment of the client's own mailing program which installed by them on their machine. Similarly it isn't necessary to download a copy of Navigator or Explorer every time somebody reads a Web page.
What is the nature of the object we created?
With the above instructions to the biotelemorphic cell, we created a very simple object within its RAM space which did nothing more than make a noise - three beeps.
Clearly, if we can create an object which will make three beeps when called to do so - simply by sending it a message to activate a Lingo handler - we can create objects which respond to a variety of different messages to activate all kinds of complex Lingo scripting - in fact, any scripts using any commands which use the words and syntax of the Lingo programming language.
As we shall see later, Lingo objects can be given greater functionality than the activation of Lingo scripts: they can also be given a very useful feature called a property.
By declaring a property variable in the parent script of an object, an area of RAM memory will be added to the object's allocated memory space, sufficient to hold whatever content the object might want to store there.
This property feature allows individual objects to store media and to record various conditions and events. In other words, Lingo objects can be given "pockets" which they can use to carry information or bits of media around with them.
These property "pockets", allow the floating objects to have "memories" where they can store information "learned" from the environment or from other objects.
As we shall also see, these "pockets" will allow objects to have an image and a position on screen if necessary.
More incredibly, these pockets will allow the objects to have various types of "smartness" and simulated "emotions".
Similarity to Biological cells
The physical reality of a biotelemorphic cell is that it consists of a nucleus of compacted code which is acted upon by instructions coming from the outside to make things happen in a specified empty space within an enclosed area of RAM.
To make a further conceptual jump - needed to escape from the conventional metaphors of multimedia authoring packages - it will be useful to view the biotelemorphic cell with its player/application and its RAM space as analogous to a biological cell which also has a nucleus of code and a confining membrane.
Using this biological metaphor, we can view the RAM space allocated to a player/application as being equivalent to the boundary of the biological cell. Similarly, we can view the player code (engine) as equivalent to the nucleus of a biological cell which contains genetic code (the genes).
Documents and messages entering the RAM space of a biotelemorphic cell would be analogous to the molecular messages which are transmitted through the wall of a biological cell to activate the genes in the cell's nucleus to bring about all the wonderful transforms which translate into biological life.
Figure 1.20 is a diagram of a biotelemorphic cell. Compare this to the display we get from the MemoryMapper application (figure 1.19) and the diagram of a biological cell (figure 1.21).
It doesn't take much thinking about to become aware of the close similarities.
Figure 1.20
Diagram of a biotelemorphic cell in memory (Ram)
Figure 1.21
Diagram of a biological cell
Biological cells communicate with each other and the environment using a wide range of receptors, pumps and channels which input/output various chemicals, molecular signals and components across their bounding membranes.
As we shall see later, by using a variety of software mechanisms to exchange messages, information and media with each other and the environment, biotelemorphic cells can act in a very similar way to biological cells.
Upon first thoughts, it may seem counter productive to compare a a relatively simple software structure with the vastly more complicated structure of a biological cell which is many orders of magnitude more complex. However, we are going to use this biological cell metaphor to examine the higher order of organization which results from these basic mechanisms - not to examine minutiae of detail.
We will be looking, not at the details of structure or operation, but, at the more abstract "consequences of interactions". We will be looking to compare the holistic effects not the static detail.
The total variety of all the life forms present in our planet's physical environment provide ample evidence of the power and complexity which can be achieved through the interaction of biological cells.
If we can abstract out, the underlying structures and mechanisms which produce significant holistic effects in the biological world, there is no reason why we shouldn't simulate those same principles in a biotelemorphic cell world - to achieve similar feats of complexity, creation and variety.
Given time, it should be possible to reproduce the complexity and sophistication of the biological world in the virtual environment of the computer, the Internet and the World Wide Web - creating not physical life forms but a more ephemeral form of life - avatars.
The interaction of communicating cellular objects is truly a breath taking concept which I hope you will discover for yourself in this book - the marvel is that such incredibly powerful results can be obtained from abstract structures which in themselves are essentially very simple.
copyright 1997 Peter Small - No part of this document can be used or reproduced in any form without express permission
Details of book, CD-ROM and online continuation - peter@genps.demon.co.uk