I’ve compiled a couple videos showing the CA color progression script in action. They compressed very nicely, they went from upwards of 3 gigs to around 15 megs and they still look pretty good. The first video is seeded with a single white cell at the center. The second one is seeded with 10 randomly colored cells placed randomly in the field.
Last week, during a discussion with my friend Steven Kuhn, I found myself once again talking about one of my favorite subjects, Cellular Automata. During this conversation it occurred to me that it might be interesting to bring the meandering color progression algorithm into an CA system. As usual, the results are not exactly what I expected. I ran these at a very large scale, each image is comprised of 640,000 cellular automata, each represented as a single pixel. The first few images were the result of a single red cell at either the center or edge of the field. The later images are the result of multiple cells starting with different colors. I’m not sure whether I prefer the uniform smooth ones or the fractured chaotic ones better, but they’re all pretty trippy.
After taking my color progression script as far as I thought it could go with a random progression, it was time find a more sophisticated approach. In the original script the color would change from one block to the next by randomly selecting the red, green or blue value and then changing it by a random amount. This meant that while the color meanders randomly, it maintains a similarity to the blocks next to them because two of their three RGB values will always match. In the non-random progression I’ve started, I’m instead changing the three color values at the same time, but at different rates. This means that while the red value will change with a constant pattern, the overlapping of all three patterns should obfuscate the patterns, as long as the three patterns do not have similar periods.
The change in each color value has five parameters. The first parameter is binary, yes or no, is the color currently changing? 0 means no and 1 means yes. The second parameter is the initial value of the color, this ranges from 0 to 255. The third parameter is the amount that will be added to the color value when it changes. The fourth value is the number of consecutive times the color will change, while the fifth value is the number of consecutive times the color will not change. Since all three colors have these five parameters, each color progression can be described by a series of 15 numbers. Given 1 digit for the first parameter, 3 for the second and 2 each for the third, fourth and fifth parameters, you are left with a 30 digit number. This number holds all the information needed to build any one of the color progressions the system is capable of, in essence it is a genome.
I’ve generated a series of progressions given random genomes. Some of them are interesting, and others, not so much. I need to find a way to determine which codes produce the best results. The reason I went through the trouble of designing the progressions around a genome is so that I could use a genetic algorithm to find the most interesting patterns. I’ve never written a genetic algorithm script before and it’s something I’ve been wanting to try. The real challenge in doing this is establishing a fitness test. How do I teach the computer to differentiate between an interesting progression and an ugly one? My plan for now is not to try, since it’s practically impossible to teach a computer to evaluate aesthetics. Instead I want to set up a ‘Human in the Loop’ algorithm that presents a user with a series of progressions and asks them to select the ones they find most interesting, using this as a fitness test to drive the genetic algorithm. It would really be nice if I could it get set up online so anyone could try it out.
I took the script I wrote last week and wrapped it in a function I can call with different parameters. I’ve started generating some matrices to analyze the ranges of the different parameters and their effects. The first parameter I’ve looked at is the maximum bar length, which is on the Y axis, increasing as you move down the matrix. The second parameter I looked at is the rate at which the color changes between each bar. This is on the X axis and increases as you move to the left of the matrix. I also changed the start color from red to black to make the differences in the results more extreme. However the results are still a bit muddied by the fact that the color change is done randomly. Once I finish adding all the variables in the algorithm to the function’s parameters, I need to look at some non-random methods for the color progression.
I’ve been doing some sketches dealing with gradual color progression. All these sketches have bars of color that gradually increase in length, wrapping if they meet the edge of the drawing space. Once the bars reach a set length, the next bar will start at the original length and start the progression again. The colors begin as pure Red every time and vary in the progressions by a random variation in one of its Red, Green or Blue values. In the second set I also inverted the color in addition to the gradual progression in attempt to emphasize the bars more. It’s a very simple sketch with a surprising number of variables. The next thing I will likely do is look more closely at rules such as start color, minimum and maximum bar length, amount of color variation etc. I will probably generate some matrices to see which rules produce the best results and then look at some non-static rule sets.
What’s in a name? It’s a question I’ve been thinking about a lot. More specifically, what’s in my name? Not much to be honest. Jason Smith must be among the most common names in the United States. I have been confused more than once by seeing my name on samples for things like business cards or credit cards. John Doe. Insert name here. Generic. That’s me. It’s not that I dislike my name, but as I’ve worked to establish an identity for myself and my work I’ve often wondered if it’s up to snuff. It’s not a name I envision sitting alongside Bjarke Ingels, Werner Herzog or Witold Rybczynski. Not that I have any ambition to become famous, but still it’s better to be somebody than nobody.
It’s all about branding when it comes down to it. When I was preparing to launch this website, I spent days wondering what name to use. There are different schools of thought. Do you use your real name and try to build your online identity around that? Or do you come up with a zoomy esoteric name to represent you? In my case I felt that this wasn’t much of a choice. I threw a lot of names around at the time. Most of them felt either too vague or too specific. This was particularly difficult because at the time I had no idea where I was going to land career wise. So I was apprehensive about committing to, say, an architecture themed name in case I ended up not working in architecture.
As for the domain, I imagine it goes without saying that jasonsmith.com was not available. I ultimately settled on jasonsmitharch.com, though not with any great conviction. I decided that it was nonspecific enough that I could go in any direction I needed with my site down the road. I threw together what was intended to be a temporary title banner with the name “JSarch” on it, which as of writing this is still the only title banner I’ve made. It’s a pretty terrible name, but I’m still waiting for inspiration to strike and give me a “real” name I can use. I have essentially just differed the decision for now. But I know quite well the way temporary measures can linger into permanence.