Summer 2010: v.06 n.01: 2010 CAA Conference Edition, 2010
Generative and Algorithmic Art
One of the most interesting aspects of generative art for me is seeing the emergent patterns that can arise from simple rules. Often with generated work, behavior associated with a higher intelligence is displayed; the patterns that emerge can seem to indicate that someone is orchestrating the results.
Steven Johnson describes this type of pattern in his book “Emergence: The Connected Lives of Ants, Brains, Cities, and Software”:
“In these systems, agents residing on one scale start producing behavior that lies one scale above them: ants create colonies; urbanites create neighborhoods; simple pattern-recognition software learns how to recommend new books. The movement from low-level rules to higher-level sophistication is what we call emergence.” 
Examples: Recent Generative Work
Much of the artwork I create is generative. I develop small applications that then use simple rules to “understand” data and create responses (such as visual images). I frame the applications’ parsing of data and creation of their own responses as explorations of identity, translation, and interpretation.
Two recent examples are entitled bios and yen.
This work really has no understanding of the meaning of words, yet it uses a short biographical piece of text to create a “portrait” of a person. The application applies a set of rules; it evaluates each person based on information collected from their biographical text on the Interactive Arts and Media website. Averaging the length of all the biographies provides a guideline for determining those who are more or less verbose. It also calculates the number of words that are eight characters or longer; these are words that it doesn’t yet “know”, so it is biased towards those who have a large amount of these “interesting” words.
The bias has less to do with actual content as with arbitrary rules. The application does not understand the meaning of words, does not know whether they are spelled correctly, or if they are in fact real words. It merely increases certain visual aspects when it finds words that exceed a specific character length.
The general rules that it follows are:
- The longer the text, the more color and detail should be put into the portrait
- The more words in the bio that are longer than 8 characters, the fancier the font used for the person’s name and title of the image
- The title of the portrait should be one of the longest words in the text
These are simple rules yet when put together they can create something visually complex.
Inspired by a trip I took to Japan in 2008, this series explores order and randomness; random photographs of a Japanese shrine and garden (from Meiji Jingu, Senso-Ji, or Chingodo-Ji in Tokyo, or Heian Jingu in Kyoto) are used as the basis for each iteration. As the work attempts to create a greater verisimilitude, random elements disrupt the process. A balance is achieved as the piece evolves.
There are several applications and integrated development environments (IDEs) that allow fast development of generative projects. Based on my teaching experience, there are three applications that seem particularly effective in the classroom – especially for artists or those without a programming or electronics background. They are all free: Processing, Starlogo, and PD/GEM.
Processing is the main language used in a course I teach called “Generative and Algorithmic Art”. Students who don’t feel particularly knowledgeable in programming can still begin creating interesting works within the first few hours, and those who do have a background in programming investigate the 3rd party libraries and advanced features to create technically impressive work.
“Processing is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool.”
Starlogo is built upon Logo, and there are several variations available (such as OpenStarLogo, StarLogo TNG), as well as other similar programs (like NetLogo). Although the various languages and environments are different, they all allow rapid development of applications that explore emergent behavior.
“StarLogo is a programmable modeling environment for exploring the workings of decentralized systems — systems that are organized without an organizer, coordinated without a coordinator. With StarLogo, you can model (and gain insights into) many real-life phenomena, such as bird flocks, traffic jams, ant colonies, and market economies.” 
Pure Data and Graphics Environment for Multimedia (PD/GEM)
Pure Data allows rapid development using a visual programming environment; objects can be created with “boxes” and lines connecting the boxes allow output from one object to be input in another.
“Pd (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing.” 
Physical Computing Kits
Physical computing kits allow artists to build prototypes quickly, even without prior knowledge of electronics. There is also a substantial online community and many excellent texts to help artists see how physical computing can be used to create generative works. With basic knowledge, iterative design and “modding” of kits allows fairly fast development. Artists can more freely explore physical computing as a medium because the opportunity now exists to “dive in” and get creative results quickly.
Physical Computing Kit Modding Example: The Human Circuit
At Columbia College Chicago we have an intensive week-long class on improving teamwork and leadership called McCarthy Technologies Bootcamp. Students come together on Monday morning and form a team (most or all have not worked together prior to this course) and by Friday at noon they’ve shipped a product that teaches them what they need to know to “ship great products on time.”  The focus of the course is not on technology, although many types of technologies can be used by the students to build their product.
The last time this course was offered in our department  one of the students, Laura Thompson, used a kit called Drawdio as a starting point for part of her team’s final product. The Drawdio is an invention by Jay Silver  and can be purchased as a pre-assembled kit  that costs approximately twenty dollars. The Drawdio uses a graphite pencil wrapped in copper; while holding the pencil you touch the copper forming part of the circuit. As you draw graphite onto a surface and touch it, you complete the circuit and audio is generated from a small speaker.
Having assembled the Drawdio from the instructions Laura shared it with her classmates. The team quickly realized that the circuit could be extended by team members holding hands, and this brought up the practicality of it being something only one person could actively use (draw) with at one time. After brainstorming, the team produced the next iteration: a version that had two laser cut Plexiglas “paddles” with copper running through them, and the board and speaker in the center. In this way, two people would hold the device and as they held hands with others they would complete the circuit.
They developed a game with the device and versioned it. And then played it, and versioned it. By making this team-based game using a modification of an existing kit, they were able to rapidly prototype something that was physical, generative (albeit simple audio), and fun.
1. Steven Johnson. “Emergence: The Connected Lives of Ants, Brains, Cities, and Software” (Scribner, 2002).
4. Wikipedia on Logo Programming Language
7. McCarthy Technologies Bootcamp Manual
8. Instructors: Janell Baxter, David Gerding, and Sandy Gerding
10. ladyada.net/make/drawdio, makershed.com, adafruit.com
1. Banzi, Massimo. Getting Started with Arduino (Make: Projects). Sebastopol, CA: Make: Books, 2009.
2. Fry, Ben. Visualizing Data. Sebastopol, CA: O’Reilly Media, 2008.
3. Igoe, Tom. Making Things Talk: Practical Methods for Connecting Physical Objects. Sebastopol, CA: Make: Books, 2007.
4. Noble, Joshua. Programming Interactivity: A Designer’s Guide to Processing, Arduino, and openFrameworks. Sebastopol, CA: O’Reilly Media, 2009.
5. Pakhchyan, Syuzi. Fashioning Technology: A DIY Intro to Smart Crafting. Sebastopol, CA: Make: Books, 2009.
6. Reas, Casey and Ben Fry. Processing: A Programming Handbook for Visual Designers and Artists.Cambridge, MA: The MIT Press, 2007.
7. Shiffman, Daniel. Learning Processing: A Beginner’s Guide to Programming Images, Animation, and Interaction. Burlington, MA: Morgan Kaufmann Publishers, 2008.