Inspiration for the potential sociality of a network of computers

All Eyes On You
“All Eyes On You” by Britzpetermann are bunch of varied sized eyes that follow the passers-by. The team used a high quality projector and semi-matt foil to project the eyes on the window. They are rendered by a WebGL frontend using a shader sphere effect. The detection is performed by OpenFrameworks and the Kinect.


Curious iPhones
Like Audience (http://www.creativeapplications.net/openframeworks/audience-openframeworks/). Two iPhones on servo motors which can swivel to follow a user. The arduino receives information via OSC sent by a custom iOS5 app. Uses CIDetector for face detection.


Belt buckles suspended from the ceiling which rotate to follow the movements of visitors


Humorous take on “watching the viewer” type installations: open palms on a video screen follow the visitor’s movements


(In)security Camera
Surveillance camera that can track, zoom and follow subjects. The camera is however, a little insecure. Easily startled by sudden movements, it is shy around strangers and tends to avoid direct eye contact. This reversal of the relationship between the surveillance system and its subjects gives the machine an element of human personality and fallibility that is by turns endearing, tragic, and slightly disturbing.
Watch the video, great demonstration of a robotic system that emits a kind of “uninterested” response


The Quantum Parallelograph
Uses a php script to pull information about you from google. It’s a (dubious) look at quantum theory and parallel universes, but the interesting thing here is the printout, which is a little printer attached to an Arduino. Hanley brought this up, it could be an interesting interaction between the computers and users.


Tutorial: How to build a Robotic Head that Follows People’s Faces

I’m assuming if you want to build a robotic head, you’ll have some experience using an arduino, servos, and some other language that can interface between a webcam and the arduino. I used processing as my interface between the arduino and my webcam. I’m also using the OpenCV library for processing.

 I’ll describe the overarching structure behind the code to give the illusion that a robot is following a person’s face. At a high level, there are only a few steps to have a webcam follow a person’s face:

  1. Detect face. Take a look at some OpenCV examples on processing’s website.

  2. Grab X-Y pixel coordinates of the face.

  3. Calculate the pixel distance between the center of the face and center of the webcam’s view. In other words, you’re going to take the images from the webcam, and calculate the distance between the center of that image and the center of the face.

  4. Write an algorithm that minimizes the distance between the webcam’s center and the face’s center.

    1. This algorithm will also control the servos.

You can download my processing code here and my arduino code is based on the code found here from letsmakerobots.


The Desire of Codes. A nightmarish interactive work.
The “individual” visitor in a double role as a subject of expression and observation.
A large number of devices resembling tentacles with built-in small cameras are placed across a huge wall (Part 1), while six robotic “search arms” equipped with cameras and projectors are suspended from the ceiling (Part 2). Each device senses with insect-like wriggling movements the positions and movements of visitors, and turns toward detected persons in order to observe their actions. In addition, a giant round-shaped screen that looks like an insect’s compound eye is installed in the back of the exhibition space (Part 3). Visual data transmitted from each camera, along with footage recorded by surveillance cameras installed at various places around the world, are stored in a central database, and ultimately projected in complex images mixing elements of past and present, the venue itself and points around the globe, onto the screen. The compound eye visualizes a new reality in which fragmentary aspects of space and time are recombined, while the visitor’s position as a subject of expression and surveillance at once indicates the new appearances of human corporeality and desire.
90 devices are exhaustively distributed across a wall. As soon as a visitor enters the area in front of the wall, the devices’ heads start blinking, and all together they move in the respective visitor’s direction like an insect’s tentacles. Highly sensitive cameras and microphones able to detect motion and sound beyond human perception record the visitor’s action.
Like facets of an insect’s compound eye, countless hexagonal parts make up one large screen.
* Soundscape
Superdirective microphones installed at several points in the exhibition hall record every sound occurring in the space. Voices and other noises generated by visitors, as well as the artworks’ own mechanical sounds, mix on a recombined time axis to create the soundtrack for this installation. The behaviors and states of all of the three parts’ respective elements trigger all previously recorded sound data accumulated up to the present point, and these components keep forming a constantly updated sonic environment.


Technological Dream Series: No. 1, Robots
One day, in the future, robots will do everything for us. It’s a dream that refuses to go away. Over the coming years, robots are destined to play a significant part in our daily lives — not as super smart, functional machines, nor as pseudo life forms, but as technological cohabitants. But how will we interact with them? What new interdependencies and relationships might emerge in relation to different levels of robot intelligence and capability? These objects are meant to spark a discussion about how we’d like our robots to relate to us: subservient, intimate, dependent, equal?

Robot 1: This one is very independent. It lives in its own world getting on with its work. We don’t really need to know what it does as long as it does it well. It could, for instance, be running the computers that manage our home. It has one quirk; it needs to avoid strong electromagnetic fields as these might cause it to malfunction. Every time a TV or radio is switched on, or a mobile phone is activated it moves itself to the electromagnetically quietest part of the room. As it is ring shaped, the owner could, if they liked, place their chair in its centre, or stand there and enjoy the fact that this is a good space to be in.

Robot 2: In the future products/robots might not be designed for specific tasks or jobs. Instead they might be given jobs based on behaviours and qualities that emerge over time. This robot is very nervous, so nervous in fact, that as soon as someone enters a room it turns to face them and analyses them with its many eyes. If the person approaches too close it becomes extremely agitated and even hysterical. Home security makes good use of this robot’s neurosis.

Robot 3: More and more of our data, even our most personal and secret information, will be stored on digital databases. How do we ensure that only we can access it? This robot is a sentinel, it uses retinal scanning technology to decide who accesses our data. In films iris scanning is always based on a quick glance. This robot demands that you stare into its eyes for a long time, it needs to be sure it is you.

Robot 4: This one is very needy. Although extremely smart it is trapped in an underdeveloped body and depends on its owner to move it about. Neediness is designed into very smart products to maintain a feeling of control. Originally, manufacturers would have made robots speak human languages, but over time they will evolve their own language. You can still hear human traces in its voice.
https://vimeo.com/2611597

Current summary of projected installation to be presented at The Rocks Pop-up

The secret lives of computer systems
A disparate network of everyday computer systems (phones, desktops, tablets, a diy arduino robot) enjoy casual interactions with each other such as conversation (via text-to-speech google translate api) and computer gaming. As a viewer approaches, the computers hide their intelligence; interactions stop, and the system glares at the viewer through its many representations of sight: a robot hand; a swivelling mobile screen & laptop; a webcam-as-eyeball, placing the viewer on the screen. The longer a viewer stays, the more agitated the computers become. Once all viewers move a distance away or turn their backs, the interaction between the computers resumes — it is clear that humans are not welcome in this space.

A conversation with myself, formulating a concept of a secret life for a network of computers

…The network of computers would be playing a game, like they would be sort of crowded around a type of abstract game that they’re playing, maybe on an ipad laid flat on the table, and it appears that you could interact and play the game with them, but they don’t really want you to.
how do they show this?
Well, they could shut the game down as you approach.
but, wouldn’t then, if there’s a bunch of people in the space, the game would kind of never be shown, so its a bit boring?
Yes but it would be quite funny if you walk away; and a lot of other people happen to walk away also, and then it starts up again, and you go what? And you try to go back, and they shut it down again. So I guess it would have to be really obvious when they shut it down, and put it back up. Like lots of loud visuals, and even noises.
what kind of noises?
Maybe a video game jingle, like something from a sonic game. To further drive the fact that its definitely some sort of fun interactive game they’re playing with each other.
but this still doesn’t really solve the problem, say of opening night, where lots of people are around the computers for a long amount of time, and the game is simply never seen by anyone. How are you going to deal with that?
Well ok. Maybe if you approach, its like a boss key. The secret lives of computer systems. They’re playing their own game. When you turn up, they switch back to their intended purposes.
What is their “intended purposes”?
You can use them normally I guess. You can use google on them, or maybe a custom program that the users can play with, some simple interactive sketch, but its not nearly as interesting as the game they’re playing when no ones looking. Its like a diversion.
Yeah but that’s a bit of a stretch for the viewers of the installation to understand.
Hmmm. Maybe this is where the other “state” comes in that Dale talks about. The computers get agitated and they do their best to sort of get you to leave. And maybe the playful interaction between viewer and computer network is derived from here. So the computers basically shut down the game and are left looking kind of agitated and boring. And interactions here are where we can come up with lots of different behaviours. For example, one computer screen could revert to archetypes of what we expect when we approach a computer: the desktop, or a google search. But if you try to interact with its keyboard, the screen simply shuts off. That’s one way of knowing you’re not wanted. And then when you walk away, they all turn on again, really animated, and they resume their game.
And what kind of “game” would the computers be playing when no ones looking?
I was thinking they’d all sort of be in a circle surrounding a screen on the table, like an iPad, and they’re playing some sort of slot-car racing game.
Why a slot-car racing game? Surely it could be something more digitally grounded. A game that only computers would play.
Yeah I guess. The idea of a slot-car game is how I came about this idea in the first place, but doesn’t mean they should be playing one. It should be obvious that it’s some sort of game, a competition they’re playing, but it doesn’t have to be clear at all or grounded to any type of game we’re used to. Just some sort of individual competition going on, like light trails racing around, with some getting in front of others occasionally.

Algo-fashions, chains of knowledge in creative communities and Jonathan McCabe, fountain of ethereal knowledge

For the past couple of days I have been working on my own personal version of an elementary 1D cellular automata Processing sketch, which started out as both an exercise in curiosity and a challenge to find out if I really do understand the elementary level of cellular automata, based on what I have been reading[1]. Details into my exploration such as the creative steps I took and knowledge gaps I had to cross, as well as a discussion about why I chose cellular automata as my first complex system to explore in a creative sense is forthcoming in the next blog post.

Initial elementary 1D cellular automata.

But what I will begin discussing here is one of the cultural reasons why a model of a complex system is worth the time and effort for a creative coder to explore. Judson Rosebush expounds the unique position of computer art as a logical successor to conceptual or process art in her Proceduralist Manifesto:

In terms of art movements, proceduralism represents a natural, historical evolution from conceptual process art, with the advancement that it actually scripts and enacts concepts, producing tangible personal property as the result. The results of proceduralism include … abstractions such as fractals; … realistic landscapes; and surrealistic transformations such as Carl Sims’ Waterfall that mix realism with novel procedural approaches.

—The Proceduralist Manifesto, Judson Rosebush [2]

One way of understanding why complex systems and algorithms such as Voronoi diagrams are a trend in digital art is looking at what Rosebush describes as “this mix of realism with novel procedural approaches”. Complex systems are famously effective at modelling phenomena found in nature such as ant colonies, human economies and social structures, climate, nervous systems, cells and living things (including human beings), as well as telecommunication infrastructure [3]. Art has a long history of gaining inspiration from nature [4] and attempting to mimic its beauty on a canvas—this tradition carries on into the realm of digital art, where coders turn to scientific knowledge to model naturalistic processes, either as aesthetic inspiration, or for the aesthetics of the complex behaviour itself. Aesthetic inspiration can be viewed as the ‘creative’ side of the creative coder who utilises these systems: a great example is Jon McCabe’s cyclic symmetric multi-scale Turing patterns [5] that create strikingly affecting visuals, which he generates by humbly describing thus: “a simple model is derived from Turing’s idea, then elaborated and applied in a series of mathematical artworks”.

Jonathan McCabe’s Cyclic Symmetric Mutli-Scale Turing Patterns

Another reason why these systems are so alluring to creative coders is due to the idea of emergence, which is a topic so interesting, varied and broad (and I am still gathering research) that I will also leave this out for further discussion another time.

Unless a complex behaviour has never been modelled mathematically before, we will consider coding for the aesthetics of the complex behaviour itself as an entry point into the world of computational creativity. For generic code examples of many complex systems such as cellular automata, the mandelbrot set, reaction-diffusion systems etc already exist, and are even included as part of programming IDE’s, such as Processing, as well as having chapters devoted to their creation in numerous learn to code creatively books, which I will cover in more detail in a forthcoming post. According to Marius Watz, to use these types of algorithms effectively in a creative endeavour you have to “roll your own” [6]. He goes on:

“Not as in come up with your own Voronoi alternative, but as in make sure you add your own creative signature to the work. Modify, remix and modulate. Check your work for algorithmic laziness. It’s oh-so-very tempting but it never pays off. If any CS student on the planet could walk into a lab and code the exact same result in an hour you’re just not trying hard enough”.

Jesse Louis-Rosenberg from Nervous System more or less agrees with Watz:

“Voronoi/Delaunay triangulation is probably the most powerful tool in computational geometry. It is at the heart of a ton of really important algorithms. To me, it’s massive potential in science and engineering indicates that there are also infinite creative ways to extend and use this tool. That doesn’t mean you should generate a bunch of random points, Voronoi that shit, and call it your design. It means you should study these geometric objects, understand their properties, and use that to accomplish things you wouldn’t otherwise be able to.” [7]

“Voronoi’ing that shit”, aka using a packaged algorithm as is, does not qualify in Louis-Rosenberg’s eyes as a creative endeavour. Mitchell Whitelaw also has this to say on the matter of ‘algo-fashions‘ :

” So algo-fashions will come and go, but for me the most rewarding work is always a result of deep engagement with the generative system – taking a system and hacking it into something else entirely, or deriving new systems.” [8]

It is important to note that all three of these generative artists come from a Computer Science background. They are well-versed in code optimisation, the intricacies of mathematical notation and academic paper deciphering, would have solid intuitions about what is and is not possible computationally, and would generally have a pretty good clue of whats going on in any given algorithm (this last point however is a pretty broad and unconvincing assumption by me, and should be further explored).

Whitelaw has more to say about algorithm misuse by creative coders:

Erwin Driessens and Maria Verstappen for example have a long track record of inventing algorithms that you can’t just grab off the shelf – their Breed and Ima Traveller works are sort of mutant cellular automata – but really they don’t fit any clear template. Nervous System also implement new systems: they go to the scientific literature in biology, or even run their own physical trials, and implement models from scratch. There aren’t many designers currently with the ability to do that. Jonathan McCabe is another good example of this; his multi-scale Turing patterns are a genius hack of a very old algorithm.”

Driessens & Verstappen’s E-volved Cultures, a software presentation in which an artificial landscape grows in real time.

And so we return to Jonathan McCabe and his gorgeous multi-scale Turing patterns. In his short paper for the 2010 Bridges conference ( a conference which “brings together practicing mathematicians, scientists, artists, educators, musicians, writers, computer scientists, sculptors, … in a lively atmosphere of exchange and mutual encouragement”; take note of the interdisciplinary approach to artistic work), McCabe describes his implementation of Turing’s diffusion model in pleasantly simple english:

“Diffusion is simulated by taking an average of the values of a certain area around each element, a smaller area for the activator and a larger area for the inhibitor. A simple rule is iteratively applied to all of the array elements for (usually) hundreds of time steps: If the average concentration in the smaller area is greater than the average concentration in the larger area, increase the value by a small amount, otherwise decrease the value by a small amount.”

Why we are returning here is because McCabe then continues to describe his artistic process of going beyond the standard algorithm—he “rolls his own”. After his generating of the characteristic Turing patterns, McCabe states that Turing patterns produce structure at only one scale “which is rare in natural processes”, and simply elaborates by adding together multiple copies of the simple model, while having them operate simultaneously at different scales. Nature here is again a clear driver of form.

McCabe then casually describes his further work of combining patterns of multiple scales to achieve his multi-scale effect. He points out that the resulting images resemble an electron microscope image, but interestingly adds that the 3D shading effect present “is an accident of the purely 2D algorithm”. Perhaps my earlier assumption that “expert coders have a pretty good clue of whats going on in any given algorithm” does indeed deserve an intensive inquiry.

Frederik Vanhoutte (W:Blut), creator of the Hemesh library for Processing, gushed about the genius of McCabe’s work in a blog post back in 2009: “an entire new vista of complexity has opened up for me” [9] swoons Vanhoutte, stating that he would definitely begin working on code to explore this “new territory”. Two years later, and Vanhoutte releases his Processing sketch based off McCabe’s work for all to play with.

But Vanhoutte didn’t take two years to code his own implementation of a ‘McCabism’. In fact, it only took him a few hours—after he had some guidance. Before the guidance, Vanhoutte describes his initial attempts at a McCabism:

“[Jonathan McCabe's] multi-scale Turing patterns. They instantly intrigued me. And although I could recreate the gist of his images, I could never overcome the practical problems. In fact, the code proved hazardous to the elderly, infants and pregnant women. I thought my lack of numerical skill in tackling the huge equations I ran into was the problem. It was ponderously slow and I suspected Jonathan had a secret lair packed with supercomputers.”

The guidance came in two ways: first in the form of McCabe’s paper, which showed Vanhoutte that the direction he had initially tried taking to recreate McCabe’s work from nothing was: “[more than] barking up the wrong tree; I was in the wrong forest, on the wrong continent, on the wrong planet”. The second form was of guidance was from Jason Rampe, Computer Scientist geek extraordinaire and creator of the unassumingly fantastic Visions of Chaos program [10]. On his Softology blog, Rampe explains how he was able to implement the McCabism and provides just enough pseudocode and tips for anyone to implement—at least, enough information for a programmer of Rampe’s skill level to implement. Armed with this knowledge, Rampe was able to implement his own McCabism as a Processing sketch in only a few hours, which he has released into the wild and asks for anyone reading to “capture it, dissect it, change it, mutate it, and above all attribute it to Jonathan McCabe.”

And that’s exactly what some readers did. From Rampe post, Kyle McDonald ported the sketch to openFrameworks, ‘esimov’ implemented a version in AS3, and all along the chain, proof of inspiration to others is left behind in the comment stream:

Rampe mentions that McCabe explained his process in more detail so that he was able to implement the algorithms. An interesting process is going on here regarding chains of knowledge and flow of information as well as inspiration that happens in these creative coding communities. If perhaps there was an integrated way of having direct access to these fountains of ethereal knowledge such as Jonathan McCabe, within our IDE workspace, then these creative waves of computational inspiration involving exciting new explorations of non-standard algorithms could be made more visible, instead of happening on the quiet back channels of flickr image comments and mini blog posts. A creative coding social network integrated universally into IDE’s that carries algorithm “shots” like dribbble and has separate channels for help and further code-building: forums vs code branching perhaps, to facilitate coders looking for help (‘beginners’), coders looking for inspiration (designers, creative coders), and coders who are willing to help (‘experts’).

As an example that might be exposing an unmet need for an integrated inspiration/help system built into an IDE platform is Rampe’s blog post Extending Multi-Scale Turing Patterns, which he wrote a year after his initial post outlining how he implemented his McCabism.

This post was inspired by a comment from Jonathan McCabe on one of his pictures here. What happens when you add a fluid simulator on top of Multi-Scale Turing Patterns?

The inspiration for further creative activity was brought about by a single comment (almost a joke) by McCabe himself, on one of his photos in a set of 131. If these backchannels of inspiration were more exposed, perhaps made explicit, then the sharing of knowledge in these communites becomes more exposed, more inclusive. To be built into an IDE may ease the problem of program behaviour opacity, especially for programming beginners.

Footnotes    (↵ returns to text)
  1. I have skimmed over areas of the following books: The global dynamics of cellular automata : an atlas of basin of attraction fields of one-dimensional cellular automata by Andrew Wuensche, Mike Lesser; Cellular automata and complex systems, edited by Eric Goles and Servet Martinez. The recursive universe : cosmic complexity and the limits of scientific knowledge by William Poundstone (fantastic!);  Understanding nonlinear dynamics by Daniel Kaplan and Leon Glass. Concepts of modern mathematics by Ian Stewart. And of course, A New Kind of Science by Stephen Wolfram. Not to mention countless internet pages such as The Wolfram Mathworld pages devoted to CA, and the wonderfully chaotic philosophy homepage of Jaap Bax.
  2. The Proceduralist Manifesto, Judson Rosebush
  3. http://en.wikipedia.org/wiki/Complex_system
  4. See: Aesthetics and the Environment: The Appreciation of Nature, Art and Architecture, Allen Carlson
  5. http://www.jonathanmccabe.com/Cyclic_Symmetric_Multi-Scale_Turing_Patterns.pdf
  6. Watz has since taken down his rant-piece ‘The Algorithm Thought Police’ from his blog, however the internet, like an elephant, never forgets, and the article lives on through a tumblr reblog on math geek with no social life.
  7. Re: The Algorithm Thought Police, a blog post by Jesse Louis-Rosenberg http://n-e-r-v-o-u-s.com/blog/?p=2262
  8. An Interview with Paul Prudence (For Neural 40) http://teemingvoid.blogspot.com.au/2012/01/interview-with-paul-prudence-for-neural.html
  9. Turing instability: the work of Jonathan McCabe http://www.wblut.com/2009/03/09/turing-instability/
  10. Visions of Chaos is “the most complete all in one application dealing with Chaos Theory available.” http://www.softology.com.au/voc.htm

Cellular Automata

As a preliminary to my current interest in generative systems, or perhaps a catalyst to, I present here a Processing sketch of a 1D Cellular Automata system that enforces a simple transforming and mirroring effect to achieve “a higher form of Sublimity” as described by subtiv, the original creator of this system which he coded in OpenFrameworks. I have simply ported the project over to Processing, and learnt a few things about Cellular Automata along the way.

1D Cellular Automatons are most interesting when the pattern that emerges is one of unexpected complication. This interplay between structure and randomness is what the term complexity is referring to in complex systems. global structures can seemingly emerge, analogous to self-organising systems in nature. These global structures arise from only local interactions between individual agents with extremely limited capacities of intelligence — in CA, the intelligence I’m referring to is the assigned ruleset. In a colony of ants, this intelligence would be the coordination of tasks such as nursing, repairing or foraging at a nest. Stigmergy questions aside, one can say these globally organised structures result from localised interactions between individual agents.

In Cellular Automatons, the cell states are rigidly defined by a ruleset which determines the state of the cell in the next generation by analysing its neighbouring cells in the current generation. Because the ruleset is so rigidly defined, the emerging behaviour, sometimes resembling a coherent structure, sometimes of a chaotic nature, can be seen as surprising,  considering the humble initial conditions and rules from which the pattern emerged. Another analogy can be made to the self-organisation of ant colonies: the behavioural repertory of ants is limited to only ten to forty elementary behaviours, yet anthill organisation is complex [1].

In 2D Cellular Automatons, most famously Conway’s Game of Life, simple rulesets can generate a vast array of complex global patterns, the most well-known being the glider (a spaceship), and the pulsar (an oscillator). Thousands of complex patterns have been documented for GOL, and still show little signs of slowing down — in 2010, Andrew J. Wade created the first replicating creature in a life simulator, and had his discovery published in New Scientist. It replicates after 34 million generations. A fellow GOL enthusiast, Adam Goucher, says ”this is arguably the single most impressive and important pattern ever devised.”

Still lifes
Block Game of life block with border.svg
Beehive Game of life beehive.svg
Loaf Game of life loaf.svg
Boat Game of life boat.svg
Oscillators
Blinker (period 2) Game of life blinker.gif
Toad (period 2) Game of life toad.gif
Beacon (period 2) Game of life beacon.gif
Pulsar (period 3) Game of life pulsar.gif
Spaceships
Glider Game of life animated glider.gif
Lightweight spaceship (LWSS) Game of life animated LWSS.gif

Conway’s game of life gun pattern with toroidal array

The 6,366,548,773,467,669,985,195,496,000th (6 octillionth) generation of a Turing machine in Conway’s Game of Life

The wikipedia article on Conway’s Game of Life has this to say about the emergent patterns: “The patterns that emerge from the simple rules may be considered a form of beauty”[2]. Beauty yes, in the eyes of an observer. But an interesting question arises here. What exactly is “emerging” here, and why is it interesting? Is it even interesting? If the apparent complexity is formed from discrete reapplying of a basic ruleset upon generations, then the outcome is deterministic, and if the outcome is deterministic, how can it be complex, interesting, surprising? Are these really patterns of global coherence, of self-organising structures that resemble organisms? Or is this collective organisational phenomena not anymore interesting than the most boring of obvious outcomes from a defined ruleset, because all outcomes can be traced back to their initial conditions? If that’s the case, how can we still be surprised by generative art?

Jon McCormack in his work Art, Emergence and the Computational Sublime asks: “How do we implicitly recognise ‘interesting’ patterns? What is the difference between emergent and non-emergent patterns?” In defining the meaning of emergence in a generative art context, McCormack recognises the influence of the observer in qualifying whether “emergence” has occurred, and quotes Stephanie Forrest in his work of emergent computation:

The emergent phenomena of interest are often understood implicitly rather than explicitly. Currently, many emergent computations are interpreted by the perceptual system of the person running the experiment.[3]

McCormack also highlights another intruiging idea about emergence in generative art:

If we rely on recognition of patterns to justify emergence in systems, could there be patterns that we as observers cannot recognise, yet may still be “interesting” in studying emergent phenomena?[4]

And in the same paper still, McCormack tackles my concerns regarding the determinism inherent to these systems with this quote by Claus Emmeche, et.al:

if you list all known chemical regularities and laws, it would be impossible for you, on the basis of this list and without any knowledge of the biological cell, to select those entities, regularities and types of behaviour which are specific to the biological cell.”[5]

McCormack concludes that even though the system is deterministic, emergence can only be recognised after it has occurred, since it cannot be predicted in principle.

But what exactly are we referring to when we talk of ‘emergent phenomena’? In Conway’s Game of Life, gliders (the simplest moving pattern in the game) appear to display self-moving behaviour but do not actually function in this way [6]. The pattern simply emerges from the ruleset and local interactions, which we are able to see visually from our encompassing high-level view. It seems then, that emergence of interesting phenomena in the form of patterns (whether they be visual or behavioural) that encompass novelty, surprise, and spontaneity, are of the greatest interest to creative coders interested in generative systems.

Where was I? Oh yes, the 1D Cellular Automata sketch. You can find it here on my github.

Footnotes    (↵ returns to text)
  1. Social insects and self-organization, Jean-Philippe Rennard, http://www.rennard.org/alife/english/antstxt/antstxtgb.html. As an aside, researchers have created a novel ant clustering algorithm based on Cellular Automata inspired by ant colonies. http://www.cse.wustl.edu/~ychen/public/IAT.pdf 
  2. Wikipedia: Conway’s Game of Life
  3. Emergent Computation: Self-Organizing, Collective, and Cooperative Phenomena in Natural and Artificial Computing Networks, In Emergent Computation. Stephanie Forrest
  4. Art, Emergence and the Computational Sublime, Jon McCormack
  5. The Garden in the Machine, Claus Emmeche
  6. Studying a Self-Sustainable System by making a Mind Time Machine, Takashi Ikegami

Rhizomes and Monsters

This is a blog documenting my exploration of generative/complex/emergent systems.

It must be noted straight away that I will be mixing these terminologies often. Is there a distinct definition for each one? As in, does a generative system differ to a complex system, which differs again from an emergent system? What about an evolutionary system, is this different again? When I say complex, am I talking about chaotic systems and/or random systems? And lets not forget about A-Life & genetic systems.

For some of these questions I know the answer and for some I do not. This is one gap (out of many gaps) of knowledge my exploration is hoping to fill.

Exploration of generative systems is a natural forward movement in the curiosity of any designer or programmer interested in the creative side of coding, after they have explored in depth visual outputs created mostly from procedural drawing techniques.


Initial sketches of mine when beginning “Design Programming” using Processing.


One of Amnon Owed’s first sketches posted on his blog exploring his own experiments in Processing. Classic primitive shapes moving around at random.


One of my first sketches involving interaction with the mouse. Click to make rings — Quite serene. Play with while listening to this. Processing.js is somehow screwing up the mouseY coord.

What sets generative art apart from a more procedural design approach is the construction of behaviour as opposed to a static visual output. Philip Galanter says this:

 ”Generative art refers to any art practice where the artist uses a system, such as a set of natural language rules, a computer program, a machine, or other procedural invention, which is set into motion with some degree of autonomy contributing to or resulting in a completed work of art.”[1]

Many interesting artworks, particularly those within the digital art domain, are concerned with the interplay between chaos and disorder. Generative systems, when aesthetically pleasing and novel to a human being, can produce emergent behaviours, where simple agents in a multiplicity seemingly interact in a way that suggests intelligence through self-organisation.


Carsten Nicolai and his interest in natural self-organisation. In this case, physical tape-loops

The keyword here however is “suggests”. Simple agents in a generative system have restricted behaviour rules, and thus have no form of intelligence on their own. They cannot individually have an understanding of the entire system and act accordingly, but rather interact solely in their localised domain. In a complicated biological system such as an ant colony, this emergent behaviour can be considered as “distributed problem solving” [2]. In a cellular automaton system such as Conway’s Game of Life, “glider” and oscillator behaviour can emerge. I think it’s also important to point out that this emergent behaviour in a CA system is emergent only by human intuition: there are no mysterious external powers at play and no inherit randomness either — it is a strictly deterministic system.

Glider structures being created from a “glider gun”, in Conway’s Game of Life.

This blog will also be interspersed with thoughts on the concept of multiplicity, a major theme of my final studio for the Bachelor of Design Computing at The University of Sydney.

§

My first steps to getting a clearer understanding of generative systems are as follows:

-Review learn to program books specifically aimed at artists or designers. Basically every book aimed at teaching the Processing language is sufficient. The structure of the chapters in these books give a good indication of a certain trajectory one is assumed to follow from creative coding beginnings to the state at which computational art is today. It is of particular interest that all books I have skimmed thus far always result in (if the book is long enough) the final chapters offering an introduction to generative systems. I am yet to analyse if concepts of evolutionary design usually come before or after generative system exercises in these books, and this is for further exploration in another blog post. The level of introduction given to generative systems is another point of interest. But perhaps most interesting is how these complex systems are unspokenly considered a creative-coding endpoint — the frontier for artists working with code to produce artworks. This may or may not be true in the greater community, but it is at least my hunch. Further research into this idea is also on my agenda.

-Document my research into complex systems. What they are, why I find them interesting, and how models of these systems are reproduced in code structures with means to produce or augment digital artworks, or to facilitate either in a supplementary or direct way, the solving of a design problem.

-Actually have some fun coding some complex systems and distribute my code for the benefit of the creative-coding community. My github will be a central repository of all my work, and I will also upload to other various communities, depending on the language in which I write the program in. Processing is the language which I know best, however I have the ambition to also use HTML5 Canvas and OpenFrameworks (C++). Beginning a complex system in Processing then porting to another language might be an efficient way of learning.

-Create a dynamic listing of generative systems most readily accessible to designers who use a bricolage programming methodology, with details added regarding guidelines; tools; tips; related concepts; and of course, code examples which can all be used as both as a resource for education and inspiration. A toolkit with the potential to seed interaction and collaboration, not just within the creative coding community but between system and designer, system and creator.

§

Essentially, this is an experiment to identify where gaps of knowledge lie between the understanding of behaviours in complex systems and the creatives who utilise these systems. An interrogation and exploration of my learning process is to facilitate a more detailed conceptual understanding of the behavioural quality of these systems and how they can be applied to design projects, and through my documentation, creatives engaged in creative coding can benefit from this enhanced understanding in their own projects. Ultimately all creatives working with these systems should be able to assert creative mastery over these systems in order to achieve their intended artistic goal, but whether a haphazard trial-and-error process is detrimental to the creative’s process or a necessity [[problem-defining phase perhaps; check out boden for a nice quote here]] is an area of great interest and one which I will reserve for a future blog post. As a teaser, Alex McLean has a bit to say about this topic in his thesis:

The output of a generative art process is rarely exactly what we intended, and … this possibility of surprise is an important contribution to creativity.[3]

Footnotes    (↵ returns to text)
  1. What is Generative Art? Complexity Theory as a Context for Art Theory. Philip Galanter
  2. Generative design: a paradigm for design research. Jon McCormack, Alan Dorin, Troy Innocent
  3. Artist-Programmers and Programming Languages for the Arts, Alex McLean