I have been a computer programmer for many years, since the time when a TRS-80 model II computer was a high-end personal computer. I've taken a couple of programming courses over the years, neither of which was really helpful. I'd taken them to have a fun class.
I've produced a great number of programs over the years, mainly for my sole benefit, which have all had only programmer level interfaces, so they wouldn't do much for most others.
I've used the Basic, Turbo Pascal, C++, Java, and the Mathematica language. Basic I've not used in years and might be able to remember the syntax if I wanted to. I could probably program in C++ and Java if I had to. I used the Mathematica language for a few small projects and then moved on. Most of my programming over the years was written in Turbo Pascal. Why you ask? Well, it is the first decently powerful language I learned and I never had much reason to go beyond it for the projects I'd been doing. Most of my recent programming has been done in PHP.
I've learned and used enough different programming languages that I feel comfortable with the prospect of picking up a new language for a specific project. Some of the lab automation hardware I work with comes with a scripting language for running assays. The language turned out to have limited constructs for algorithm design and trials at creating such things as function calls showed the system to be limited to a few dozen variables. When you assigned one too many variables, the system overwrote the first variable you assigned. This limited the utility of the scripting system to very simple processes.
| Restriction Map | |
| CA playground | |
I've been exploring cellular automata systems ever since I came accross the concept. I have a core of turbo pascal
routines that I can use in implementing a variety of CA systems. It has proved flexible and fun to play around with.
I've implemented Wireworld, John Conway's Game of Life, Demon (a cyclic CA), Brain, a lattice gas simulation, and various others. The image on the right is from a system I found. The larger cells that inevitably develop led me to name it 'Foam". Foam doesn't model anything, but looks cool when running at a decently high speed. |
| Wireworld | |
This is a wireworld cellular automaton variant which I designed to allow trivial wirecrosses. This variation has
two wireworld layers and solder spots connecting them. There are 19 cell states (1 background and 18 wire
states) and 19 corresponding rules which define the behavoir of the system. It is much more complex than the
original wireworld with only 4 states.
Each wire element will only turn into an electron head if there are 1 or 2 electron heads in its 8-cell neighborhood, each electron head turns into an electron tail in the next cycle, and each electron tail turns into a wire element in the next cycle. The top image is a screen shot from a run of the CA. The image above contains four circuits : two green, two blue. The apparent jumble in the middle is the green circuit overlaid on the blue circuit. The greenish-grey cells are where the two wires cross with or without electron heads or tails in them. The separate green and blue circuits show that the overlaid circuits are operating indepentently. Each color pair started with the same state and maintains the same state throughout the run. The animation to the right is a wireworld circuit in action. The white cells are the solder connections between the two wire layers. Note how the electron pulses travel from one wire layer to the other at the solder connections, but not anywhere else. You can see several examples of standard wireworld objects on my wireworld page. None of these objects take advantage of the dual layers of my wireworld extension, but will all work in it. I keep thinking about writing up more extensive documentation on this system. Perhaps I will at some point do this. |
| Gravity | |
A gravitational dynamics simulation. Simple, but effective and even somewhat pretty. Here is a screen-shot from a
variation of the program that shows the tracks of various objects.
|
| Artificial Life | |
This program was based off of the program "Palmiter's Bugs" described in the Scientific American column "Mathmatical Recreations" from several years ago. This
screen-shot shows the data results from several runs of the simulation with the same initial settings.
The program displays population dynamics and evolution. Depending on the initial settings, basically the reproductive and genetic characteristics of the "bugs", the data from a run of the program shows population crashes, dynamic equilibrium, and other effects. |
| E-fish | |
A couple of years before El-fish was available where I lived, I came across an article describing it. I thought it
was a nifty idea and wrote my own program to produce electronic fish. The fish are not photo-realistically rendered
as in El-fish, they are two-dimensional and not very colorful. I think it's a fun little program though. Here's a
couple of examples to show what I pulled off on an intel-8086 many years ago.
|


I've been exploring cellular automata systems ever since I came accross the concept. I have a core of turbo pascal
routines that I can use in implementing a variety of CA systems. It has proved flexible and fun to play around with.
This is a wireworld cellular automaton variant which I designed to allow trivial wirecrosses. This variation has
two wireworld layers and solder spots connecting them.
There are 19 cell states (1 background and 18 wire
states) and 19 corresponding rules which define the behavoir of the system. It is much more complex than the
original wireworld with only 4 states.
A gravitational dynamics simulation. Simple, but effective and even somewhat pretty. Here is a screen-shot from a
variation of the program that shows the tracks of various objects.

A couple of years before El-fish was available where I lived, I came across an article describing it. I thought it
was a nifty idea and wrote my own program to produce electronic fish. The fish are not photo-realistically rendered
as in El-fish, they are two-dimensional and not very colorful. I think it's a fun little program though. Here's a
couple of examples to show what I pulled off on an intel-8086 many years ago.