NOBLE APE MAIL OUT - FEBRUARY 2002|
This month's mailout and development has moved away from the code of the Noble Ape simulation and explored the other parts of the Project. As the CVS shows, I have developed some parts of the simulation code-base, but I would like to spend this month's mailout looking at broader issues faced by the Noble Ape Project.
Historically, the Noble Ape Project was defined by the Noble Ape Manuals and about a year and a half's worth of the Noble Ape Mailout which resided on the web site. The Mailout provided a chronology of work that had been done, work that was being done, and time frames for future work.
The legacy of the Noble Ape Project's documentation are the formative Noble Ape Manuals - a Tale from Noble Ape. Whilst these documents are very detailed, the amount of information they pass on to a novice or even advanced user of the Noble Ape Simulation is limited. The new Noble Ape Manual - offered together with the simulation - contains some of the information necessary to use the Simulation but lacks the underlying methodology. Equations and descriptions only offer a limited subset of the Noble Ape experience.
The problem of documenting can be summed up as follows - "There is only a finite amount of time to write code." When you are not writing code, you are taking precious time that you could use to write code.
Another problem is the changes-to-maintained-code ratio. Due to the Stockholm re-write and other strategic development rework, today's Noble Ape Simulation is considerably different to the Noble Ape Simulation of 2000. Users don't like rapid change without considerable documentation. The core of the Noble Ape Simulation is only 800-900 lines of code! The development ethos of the Noble Ape Simulation is reduce the number of functions, function calls and lines of code - primitive optimisation principles 101. The graphical user interface and the state-based/view-based interface structure of the Noble Ape Simulation produces additional code overheads. There have been a lot of changes without the breadth of documentation required to introduce and develop these changes.
My aim has always been to document the core components first - how they fit together - and then move progressively through the other documentation components. One of my pressing documents currently is an overview of the various sections of the Noble Ape Simulation highlighting the different technologies and their independent development. Another problem has been the recent and ongoing development of an OpenGL interface for the Noble Ape Simulation. Whilst the Simulation Core documentation is still lagging, I have to produce an overview document for the new graphical interface and how that interlinks with the rest of the code.
The progressive strategy has been - an image is worth a thousand words. There are many minimally documented images that attempt to convey development strategies and goals. The image description of the user interfaces and how they fit into the modular-components view of the Noble Ape Simulation has been on the site for a number of months. I am still unclear how successful this graphical description has been.
In order for the Core Simulation to run, it requires just two external function - timecall() which seeds the randomiser and nerv_update() which sends information out of the simulation core with regards to time, date, weather and the ape locations. The other parts of the core are interrogated externally. Technically nerv_update could be read and registered passively by an external interrogative function - the ape's direction/facing information is gathered independent of the nerv_update() call. I have long suspected this call is very broken and should be removed. Similarly timecall() could easily be replaced with an external interrogation. This would produce a core which could be run stand alone with the correct main() description. Where does this documentation go?
The technical methodology of the Noble Ape Simulation is very different to the philosophical methodology of the Noble Ape Simulation and the documentation of both have been long overdue. In response to some of this, I started writing and updating the (all new) Noble Ape Manual. This document was created originally for the Noble Ape 0.650 release but has been updated a number of times since. The Noble Ape Manual has become a repository of a information on the Noble Ape Simulation. The document was originally developed for a novice user but contains sections on the future development of the simulation that have become current developments and completed developments through the relatively short age of the document. For maintainability, I would much rather have a single document that did everything for nearly everyone than a series of documents or even worse hundreds of web pages with interlinking documentation.
The documentation is defined by the user base. The developer base that Noble Ape has enjoyed in the past have mainly been new programmers and non programmers. This makes the user base both a challenge and the lifeblood of the Noble Ape Project. I attempted to survey the Noble Ape user base in 1997 and 1998. The results collected probably aren't applicable to the modern simulation user-base.
The old user-base has almost all eroded. The statistics currently show roughly 60-80 unique visitors to the site per day. Most of these people have either come through links or basic searches on a series of terms - simulation, virtual reality, Canberra Times, Captain Crunch and hacking. Not necessarily the search terms you would expect.
There is a universal shortage of good programming tools. Lint tools - like Splint - are useful for large projects where quality control of code is an issue. But for strategic development of software -particularly the redevelopment and integration of programs (which has been a central theme in the development of the Noble Ape Simulation) - new and diverse tools are needed.
Two tools exist within the Noble Ape Simulation CVS that are stand-alone resources. These tools were developed over the past couple of months as they were needed.
NervMake is a make utility that assembles pre compiled code from imbedded comments within .c and .h files (or cpp hpp java files etc). It is a single .c file which will compile through gcc or any ANSI C compiler. The Core and Command-Line Environment sections of the Noble Ape Simulation contain imbedded NervMake information.
CTH is a utility that changes .c and .h files to HTML and tracks variables or function names. This tool was developed for many reasons. I had studied Apple's HeaderDoc technology. HeaderDoc creates documentation from header file information and translates this to documentation. Unfortunately I required a tool that would interrogate .c and .h files. The assembled information in HeaderDoc was poorly organised. HeaderDoc is written in PERL and my PERL programming isn't what it used to be. Similarly I didn't want to include any code in the Noble Ape Simulation that was hinged on an external company's Open Source license. The result is CTH. CTH is a very different utility to HeaderDoc. The features of both should not be confused.
NervMake and CTH are still in a very early BETA and can be found in the CVS (link top-right "Latest CVS" from http://www.nobleape.com/sim/);
Two central developments will continue over the next month;
land-function resolution improvements
The OpenGL interface showed the limitations of the existing Noble Ape Simulation. In the past month I have developed a high resolution mapping utility that will be introduced in the Noble Ape Simulation source within the next month or so. The base resolution of the utility is 1024 x 1024 rather than 128 x 128. The distinction is 25 x 25 squ m resolution cells or 3.125 x 3.125 squ m resolution cells. The highest simulation resolution that has been attempted is 4098 x 4098 cells. The simulation space has remained the same 3.2 x 3.2 squ km throughout the history of the Noble Ape Simulation. The land function algorithm has remained similar throughout the history of the Noble Ape Simulation. I would like to create additional land-function algorithms. The only requirements are relatively continuous first derivatives.
cognitive simulation improvements
The cognitive simulation component of the Noble Ape Simulation has not developed much since the start of the simulation (June 1996). One of the central themes in the early Noble Ape Simulation was the ability to use the rich external simulation environment - the natural simulation - to test cognitive modelling methods and principles. In recent months, I have thought about implementing a new cognitive simulation method that is analogous to a software compiler. The cognitive process "compiles" external stimuli to produce movement and interaction with the external environment. Whilst the input and output will not exist in a text compiler like interface, it will be possible to put input and output translators on this data to produce structured text descriptions for this information. This will benefit users of the simulation as it will enable "programming" and "debugging".
A LITTLE MONKEY MUSIC
I have pondered if starting the writing process for the next Nation of Noble Ape CD is a little premature with no equipment and a relatively fluid set of ideas. But the British Winter reminds me of the Canberra Winter. The Canberra Winter was always a good time to start writing music. The lack of sunlight gave the right emotion to start assembling words and musical ideas.
I have a substantial collection of digital recordings that have never been used on previous CDs and a number that have been used on previous CDs which I would like to re-weave. I remember the first CD - Isle of the Apes. It started as a DPM Slay-like record and ended up as a satirical critique of modern upper-middle-class "intellectual" music of the time. It needed to be lampooned well and truly. Mind Monkeys and Purfect Beats was only an EP and contained short "tracks" recorded a month after I returned from my first trip to Silicon Valley in December 1998. It took more than six months to get the money together to press and release the CD/CDROM!
So what themes would I like to explore in the new CD? In many ways I feel in exile in the UK - not in exile from the US - but in exile from Australia and the life I once lead. Modern Australia and the Australia I knew of even four or five years ago are very different. Whilst Australia in the 1990s was never ideal - it had substance and an intellectual component which is totally removed from the modern Australia. The Noble Ape Project has been viewed by many as a critique of Australia - monkeys on an island? Trying to escape? I am on another island and still exploring the same themes.
So the Noble Ape - the Guerilla Gorilla - is three years older and a very different creature to the idealistic Noble Ape of Isle of the Apes. Yet similar themes continue through the music. Prior to the Noble Ape Project, I recorded and performed a lot of music. Some of my favourite recordings were with Alex "Gurap" Brooks. The music was considerably more political than Noble Ape recordings. I have received a number of these old recordings since I arrived in the UK and they have inspired me to explore this component of my musical past. So maybe that will come through in the new recordings. It is still early days.
Tom Barbalet, 3 February 2002.