Between technical difficulties, research and recording, I’ve just barely managed to squeeze in some time to do some little chores with the code for my artificial life experiment software. I call my subleq based digital organisms “figures.”
The very next thing is to implement save and restore functions, so I can keep a population and play with it later. I hope to take care of that by the end of the weekend, but no promises.
Once that last little chore is done, I’ll zip up and archive figures0.3. Closing in on the end of this round, my thoughts have been drifting toward the next.
I be willing to bet this is the point where most projects like this founder. Once you’ve managed to get some software to pretend it’s alive, you have to figure out how to figure out what the software is doing. It’s a complicated problem, since you don’t necessarily know everything you’re going to want to know.
As I’ve been implementing the figures, the place they live in, birth, death, and a program to interact with them, I’ve been keeping the problem and my plan to solve it in the back of my mind. While doing the small experiments I’ve done so far, I’ve made note of the sorts of things I’ll want to be able to do. Then there are designs, half-formed in my head, of experiments I want to do in the future, and what I’ll need to be able to implement them, without modifying code in several places, in each of several different files.
I’m going to make a node system. That tells you nothing really—everything in programming could be called a node. If I can pull this off, a programmer should be able to implement an experiment, and gather information specific to it, and only need to write one object to do it. That should allow me to stick on any sort of front end you want, to draw the graphs and pie charts and such. You should be able to make the figures do whatever you need them to do in order to do whatever evolutionary, ecological, or artificial life experiment you want.
From time to time, you might decide that a modification should stay in the system. I’ll eventually want to add a different form of mutation, for example. You’ll be able to attach that change to the system so that it runs transparently, invisibly in the background as part of the system. You can also turn it on or off for other experiments.
I know how I’m going to do it, but it is going to be tedious!
That’s why I think this is when most projects grind to a halt. It’s not that people can’t figure out how to do it; it’s the sheer, mind numbing, repetitive, time consuming dullness of it all.
I’m tempted to implement the nodes part somewhat piecemeal, adding each bit as I need them for experiments. I’ll probably start by removing the code I put in for the ones I’ve done, and making sure the new approach can do the same thing. No matter how I approach it, it will take time, but I’m excited over the capabilities it should add to the system.