What is Creative Coding?

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.

Generative Design in a commercial context

In generative design there exists a wide range of possible practical use cases. Patrik Hübner, who is studying design at Bielefeld University of Applied Sciences at the time of publication of this paper, has worked with generative design projects for leading global agencies such as Landor, Interbrand, EdenSpiekermann, Digitas Pixelpark, Onformative and companies such as Evian, The New York Times, IBM and Verizon. In a world where more and more data is available, it is increasingly becoming one of the most important drivers as well as an inspirational foundation of design practice. This elevates creatives to a powerful position when they master the craft of generative design.

Not everyone devotes themselves to new technologies as thoughtfully as Patrik. Often generative imagery in a commercial context reveals an attitude in which technological innovation is, in my eyes, not adequately questioned and, moreover, strongly idealized. FOMO, the Fear Of Missing Out, seems to be not only a phenomenon of social media addicted Gen Z teens, but also exists in the world of business. As a designer, I have often observed that Generative Design has been understood by clients as a method for developing purely decorative, gimmicky imagery. Similar to greenwashing, there are repeated attempts to use generative design to put brands in the light of technological innovation and to give them a new coat of paint.

In my view, part of a modern design ethic should be to uncover and question these very patterns among customers and to inspire them to rethink or think further. Precisely because we have increasingly powerful technologies at our disposal, we should deal with them critically. For learners, therefore, the following applies: Effective visual experiments are necessary to illuminate the potential of creative coding and generative design, but when it comes to concrete application, far more than technical skill is required. Generative design comes with the responsibility to use it mindfully and judiciously. Wilhelm Schmid once said, “Design is attitude.” This sentence is more valid today than ever.

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

Published by Tim on Tuesday June 21, 2022

Last modified on June 26th, 2022 at 20:46


Related

Creative Coding as a School of Thought

Essays Projects Updates

Creative Coding as an Experience

Essays Highlights

Creative Coding as a Method

Essays Highlights

Creative Coding as a Chance

Essays Highlights

An ode to the Gif

Essays

Reflections on my master-studies

Essays

We need a sustainable perspective on life with technology

Essays

3 Tips to accelerate and optimize your learning process

Essays

Essential tips for students when learning to code

Essays

How to breathe life into an old computer with Linux/Ubuntu

Essays

Creative Coding Manifesto 2021

Essays Films

Learnings from the Bauhaus about Art and Technology

Essays

My Story (Part 1)

Essays

Discoveries in the Public Domain

Essays Films