One of my current projects is photographing the Marion school district’s facilities. The photographs will ultimately be printed onto fabric panels and hung in the hallway of the Marion school district’s main office. I’ve gone out in a variety of lighting conditions and I think I finally have all the material I need to put the final layout together. I wanted to share some of the photos here, especially because there are a number of photographs that I like but unfortunately I will not have a place for in the final set. We’re hoping to have the panels installed by the end of the summer so I will post some images of the finished product when it is done.
When the moon hits your iPhone
Over memorial day weekend I got the chance to spend some time with a friend’s computerized telescope. I snapped a few pictures with my iPhone through the eye piece. I got a few nice shots of the moon as well an impressive mobile phone pic of Saturn! My photography, however, is no longer limited to a point and shoot. I have recently acquired a Nikon D3200. So far I’m really enjoying it and I’ve already ordered a new 35mm prime lens for it. I’ve primarily been using it for work, taking pictures of some local school facilities to be displayed at the school district office. I will post a few of those pics once they are finalized.
Mix it up
Get in line
I’ve been lucky to be very busy lately. I’m currently wrapping up the design phase for my first building project, hence the lack of updates here. One of the more interesting elements in my current project is a large canopy with an transforming column pattern supporting a long central beam. Before finalizing the pattern, I did some quick sketches using processing. While doing these, a typo resulted in a very interesting effect so I thought I would share it here. As new radial lines are draw from the left corners, their intersections create an interesting curving effect. It’s also interesting to observe how the consistent imperfections in the method the computer uses to draw the lines results in some interesting patterns as well.
Genome Lab
I’ve got a working version of the Color Genome Lab I made set up online. You can check it out by clicking on the image below. I decided to link to it on a separate page because it loads a bit slowly and I didn’t want it making my front page sluggish. I actually finished it on Monday, or at least I thought I had, but I ran into several compatibility issues with processing.js. The biggest problem being that I had used some text for the UI and apparently processing.js does not support text. So I had to do some redesign on it to make it work without text. The only other major problem I had was getting the slider that adjusts the mutation rate to work. In the end I had to add a couple buttons to increase and decrease it. I also had to upgrade the wordpress processing plugin to use the newest version of processing.js which took care of some graphical bugs. So now, 2 days later, I’ve finally got it up and running. Check it out!
Lab Work
I’ve been very busy with work lately, which is a good thing. But I have been working on the genetic color progression project when I can. I finished up the meat of the project today and I’ve been having a lot of fun breeding color progressions! Now I just need to finish the UI, clean up a few things and upload it here so you can do the same.
Colors in motion
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.
The surreal life
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.
Building a Genome
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.
The matrix is everywhere
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.