www.apress.com

2021/01/28

The 3 Creative Coding Challenges That Never Get Mentioned

by Mathias Funk


Are you interested in creative coding, visualization and generative art? Nice. What are the three most important challenges that only very few programs, books and tutorials address? 1) the blank page problem, 2) translating from idea to code, and 3) how to get out of feeling stuck. Recognizable? Let’s dig in.

Everyone experiences the blank page problem occasionally. It happens when you open a word processor, a blogging website, a new tweet, and also when you open your favorite coding environment. And then, despite your plan to create something, there is nothing. No words come out, no code flows from your fingers. It is as if our creative thoughts that were there just seconds ago, have vanished into the emptiness of the canvas.

So, what is really the problem here? We are motivated, we have the time, we have the right tools at hand–perhaps not even time pressure or an empty stomach (if not, solve those problems first). The problem is the empty canvas that has nothing that our creativity can latch onto. It is like trying to walk while floating in outer space, and the motions of walking just don’t convert into momentum.

What can you do? Once you realize that the blank page inhibits you, the first step is complete. The next step is to realize that you were aiming too high for the first thing to come to your mind and that you need to feed your imagination somehow. In creative writing, there are techniques to get started, and the same is true in creative coding. Start with something really simple, such as a rectangle, a line, or a circle. Put it out there and then another one. Soon, you see that the canvas is no longer empty, and something has taken shape. Now, let your imagination slowly take over, move or remove something, add another thing. Arrange all elements, add chaos, delete everything except for the best elements, then start building again. Soon you will be on your way.

The second challenge, from idea to code, is related but slightly different: we struggle in turning an idea from our imagination into something visual, perhaps even moving and interactive. Your idea seems so clear, but there is no path to writing the code. You might even have sketched your idea on paper, and still… what you need is series of steps to make it. Doesn’t this feel familiar? Think of food, you crave that dish that you saw online or on TV, what do you need to make it? A recipe.

The world of creative coding is full of recipes. Every coding environment comes with examples and libraries, often a few clicks away. Open them and look for examples that look a little like your idea. Once you are reasonably close, start modifying the example, nudge it closer and closer to your idea. Soon you will have picked up the important steps of the recipe that you were missing before. Continue with this process, or even start from scratch, retracing the recipe towards your idea.

Finally, there is the challenge of feeling stuck. This is when the earlier momentum is lost, when we seem to go in circles, have too many options to choose from, or encounter a difficult technical challenge. This is difficult and easy at the same time: once we figure out why we feel stuck, getting unstuck is straight-forward. So, let’s focus on the why: in the first two cases, lost momentum and going in circles, we have moved fast for some time, outpacing our imagination. What you need is a break, to let your ideas catch up with the making again. In the second case, with too many options, we have lost the oversight and cannot see the best path forward. What you need is to zoom out and focus on the goal again. Give it a few minutes, then go through all options step by step to pick the one to continue with. You can always go back to the other options if your first pick does not work. Letting go of the pressure to make the right choice immediately is the key here. Experiment. The final case, a technical challenge, is common when starting with creative coding. So common that we have dedicated an entire part in our book to solving problems and pushing through the ceiling.

In the end, the creative coding journey is as much about what you create as what you learn about coding and creativity – and yourself. All three challenges above have to do with our own process, knowing what we need to do at which time. That is why creative coding is never just about a language, a tool or a few concepts, for most of us, we need to take an extra step to make the learning sustainable and self-driving: we need a process, a way of making with new technology that fuels itself and carries you over inevitable gaps of not-knowing and feeling stuck.

Now, what’s coming next for you? Check out our book website or dive into the book directly, show us what you make, and give us feedback about what worked for you and how your own process looks like.


About the Author

Mathias Funk is Associate Professor in the Future Everyday group in the Department of Industrial Design at the Eindhoven University of Technology (TU/e). He has a background in Computer Science and a PhD in Electrical Engineering (from Eindhoven University of Technology). His research interests include complex systems design, remote data collection, systems for musical expression, and design tools such as domain-specific languages and integrated development environments. In the past he has worked in research positions at ATR Japan, RWTH Aachen and he has been Visiting Researcher at Philips Consumer Lifestyle, The Netherlands. He is also the co-founder of UXsuite, a high-tech spin-off from Eindhoven University of Technology. He has years of experience in software architecture and design, engineering of distributed systems, and web technologies. Further areas of interest and practice are domain-specific languages and code generation, sound and video processing systems, and data and information visualization approaches. He has been involved extensively in the business side of innovation, the transfer of research to commercial products, and he loves to think about a design’s real world impact. As a teacher, he teaches various technology-oriented courses in the Industrial Design curriculum about designing with data and visualization approaches, systems design and technologies for connected products and systems. He is regularly invited to give international workshops on large-scale interactive systems, group music improvisation interfaces and expressive (musical) interaction. He has been an active musician for years, and is very interested in the intersection of music, art, and design in particular.

This article was contributed by Mathias Funk, co-author of Coding Art.