Final Project reflection

In my original project proposal for dreamspace, I wrote that my intention was for the piece to be an artwork of the subconscious, a contemplative space, and an archive of dream material. Though the final piece varies some from my original proposal, I believe it does successfully accomplish these three goals. It is an artwork of the subconscious because its purpose is aesthetic and experiential rather than “productive” and it utilizes a sampling of my actual dreams collected daily throughout the year 2014. It is a contemplative space with cool, calming colors, slow drifting animation and poetic, liminal writing. It is an archive of my own dream material from one year and while in this current iteration, it is only my dreams, it is a model for a much larger collection.

Based on user testing and feedback, the experience of interacting with the piece is as I had hoped – an invitation to slow down, drift, and engage with material that can be a source of inspiration or meaninglessness, just like dreams. The experience is meant to evoke the experience of dreaming but also the remembering, recalling, telling, writing and interpreting of dreams which varies widely dream to dream, night to night and person to person. This is supported by the aesthetic of the piece. When the user first visits dreamspace, they arrive at a simple page with a heading: “welcome to dreamspace: click for dreams”, a sea foam background color and nothing else on the page. The background gradually fades into a lavender thistle color. When the user clicks, dreams appear in a similar palette making some visible, some difficult to read and some illegible. As multiple dreams are are activated, they often overlap, though the user decides where each dream begins based on the click point. This overlapping creates a collage of words and colors. All of the dreams drift off the page from the click point to the right. Eventually, all are lost.

Technically, the highlights of the dreamspace code are the changing background and the activation of the the dreams. I utilized the p5 library to write the javascript. For the changing background, I used the p5 function lerpColor which interpolates between two color values. I used the amount parameter to control the pace of the fade which I wanted to happen very gradually. I also combined the function with an if statement so that the when the fade completes, it reverses and fades back to the startColor. For the dreams, I created an array and attached them to invisible rectangle objects that are activated by the mousePressed function. I also randomized the color of the dreams by filling them randomly from an array of colors which I selected from the background colors. Lastly, I used the windowResized function to make the page automatically resize relative to the browser size – while the dreams don’t change size, the background maintains the size of the browser.

My process included extensive p5 research. I chose to use p5 because I like the artistic possibility it provides. Daniel Shiffman’s Coding Train tutorials and Allison Parrish’s tutorial articles about text and objects were extremely useful p5 resources. That said, a challenge of using p5 was a lack of documentation outside of the p5 reference. Because of this, I often found myself trying to adapt documentation for other javascript libraries or languages such as processing to my project. Major issues that I had to troubleshoot included getting the fading background to reverse and getting each click to activate a different dream from the array.

Iterating the project throughout the semester and receiving critical feedback from peers was also helpful in the creation of this dreamspace. Earlier versions included Dream Machine v2, which explored visual and animation ideas, Dream Generator, which explored interactivity, and Dream Machine v3, which explored interactivity as well as obfuscation. These sites, in addition to peer feedback, influenced my aesthetic, conceptual and technical decisions. For example, I received feedback that the dates included at the beginning of the dreams on Dream Machine v2 connected the dreams to a specific time and place and that removing the dates created a disconnection that more effectively abstracted the dreams.

Through the process of creating dreamspace and this course, I learned the basics of html, css and javascript as well as the p5 library and perhaps most importantly, how to find, read and utilize documentation and resources, troubleshoot and debug, and think logically and programmatically. I hope to continue working on this project. The next iteration will include a background that continually fades back and forth gradually rather than abruptly jumping back to the newColor once the cycle completes, a larger collection of dreams and randomization of their activation. Future iterations may also include a search interaction where a user could look for a dream based on a keyword and a space for a user to contribute their own dreams to the archive.