In 2003, after a few months doing mostly music, I gravitated back to graphics programming, which is a much more cerebral activity. When my brain gets tired, I'll do some more music again.
As a programmer, I've always had this lingering fantasy that if I were really smart (or lucky), I could write a really simple program that could, thru a series of self-mutations, evolve into a sentient being. Unfortunately, although I've written millions of lines of code, I've never hit on the right combination.
Ten years ago, a really smart programmer named Karl Sims wrote a really cool program that comes as close as anything I've seen to fulfilling that fantasy. His program evolves virtual creatures and was used to produce a series of demonstration videos of his "blocky" creatures, which you may have seen.
I'm in the early stages of designing a similar kind of system for evolving animated creatures. I wish to get the same kinds of results (goal-directed evolution) as Karl's system, but produce more visually appealing creatures. This is a daunting task, and I'm not as smart as Karl, so I don't expect to get very far.
As a means of getting there, I'm going to make some "breeding" programs for making different things. Trees, screensavers, kaleidoscopes, and so on.
Update: I got as far as making a program which breeds 2d artwork, similar to some work Karl Sims did. The program generates and mutates Lisp-expressions which are used to build dynamic pictures in OpenGL. It works pretty well, but generating dynamic textures using an interpreted Lisp-expression is still a little too slow. I will return to this effort after in a few years, when I have a faster computer.
Also, after having manually generated a lot of algorithmic textures during much of the 90s, I'm finding there aren't as many surprises out there as I was expecting to find - the things I'm mutating tend to look similar to things I've already made by hand - moire patterns, spirals and noise-based textures.
Other related links: