Week 01 – Introduction
P5 Strands
Stretch Goals
Many students in Creative Coding have never programmed before. Most are not familiar with P5.js. Very few have the comprehensive Computer Science education.
In this blog post I'll detail my plan to make the most out of this class for the next 3-4 weeks: what I plan to learn, how, and why.
Creative limits of tech
I ran into CPU bottlenecks in my very first creative coding works.
My first piece "digital/refraction" calculates the color of each pixel in a video feed depending on the size of a text buffer. The size of the buffer increases with each word in the performance, so over time the buffer grows closer to the size of the canvas and calculations come to a halt. "Calculating the color of each pixel" is the type of work that shaders do, so I knew as early as March 2025 that the type of work I was interested in making may require me to learn how to program shaders.
"Here, still" was inspired by the chaos of impatience in the face of silence. Particle interactions are the crux of the work, and the piece suffered greatly from having to limit the number of particles to 10,000. So my second piece, made for the August 2025 HTTPoetics workshop by SFPC, let me know that I would benefit from learning GPGPU shader techniques.
I tried to teach myself fragment shader programming during my Winter 1 batch at Recurse Center by following The Book of Shaders. I learned the basics of graphics pipelines, GLSL, and the type of "shader art" people like to make for websites like ShaderToy. At RC, I got to demo a buddy protoype for ShaderTwist which is what I called my JS library designed to make it easy for me to make fragment shader sketches that I could control through MIDI.
The foray into shaders was fascinating, but I can't say it has been of any use in my art practice. Understanding this stuff is hard. Mastering it is much, much harder. So of course, I want to try my hand at learning it again, and most importantly, incorporating it into my practice.
Learning goals and style
When Ellen, my professor, reached out for me to detail my goals for the class, I listed a few considerations:
- I don't want my expertise and confidence in class to be distracting or deflating for my peers.
- I want to observe and learn from Ellen's teaching style and stay abreast of what the class is learning.
- I need more experience sharing and talking about code.
- I enjoy being inspired by classmates' work.
- I want to learn something relevant to what we're learning in class.
I also made some notes about my learning style:
- I love exposure to "artsy" techniques used by creative technologists. One example is the ample use of layered opacity for mixing color.
- I learn a lot by struggling through imitation. (Patricio Gonzalez's takes advantage of this pedagogical approach with his Pixel Spirit Deck)
Enter p5.strands
Is there an easier way to take advantage of shaders without the pain, trials, and tribulations of GLSL? The folks at Processing Foundation are trying to make it so with the upcoming 2.0 version of their popular creative coding library p5.js.
The p5.strands library is