Somewhere amidst the amazing projects, flashing lights, sweet sound and occasional free food, there is a void at ITP. That void is a refrigerator. Some consider a fridge a cooling appliance, while others such as yours truly consider a fridge a canvas for artistic creations, unpaid bills, and other bits and pieces.
With this in mind, I created Poetic Waxing (please click for link to Processing sketch and source code!) in Processing as my final project for ICM. Rather than pouring energy into creating bills in Processing, I decided to focus on artistic creation using words, similar to Magnetic Poetry.
The first step was figuring out how to drag and drop a rectangle, hereafter referred to as a magnet, in Processing (sad, I know - but now I know how to do it!). Thanks to Digital Noah for helping me figure out how to use the mouseDrag() function!
I put a word, "KAT," on the magnet, and played around with my Processing sketch to make the width of the magnet correspond to the length of each word. Then, I created an array of rectangles, which we'll call magnets, and amended the mouseDrag function in accordance with the array so that I could move the magnets independently.
My next challenge was to figure out what the words of Poetic Waxing should be. Realistically, I'd be playing with Poetic Waxing more than anyone else, and I figured that to maximize the creativity and uniqueness of the compositions I created, it would be best to solicit words from sources beyond my noggin. I toyed with the idea of parsing words from XML sources and text files such as James Joyce's Ulysses - but figured that the most interesting language was much nearer than the info stored on remote servers. A quick email to the ITP email list yielded hundreds of awesome words from my fellow students, which I entered into a text file and put in the data folder for the Processing sketch.
One wee issue I encountered: when one magnet overlapped another, they stuck together unless the user pulled them apart from the non-overlapping sections. After a couple of minutes trying to figure out how to prevent this from happening, I realized that this was one of those fortunate mistakes. Magnets stick to magnets in the real world, so the need to manually pull the magnets apart using the mouse adds to the whole user experience. A valuable lesson learned - just because a computer may be able to do all of the work for us, doesn't necessarily mean that it should always do so.
Lastly, I made Poetic Waxing pretty! I positioned a semi-opaque rectangle beneath each magnet with a slight offset to create drop shadows. I used this image of a brushed steel texture from Dim Sum! on Flickr for the kind of background to which I knew my magnets would enjoy affixing themselves.
The user interface is pretty straightforward: drag and drop words using the mouse. When you become bored or dislikes the random selection of words on the screen, press the space bar to reset.
The Processing sketch and source code can be found here. Enjoy!
There's no fridge in this joint. For my final ICM project, I plan to expand upon the Drag & Drop Utterances project I began for the ICM midterm. This project will harness the power of Processing, the ITP vocabulary and computer displays to create interactive utterances.
Feedback from the midterm presentation generated a number of ideas I may explore with this project:
- Changing up the words over time - by parsing from "The List," news sources, StreamITP.com, Twitter, M-W Word of the Day, SMS text messages, words submitted through online form, or from ITPedia.
- Creating an ITPpoetry Twitter feed - after this week's applications presentation, perhaps feed the Utterances to StreamITP?
- The project could be used for project management/brainstorming sessions - if the appropriate words are used. This could be cool!
Step 1: Create one magnet on a plain background: http://itp.nyu.edu/~kjk311/ICM2009/poetry/
Step 2: Create array of magnets, with word on them (such as KAT)... and make the width of the magnet correspond to the length of the word. http://itp.nyu.edu/~kjk311/ICM2009/ICMfinal/iteration1/
Step 2: Figure out how to drag and drop the word from one location to another.
Step 3: Create a list of ITP/poetry words to use... or figure out how to parse a limited number of words from multiple sources.
Step 4: Create array of word objects from list.
Step 5: Place the array of words in random order in the "word bin." Figure out how to select, drag and drop them without screwing up anything. Have words shake when another word is removed from the bin.
Step 6: Create background - possibly a brick wall, possibly a Processing window (void setup, void draw, etc.).
At some point early this semester, I convinced myself that programming was beyond me. Until now, I've been tripping up and getting discouraged by little obstacles as I go along, basically sweating the small stuff. However, this week's ICM assignment - documenting an idea and first steps for a Processing project - enabled me to develop bigger-picture objectives that are helping me to overcome the mental obstacles. Having some goals in mind, I'll have a far better idea of what questions to ask!
In last week's class, I proposed my initial project idea. Somewhat inspired by my recent 'Word of The Day' text parsing assignment, I was thinking of creating a project entitled "Today." The idea was to form a new Processing sketch to record each day of my life, in a journal format.
Some of the data, such as the date, weather, Twitter feed, Flickr feed and perhaps the top news headlines would be filled in automatically from APIs, XML and/or manually parsed data using the loadStrings() command. In a bid to do a little bit of Processing every day, I also planned to include a simple yet adorable 'Sketch of the Day' (by the hand of yours truly) in there, too. I thought about this idea for quite a while, and drew up an example of what the journal would look like - and as I visualized it, I realized that using a template to record every day of my life wasn't quite as engaging, or interactive, as the project that I really wanted to create.
Returning to the drawing board, I came up with a few bigger-picture projects that I'd like to create in Processing. I've documented my ideas below, along with my thoughts on how I might tackle these projects. Figuring out the steps to complete one or more of these is the motivation I need to really delve further into Processing.
Drag & Drop Utterances
Magnetic Poetry is a wonderful thing - I love playing around with the words on the fridge while waiting for the kettle to boil. Since beginning at ITP, however, I rarely have the chance to loiter in front of the fridge (and that kettle never boils anyway, no matter how much I try not to watch it). So, this project will harness the power of Processing, the ITP vocabulary and computer screens as makeshift "fridges" to create interactive ITP sentences/poetry. A working title for this project could be "Drag & Drop Utterances."
Step 1: Create one word as an object on a plain background: http://itp.nyu.edu/~kjk311/ICM2009/poetry/
Step 2: Figure out how to drag the word from one location and drop it at another intended location - possibly using some combination of mouseClicked(), mouseDragged(), mousePressed() and mouseReleased() functions.
Step 3: Create a list of ITP/poetry words to use.
Step 4: Create array of word objects from list. Each word object must be independently movable like the one in Step 1.
Step 5: Place the array of words in random order in the "word bin." Figure out how to select, drag and drop them without screwing up anything.
Step 6: Create cool new background (cooler than a fridge), or series of backgrounds.
Step 7: Segue into PComp/Arduino territory to figure out a physical interface (project the image on Smart Board? touchscreen?)
Idea #2: Kaleidoscope
Processing lets us make cool patterns, as do kaleidoscopes. And, a kaleidoscope project could be a good opportunity to brush up on my math skills, because patterns need to be mirrored and reproduced at certain angles to create the kaleidoscope effect.
Step 1: Research kaleidoscope patterns, and figure out exactly how they work. What's the general structure? To what extent do shapes move randomly? What axes do they need to move on?
Step 2: Create pattern, based on findings from Step 1.
Step 3: Create reflections of patterns.
Step 4: Create physical interface for kaleidoscope - using dials?