30 Days of Coding Practice

Agoston Nagy
DataDrivenInvestor
Published in
6 min readDec 12, 2018

--

This post is a brief summary of what I learned from coding a small audiovisual sketch, every day, during a month.

Motivation

These sketches that I am referring to are results of a daily coding practice, called ‘Hackpact’. Hackpact itself originates from live coding activity of musicians, but in recent years it has been extended into different directions. You can find several precursors in art history, specifically in the fields of instruction based and algorithmic art. Also, there are several artists, technologists and enthusiasts who took part in developing this format.

Originally, Fredrik Olofsson and Click Nilson initiated the idea of ‘pact’ where they shared live coding practice and musical ideas between each other. Soon, a growing scene of live coders continued the tradition, including Gabor Papp, Alex McLean, Kassen Oud and Daniel Jones. Lately the idea of every day coding through a period of time took interest in a broader audience.

Codevember is a challenge basically for frontend developers, while 100 days of code is a somewhat longer challenge, for a larger coding community. My friends at XORXOR also completed several challenges. Back then in London, Dave Griffiths and Alex introduced me the field of (audiovisual) live coding, they also developed their own tools for creating realtime art, including the great, lisp based Fluxus environment, the funky game engine Al Jazari, or the more recent Tidal Cycles live coding environment. Thor Magnusson’s IXI Software was also a very inspirative hub for making visual music and live coding.

There are artists also, coming from other, non musical motivated fields of the scene. For example, Zach Lieberman, a Brooklyn based artist and one of the developers of the creative coding tool OpenFrameworks is making his daily sketches since years, he also made great articles and summaries on his experiments here and here.

Manifest

This process was all about

  • trying to find my own voice (including inspirations, interests, methods, formats, visual language, sonic synthesis etc.)
  • escaping the comfort zone: Think in space (3d) instead of a 2d canvas. This has been done using transparent, current web based technologies like WebGL, WebAudio & ES6 debugging and building environments.
  • problem framing instead of problem solving (more on that later)
  • plasticity: sound should always affect the graphics and/or vice versa

I wanted to keep things simple, so I used some handy frameworks for sketching: p5js, tonejs and webpack. Since the original goals of a hackpact are both practice and knowledge transfer, it was essential to share the source that can be reused by anyone at will. Ideas matter over technological solutions, so anyone should come up with their own ideas and use these existing technological ways to implement them. Ideas are a continuous flux, they are not coming from nothing. We are clearly standing on shoulders of great giants. So one last and important aspect of the whole process was to highlight any inspiration: name the sources and influences that are affecting the work. It is essential for reasonable knowledge sharing.

Things I learned

Although it seems evident, each day differs from the other. Some day it’s hard to continue, some day it’s easier. Simplicity helps you keeping on track on the hard days, and focusing on the idea on the easier days. So, simplicity, first.

Regarding to the focus, I think I had a different type of interest in the flow, compared to Zach’s daily sketching routine. While he is focusing on iteration instead of new ideas (which is great as a tool for unconscious exploration), my method was more about ‘problem framing’. This interest is the opposite of problem solving: while computable algorithms and traditional design thinking is about (creative) problem solving, I see the that the future of human creativity (especially when it comes to fusion with artificial thinking machines) lies in creative ‘problem framing’. Find the areas that needs to be covered. Spot the hard places. In my case: find your true interest.

With these experiments, my goal was to find out what type of ideas are important to me that still can fit into my set of limitations. Limitations are strong helpers when one needs to be creative.

After all, as I see it turned out, there are mainly three directions that caught my interest.

1. The sound of algorithms & natural processes

Sonificating Algorithms: Prime Number Distribution (left), Diffusion Limited Aggregation (middle), Bubble & Linear Sorting (right)

A truly interesting area of computation is understanding algorithms. Several decades ago, people were literally listening to them. Computer scientists could tell if a process runs well by only listening to the machine. Of course, today’s computers are much faster, underlying processes are inaudible for the human ear. So, it turned out, sonificating algorithms is a special field, where time must be slowed down, in order to let the algorithm folding out within an audible domain. This topic can be a great start to discuss the speed, rhythms and cycles of regular routines, today’s algorithmic practices, highlighting strange and semi-legal activities of high frequency trading for example.

While making these sketches it turned out that these artificial, binary, numerical algorithms are really similar to patterns that we can find in nature. Cellular automata, natural sorting algorithms and other abstract natural data processes are really interesting methods to play with. Regarding to this path, the Nature of Code by Dan Shiffman is a quintessential reference. Also, Data is Nature by Paul Prudence is a highly intensive source of inspiration when one is dealing with these topics.

2. Visual Notation

Visual notations: Realtime trainable Markov Chain (left), Shepard Tone (middle), Hungarian Folk Song (right)

Cage, chance operations, and different fluxus notations are the precursors of today’s realtime digital artistic practice. A drawing that can be turned into sound, an event that can be added to a notation, a pattern that can be repeated and unfolded based on several text based instructions are all taking part within this game. Aleatoric compositions, random artefacts, the will to leave behind artistic decisions are all examples of a great legacy marked by the artistic movements from the 20th century. On one hand, they are indicators of a possible world, where nonhuman, unfamiliar or alien companies and intelligences are shaping the flow of creativity, among humans, plants, fungus or animals.

On the other hand, visual music notations are not only graphic beauties, they are functional, they have to be interpreted and actualized, just like plain computer code.

3. Game play

Game-like environments: Path finding (left), Hexagonal music interface (middle), Gravity as musician (right)

If you read “Play Anything” by Ian Bogost it is no question that simple stones can act as complex playgrounds if rules are set well. Play is the natural need to make things move, play is the method we interact and experiment with reality. Board games are simulations of more complex universes. Game is the ultimate abstraction layer, with infinite complexity of rules, methods, tactics and solution mechanisms. Games are both challenging and joyful, adults like to forget the importance of their role in our everyday lives.

I like to think about the cultural context of music today as the context of (meaningful and intelligent) game environments. Sounds and contemporary music needs active participation from the audience, a will to explore and express themselves and their interests. The cognitive and psychological aspects of a gameplay are very interesting fields for further research and experimentation. New musical instruments, computer games, abstract and immersive environments are also fields that need in-depth investigation in both sociocultural and psychological ways.

All sketches are live & can be tried out at the code repository (please note they are incomplete rough web apps, each made during a few hours, so they are not optimized for mobiles, smart door bells or other fancy IoT gadgets)

--

--