Reading Response #4
Chapter 4: “Programmability & Sound Design”
Experimentation, Taste, and Programmability
Two principles in Chapter 4 struck me as the core of why exploring creativity in programming is so hard:
Principle 4.8: “Experiment to illogical extremes! (and pull back according to taste)”
Principle 4.10: “Programmability is both a blessing and a curse”
At the very basics, you need to be able to program something in order to experiment. Much of the early stages of learning to program is a small, but constant, loop of programming something, seeing how it functions, and then tweaking it. It is part of the learning process, and so often it feels like there is less creativity involved. (This is through my perspective as someone who learned how to program only when I got to college, primarily through classes; there are certainly introductions to programming that emphasize creativity early on!) Experimentation can lead to “illogical extremes” in the form of bugs that you don’t know how to solve, which feel more like a curse than a blessing. When you do get to the result that you want, the sense of relief and satisfaction pays off. The experience of just learning how to program is a small, but real, slice of the dynamics of programming after you gain more experience.
You gradually gain more flexibility and room for creativity over time, and that enables encountering “illogcial extremes” in a more delightful, and even surprising, way. Taking the audio visualizer project as an example, it took time to figure out, understand, and implement visualizing a spectrum in a circle. With my understanding of programming and the code, I wondered: “Well what if I experimented with the angles when generating the circle? What shapes would I get?” I took off in the direction of exploring what crazy shapes could be made by manipulating the circle, and found myself interested in incorporating the shapes in my visualizer. In this extreme, it suited the taste and mood I was going for, helping me create an interesting tunnel made out of gradually “non-circular” circles. At the same time, I am trying to be deliberate in the overall shape. In that sense, it is a bit of a curse to fine-tune my exploration into something that translates to the viewer.
[pictured: a small experiment in manipulating the circles, as seen in the second and third circle from left, as the circles are "split" on one end and are gradually "bent open"]
On the other end, you might want to achieve a specific, detailed, or complicated result that requires you to expand your skills and understanding. Thus, the same cycle of learning is incorporated again, but perhaps to a more frustrating degree as you write a program, only to struggle with refining the result when you thought your code was correct. As you gain more skills under your belt, you have more to experiment with, but there will always be a ceiling to what you can do. Overall, it is a constant balance between what you want and what you can reasonably do, as well as what can be understood by others. Tradeoffs are inevitable, and that is something that I’ve tried to come to terms with in this creative process.