For our first assignment in ICM, we were tasked with making a screen drawing using the basic drawing functions of p5.js. I decided to use the 2D primitives and basic color functions to create my own take on a Morrocan tile pattern (or something like it). These are pretty geometric, so to incorporate the curve() drawing function I decided to “sign” my name at the bottom with my first initial. This also used a different color mode that includes alpha information, giving a kind of “watermark” effect to labeling my authorship visually.
I have experience with coding in general, and have Processing and Javascript experience. However, despite playing around with Processing for a while, I only ever really “finished” one real project. I haven’t done much serious coding in Javascript in a long time, either. I didn’t have any major pitfalls in creating my homework piece, and was able to figure out everything I needed to do. A great part of this was the web editor, which was very responsive when the “Play” button was left on while I coded. I appreciate the “live coding” environment for visual programs, as it helped me (kind of) wrap my head around some of the trickier shape functions like arc() and curve(). It was smooth sailing for my first assignment, so I didn’t post any issues to github.
But it was good to shake off the cobwebs. It seems like no matter how long I have coded, picking up a language I haven’t used in a while requires me to get reaquainted with it. Javascript seems to have the habit of doing things for you and filling in the gaps on its own instead of stopping everything. This can be great for getting things to “just work”, but can make for some unexpected behaviors.
For example, I was coding along, throwing up shapes on the screen. I was looking at the different functions I was asked to incorporate into my assignment, and decided I should change the stroke weight of the next shape. When I did that, all the other shapes changed their stroke width! Why? They already had strokes?
It seems that just because you are setting the stroke color, which creates a default stroke width of 1, that does not mean that you have explicitly set the stroke width to 1. Additionally, if you use a basic color function only once in your program, it applies to all the 2D primitive shapes, even if the command is called after those shapes are drawn. Simple example here:

I’ve dealt with quirky behaviors like this before, so once I saw it I knew that I probably needed to explicitly set that color function at the top of my code in order to return it to what it looked like before. Still, confusing for a moment and a reminder of how unexpected behaviors can blindside you when you are gaining momentum in writing a program of certain length. Sometimes it isn’t what you just wrote on the last few lines that caused the error, but what you wrote on the first few lines when you started (or didn’t write, in my case).
Here is the code to my sketch here for people to look at:
https://alpha.editor.p5js.org/projects/rJb0SDQn
And after a bit of playing around in WordPress I figured out how to embed p5.js sketches into a blog from the alpha editor. Without further ado, my homework:
In terms of applying computation to my interests, I’ve had a pretty broad faith in being able to use technology for artistic expression. I welcome any opportunity to grow my coding skills in the service of creating art of any kind; visual, audio, textual, interactive, physical, etc. In terms of setting some solid goals for this semester, I would like to develop some interfaces in p5.js that might be able to be used for live performance of music, specifically something that might be able to leverage Chrome’s MIDI capabilities. I also have had a specific idea for a text/sculpture piece referencing Italo Calvino’s “If on a Winter’s Night a Traveler”. Not sure how in depth this blog post should get, but I can elaborate on the specifics of that idea later if desired.
I also have a desire to be able to teach this kind of creative coding. I’m hoping to learn about that process by taking this class, and hopefully being a resource to my fellow classmates in order to familiarize myself with different ways people come to learn code.
In terms of the ICM Inspiration Wiki page, I’m always happy to be reminded of Oblique Strategies! The game itself linked there didn’t seem to function (a server error of some kind), but Oblique Strategies can be found in many different forms and is a great way to get the mental juices flowing. Jerp Thorp’s work in making a Processing program that helped arrange names on the 9/11 memorial always struck me as moving; creative coding doesn’t always need to be flashy to be emotionally effective. Ryoji Ikeda’s superposition strikes me as great, because it brings the concept of “operators” into a choreographed and performative context. Not quite “the man behind the curtain” but not an upfront performer who is the center of attention, either.
My addition to the page was Anna Anthropy, her interactive work Dys4ia and her book Rise of the Videogame Zinesters. Anna is a indie game developer, but some of her work straddles the divide between game and “interactive narrative” (if there is a distinction to be made between the two). Anna is transgender, and Dys4ia is an autobiographical depiction of her transitioning process. Rise of the Videogame Zinesters is a kind of manifesto for DIY game development, an endorsement for accessible development tools, and a call for more “personalized” game development that empowers everyday people. I feel like there are a lot of parallels with this ethos and the intent behind libraries, frameworks and projects like Arduino, Processing and p5.js; making it easier for everyone to make digital art. Rise of the Videogame Zinesters is a quick read and a kick in the pants. If this doesn’t make you want to drop the excuses and start pushing some pixels around for art’s sake, nothing will.