Creative Coding as an Experience

Note: This article is also available in German.

In 2014, my friends Lukas Schlaffke, Patrik Hübner and I packed a car full of blankets, food, laptops and stacks of books. We drove out to the countryside to move into a cabin in the woods. It was a small house with two rooms, a kitchen and a tiny terrace from which we could look directly into nature.

In front of us was a meadow, with pastures and sloping terrain behind it, though we never explored it during the six days we stayed. Basically, we saw almost nothing of the nature that surrounded us. We spent most of our time on a large couch on the terrace, our eyes focused on our laptops and completely isolated from the outside world. No network and no internet – that’s exactly how we had imagined it. Because we had come to learn Creative Coding.

As is so often the case, all beginnings were difficult. As a graphic designer, I was used to working with programs like Illustrator or Photoshop by Adobe on a well designed graphical user interface. When I started with Creative Coding, I was looking at a white code editor without any instructions or buttons to click. So what to do? I took one of the books we brought with us and wrote my first program in small steps.

Not much was happening yet. Rectangles were randomly distributed on the screen. A few circles and rhombuses appeared. Actually, I would have liked to give up already here. But fascinating things were happening on Patrik’s screen right next to me. I saw a shiny metallic sculpture in bright colors, whose surface looked as if water had been mixed with oil. It moved to a melody playing in the background, and using the touchpad, Patrik could move this unreal world and look at the scene from all angles. At that moment, I was gripped by ambition.

Beyond the threshold

From the beginning, there was a strange energy between the three of us, a kind of sparring, a will to impress the others. I accepted the challenge and dug deep into the processing reference. It took me a few days to find my way around. The moment I crossed the threshold and it suddenly started to be fun came when I rendered my first animation out of Processing. It was a composition of circles that moved radially and had associations with retro patterns from the seventies. Anyway, the aesthetics of the images on our screens were somehow from another world, fascinating and attractive. It was magical! Over the next few days I developed variants of this program, swapping the circles for triangles or squares, changing the colors, and trying out more and more new features I found in the reference.

I remember that it was not so much the complexity of the graphic shapes that fascinated me, but rather the logical connection between the code and what was happening on the digital canvas. Even back then, when the logic of the code was comprehensibly transformed into an image, I found this particularly beautiful.

We spent a week in the cabin in the forest. When I got into the car at the end and drove home, my perspective on code, computers, and design had completely changed. Today, some eight years later, I know that this particular experience that the three of us shared is described in what is called the Threshold Concept.

A Threshold Concept is an irreversible and transformative experience that occurs after an enormous learning effort. It is a kind of portal that opens a new and previously inaccessible way of thinking about something. I often compare this process in my courses and workshops to climbing a high wall. Having reached the top after enormous effort, the new perspective opens up a view of a previously unknown, vast landscape.

For me, it by no means remained with this one, singular threshold experience. To this day, the path into the universe of code confronts me again and again with comparable hurdles, the overcoming of which results each time in an enormous feeling of happiness. It makes the journey through the land of code always adventurous and exciting. But of course, the individual learning process never runs in a straight line. And for me, too, it was interspersed with countless detours and mistakes.

„Learning to code goes up and down”

Valerie Fuchs described her path from the position of marketing manager at Adidas to a successful software developer at the Iterations Conference 2022 conference like this: “Learning to program is not a sprint, but a marathon.” She also says, paraphrasing, “The learning curve goes up and down, it’s not a straight line, it’s a roller coaster.” (Here’s the full video) Perhaps it’s this perennial challenge that binds the global creative coding community so tightly together. Thousands of people around the world now network and talk about Creative Coding not only on the Internet, but also at physical conferences, workshops, and meetups. From the beginning, I’ve been enormously impressed by the generosity, helpfulness, tolerance, and endless creativity in this circle of people. Even though in the end, of course, each learning individual is on their own.

Valerie Fuchs

In situations where I felt overwhelmed by the learning process, I drew inspiration and guidance from the philosophy of the Stoa. The texts of Marcus Aurelius, Seneca and Epictetus gave me helpful impulses and suggestions for solutions to such challenges: “Trust the process”, “never summarize all problems in your head at once”, “don’t fail already in your head”, “avoid self-fulfilling prophecies”, “focus yourself and stay calm”.

