What is Creative Coding?

Published by Tim on Tuesday June 21, 2022

Last modified on January 25th, 2024 at 14:06

Note: This article is also available in German language.

The world’s largest computer museum in provincial Paderborn sends hundreds of thousands of visitors each year on a dizzying journey through almost 6,000 years of human history. It begins on the second floor with cuneiform writing in Mesopotamia, leads past Johannes Gutenberg’s letterpress printing, shows the transformation of mechanical calculators and typewriters over the centuries, and then focuses visitors’ gaze on the short time period of the last 100 years on the second floor.

Near a clunky IBM computer from the 1970s, the giggles of teenagers can be heard again and again. Black-and-white photos show people in offices wearing strange smocks, sitting in front of huge machines with tiny tube screens, dully hacking characters into keyboards. At that time, computers could already be found in research facilities and large companies, but nowhere near private homes. There was still no good reason to buy a computer, because the monstrously large machines were not only unimaginably expensive, but also completely useless for private purposes. To make matters worse: Anyone who wanted to operate a computer had to program it. There were neither modern programming languages that were easy to read, nor anything like the Internet, where people could quickly and easily search for the right solution.

Parisian artist Vera Molnar has become famous for knowing how to tame these early versions of the computer. Towards the end of the 1960s, she was one of the first people in the world to use the promising machine as an artistic tool. Today she is considered a pioneer of computer art and creative coding.

But what exactly does creative coding mean? In my eyes, most definitions fail because they try to explain the term on the basis of a medium. The entry on Wikipedia is a good example, because it directly lists examples of use, which strongly narrow the view of the reader and thus only allow a very limited view of the technology itself. To me it seems more useful to define the term more abstractly, as Mark C. Mitchell and Oliver Bown do.

(Creative Coding) is a process, based on exploration, iteration, reflection and discovery, where code is used as the primary medium to create a wide range of media artifacts.

Mark Mitchell, Oliver C. Bown: Towards a Creativity Support Tool in Processing. Understanding the Needs of Creative Coders. ACM Press 2013, page 143–146, cited according to: Stig Møller Hansen: public class Graphic_Design implements Code {//Yes, but how?}: an investigation towards bespoke Creative Coding programming courses in graphic design education, Aarhus 2019, page 13. Link

This succinct definition also reflects my experience. In creative coding, programmers enter into a creative dialogue with the computer. They speak to it in a language it understands (code) and formulate instructions for displaying visual objects on a surface. At first, they have little control over the computer’s behavior. That’s perfectly okay, because surprising results always lead to new ideas and perspectives.

The further the learning process progresses, the better the programmers understand how the computer works. Gradually, parallels even reveal themselves between human thinking and the logic of the machine. In a sense, creative coding is a method that enables programmers to formulate their own thoughts and ideas in a new way. Thus, step by step, the entrance to a new world of design without a previously defined medium opens up to them.

Depending on the programming language used, the spectrum of possible output shifts: Some tools are suited for developing interactive web applications, others more for rendering moving images, still others for virtual reality applications. A single programming language can enable 3D animation and artwork for print, as well as playful interactions on the web. That’s exactly why creative coding is so special and so elusive at the same time: It is a method that is not tied to a single medium. This is precisely where the enormous potential lies: a single tool (the programming language) can be used for a wide range of application purposes.

Accordingly, the (mostly visual) results of creative coding are also not directly predictable in advance and are often only vaguely predefined. They emerge through experimentation. Compared to conventional programming, Creative Coding is primarily about expression. Functionality takes a back seat. The point is not just to write code that is as logical as possible, but to generate creative results with the code.

Creative Coding versus Generative Gestaltung

Creative coding is often equated or confused with generative design. The terms have some overlaps, but they each conceal something different. Generative design is a method that involves writing algorithms that can design autonomously. It is about developing a system, or set of rules, that serves as the basis for generating media in the broadest sense.

Generative design, compared to creative coding, is not theoretically tied to computer programming, but has been used for centuries for design in architecture and art. Examples include oriental and Islamic ornaments and patterns based on mathematical principles or the generative photographs of Gottfried Jäger or Karl Martin Holzhäuser.

Input-Process-Output

A special feature of Creative Coding and Generative Design is the fact that the horizon of these methods far exceeds that of ordinary software tools. Design software is usually conceived for solving a comparatively narrow range of tasks, so that clear boundaries emerge. These boundaries dissolve when working with code, as illustrated by the following model, which is roughly based on the IPO-model (Input, Process, Output) from software development.

In the most descriptive terms possible, generative design could be described as a method for transforming an existing input in the form of data or interaction into an output in the form of a new medium. In this way, generative design makes it possible to convert texts into animations, weather data into three-dimensional particle systems (here’s an example), stock prices into sculptures, or the latest Twitter news into interactive installations. This mindmap below is based on the IPO model. I developed it together with Patrik Hübner around 2016.

Form follows Music

The procedure of generative design can be clearly explained by a project I initiated. In 2017, I had the idea of using algorithms to transform the notes of the Prelude in C by the German music composer Johann Sebastian Bach into graphic representations of the musical structure. The piece of music lent itself ideally to this purpose because it consists of a regular sequence of individual notes. I transferred a MIDI data set of the famous piano piece into a list of numerical values, which then determined the color or brightness values in a regular two-dimensional grid. This created graphics that visually mapped and interpreted the piece of music.

Wrapping up

Creative Coding is a method that uses computer programming for artistic expression. In this method, the goal is not predefined and the process is based on discovery, variation, and exploration of mostly unexpected results.

In contrast, Generative Design is a purpose-driven method in which a process is designed that converts an input in the form of data or algorithms into a medium. While programming or the computer can be used as a tool in this process, in principle the method is detached from it and has been used in art and architecture for thousands of years.

Please note: This article is a translation of a German text that is part of my master thesis. I am aware that the article still contains some formal inaccuracies in translation and citation. I will take care of cleaning up the citations and improving the translations as soon as possible.

Further reading

Related

A reflection on Processing Community Day Copenhagen 2023

I’ve been travelling a lot in the last few months. Still, it was only during a short stay in Copenhagen […]

What Creative Coding can teach you beyond crafting visuals

Learning to code has had a bad reputation for ages. Many people have the impression that it’s all about acquiring […]

How I built myself a Digital Garden

It was a red hot day in July 2023 when I met Alex Muñoz for breakfast in the morning at […]

Digital Impact @ Disseny Hub

A few days ago, I visited the Disseny Hub in Barcelona to see the exhibition “Digital Impact”. On the website, […]

Demystify Technology – A kind of Manifesto

A Fortunate Look into the Spam Folder When I opened my email program on an ordinary workday in the morning […]

Thoughts on Artificial Intelligence

Photo: Vyběr Socky What a ride! I’m sitting in the room of a luxury hotel in Prague, once again packing […]

Gedanken über Künstliche Intelligenz

Photo: Vyběr Socky Was ein Ritt! Ich sitze im Zimmer eines Prager Luxushotels und packe wieder einmal diesen Koffer, aus […]

On Systems

From Martin Lorenz I got into lots of exciting literature about systems. One might think that this is a totally […]