And it’s not just the stoic philosophy that has become a valuable guide for me when facing big challenges. Over time, programming itself became a philosophical school for me, where I could practice the application of stoic principles and furthermore integrate them into many other areas of my life.

Marcus Aurelius

Do not imagine at the same time what and how many difficult things will most likely come your way, but ask yourself […]: What is unbearable about this thing?

Mark Aurel: Selbstbetrachtungen, Ditzingen 2019, S. 112, translated with Deepl.com

For me, many of the Stoic wisdoms represent concrete assistance for the particular challenges in the learning process. Stoic ethics is based on the pursuit of the good life (eudaimonia), which is achieved through the attainment of certain virtues (aretê) (schriefl). These virtues are positive character traits that, according to the Stoa, human beings can attain by working on themselves. The Roman philosopher-emperor Marcus Aurelius lists many of these virtues in the first book of his Meditations. I will present some of them in the following sections with my experiences from learning programming.

Self-control

As mentioned earlier, the learning curve in programming is quite steep at the beginning. Especially in this phase you will be cognitively challenged and have to solve many tricky problems. The best way to find the appropriate solutions is to keep a cool head, to proceed analytically and to have a lot of patience. Beginners sometimes lose the thread if something doesn’t work right away. Experienced programmers, on the other hand, know that they have to proceed step by step and break the problem down into its individual parts.

Persistence

Stick with one programming language for as long as possible. It is of secondary importance which language you choose. It is much more important that you do not change too early. Basically, all programming languages have the same basic structures: loops, variables, arrays, conditional statements and functions are the basic vocabulary of programming and appear in a different guise in all languages. If you have not yet developed a clear view of this, you will not recognize this and each language will seem like a new universe to you. If you switch between languages at the beginning, you increase the risk of despairing of their supposed complexity, losing valuable motivation and ultimately capitulating. Resignation is your biggest enemy at the beginning of the learning process. Motivation is your most important resource. Conserve it, like water on a long march through the desert.

Stig Møller Hansen

Thinking ahead

Given the enormous choice of programming languages available, many students wonder which one to start with. One of my most important inspirators, especially in the development of this thesis, is Stig Møller Hansen, who wrote his dissertation on teaching creative coding in graphic design. In his work, he cites Mitchel Resnick, who lists three criteria that a programming language must meet for entry into Creative Coding (criteria):

Low threshold: the language allows beginners to get started easily. The interface should not intimidate the user.

High ceilings: Despite its simplicity, the language is suitable for implementing complex and sophisticated projects.

Wide walls: The language covers a wide range of expressions, is suitable for learning many principles and allows exploration in many different directions.

The language that currently best meets these requirements is Processing. The basic principles on which Processing is built have now been adapted in many other languages. The software was written in Java, but there are now several variants that build on the principles of Processing and make them usable in other languages. p5.js, for example, is based on Javascript and is ideal for web-based, interactive applications, while Processing itself brings great advantages for the rendering of motion graphics and or the integration of external hardware.

I wish you, like me, find your way into the world of Creative Coding this week in the woods. The time of familiarization at the beginning of the process is a hurdle that is really not easy to overcome, but the experience of having made it once makes you stronger and wiser than before and will also carry you through future valleys. Give the subject its deserved chance and practice stoic serenity. You will soon see that new perspectives will open up for you.

Footnotes

criteriacf. M. Resnick, B. Myers, K. Nakakoji, B. Shneiderman, R. Pausch, T. Selker, M. Eisenberg: Design Principles for Tools to Support Creative Thinking. National Science Foundation workshop on Creativity Support Tools. Washington DC 2005, Seite 3, cited after:
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, Seite 13. Link
schrieflcf. Anna Schriefl: Stoische Philosophie. ̣Eine Einführung. Ditzingen 2019, page 119.
hansen2cf. 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 29. Link

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.

Published by Tim on Sunday June 19, 2022

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


Related

Creative Coding as a School of Thought

Essays Projects Updates

What is Creative Coding?

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