<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Projects &apos;n Such</title>
      <link>http://itp.nyu.edu/~jfm360/blog/</link>
      <description>The standard repository for all McMahon-related ITP work</description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Sun, 29 Jun 2008 20:42:13 -0500</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Thesis - Presentation</title>
         <description><![CDATA[<p><a href="http://itp.nyu.edu/shows/thesis2008/james-f-mcmahon-viii/">ITP Thesis Week Page</a> - My ITP Thesis Week project introduction and description page for Frosty Goes to Hell.<br />
 <br />
 <br />
<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3012034&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3012034&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/3012034">Frosty Goes to Hell - ITP Thesis Week Presentation</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Streaming video footage from my Thesis presentation during ITP's Thesis Week, which brought together students, faculty, guests and live online viewers to watch Interactive Telecommunications Program graduating students present their Thesis projects. I explain my involvement and objectives for my project, and touch upon technological issues in relation to it. The presentation includes a Q&A session. ITP, NYU, 2008.<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1876359&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1876359&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1876359">Frosty Goes to Hell - Physical Setup Demo</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Video of a couple classmates trying out my prototype for the Frosty Goes to Hell virtual-reality simulation experiment. As I still couldn't get relative position and orientation data I had to settle for a simulation video, though it was interesting to note the extent of disorientation and sense of fate and consequence with the character. I was in the background behind the camera for all this, mimicking their movements to give them the illusion of cause from their end and studying their reactions and motion<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1876302&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1876302&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1876302">Frosty Goes to Hell - Wiimote Control Demo</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Video of me controlling Frosty after I was able to get the controls mapped to the wii-mote. Was able to completely control character using nothing but twisting the wii-mote so that it could measure acceleration. Still can't get relative position and orientation to work.<br />
 <br />
 <br />
 <br />
<strong>Spring Show, May 2008</strong></p>

<p>Some photos below:</p>

<p><img alt="frostypic_springshow4.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow4.jpg" width="495" height="371" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow3.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow3.html','popup','width=750,height=563,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Spring Show 1</a><br />
 <br />
 <br />
<img alt="frostypic_springshow4.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow2.jpg" width="495" height="660" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow2.html','popup','width=563,height=750,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Spring Show 2</a><br />
 <br />
 <br />
<img alt="frostypic_springshow4.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow1.jpg" width="495" height="371" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frostypic_springshow1.html','popup','width=750,height=563,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Spring Show 3</a><br />
 <br />
 <br />
After Thesis was completed, we had a small amount of time to polish whatever we could in time to display our best efforts at ITP's Spring Show. I had many issues with trying to convert my game from being a playable concept on the PC to being a working installation game. </p>

<p>I installed Parallels on my MacBook Pro as well as WindowsXP so I could be able to run Virtools, which is PC only. Unfortunately, after a long series of frustrating setbacks, I hit the road block of being unable to run the physics package of Virtools, which costs extra (alot extra) besides my student copy of Virtools. This is essential for the game to even start, as everything is contained within a world controlled by physics behaviors. </p>

<p>Also, I wished to use the MacBook for its portability, especially since considering the circumstances, I wasn't sure if I was going to get the equipment I requested at the show, so I wanted to be able to carry my project independently without having to rely on one fixed place or room. Ideally, I wanted the wii-mote to be sensed by the Mac using DarwiinRemote and the virtools building blocks, but with no physics, nothing else worked, though Mac was reading and interpreting the data correctly.</p>

<p>To solve my basic problem of "how can I get this to where people can play it?," I mapped the controls to the keyboard, saved out an external version of the game that could be replayed on my desktop, and saved it from the PC and transferred it to the Mac so the physics were intact, though I wasn't able to get the wii-mote working with that external game version. I used USB Overdrive software to hook up a game controller and interpret the keyboard controls to the game controller.</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2008/06/thesis_presentation.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2008/06/thesis_presentation.html</guid>
         <category>Thesis</category>
         <pubDate>Sun, 29 Jun 2008 20:42:13 -0500</pubDate>
      </item>
            <item>
         <title>Thesis - Construction</title>
         <description><![CDATA[<p>As "Afterward" didn't pan out due to technical and time limitations (essentially, I'd need an entire development team for about a year to pull off the minimum vision I had for that project), I re-visited a project I made in Interactive 3D and Virtual Spaces class, whereby I used physics impulses to control a snowman balancing on a balance beam over a volcanic crater.</p>

<p>I am interested in this not only because it's a chance to refine and improve on one of my first working games (and one that most people seem to enjoy), but also because the gameplay itself is susceptible to modern advances in gaming technology. In short, I'm trying to get the wii-mote to work with this project and control Frosty by merely using body movement and providing a sort of symbiosis of fate and consequence with your character.</p>

<p>Below is a screenshot of the project, entitled "<strong>Frosty Goes to Hell</strong>."</p>

<p><img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap.jpg" width="500" height="371" /><br />
 <br />
 <br />
 <br />
<strong>Virtools Reconstruction Phase</strong> - Rebuilding level from original design and adding multiple levels, fireballs, particle effects, interface design and events/behaviors. Models created in Maya and imported.</p>

<p><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-level11.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-level11.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-level1-thumb.jpg" width="495" height="374" alt="" />Construction 1</a> - Relative positioning and orientation of the balance beam/plank before physicalization.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-1st-person-cam.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-1st-person-cam1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-1st-person-cam1.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 2</a> - First-person view test.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-level2.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-level21.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-level21.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 3</a> - Multiple level designing, starting with layout of planks, to increase difficulty and improve the life of the game.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-lighting.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-lighting.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-lighting.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 4</a> - Adjusting the light sources coming from within the volcano and the surrounding environment, and working with text events.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-steam1.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-steam1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-steam1.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 5</a> - Positioning and tweaking parameters of particle systems within the volcano responsible for emitting smoke and fog, a huge part of the visual atmosphere of the game.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-steam2.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-steam2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-steam2.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 6</a> - Testing for text event behaviors when Frosty passes a certain threshold on the y-axis, thus signaling his inglorious doom. Also checking position of particle systems.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-wiivirtools.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-wiivirtools.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencap-wiivirtools.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 7</a> - Experimenting with newly-created Wii-tools building block in Virtools. Attempting to form wireless connection with PC and to get Virtools to recognize relevent stream of data.<br />
 <br />
 <br />
<img alt="frosty_screencap.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencapWii-IR.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencapWii-IR.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_screencapWii-IR.html','popup','width=900,height=720,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Construction 8</a> - Experimenting with the IR-detection building block in virtools for the Wii. Wii-tools works with wii-mote, and can recognize accelerations.<br />
 <br />
 <br />
Still trying to figure out how to have Virtools sense wii-mote's relative position and orientation, instead of only pumping out bluetooth-detected accleration measurements, which limit movement to mouse 2D interface device or rotation-friendly movements.<br />
 <br />
 <br />
<strong>Storyboard sketches</strong><br />
 <br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_storyboard-intro.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_storyboard-intro.html','popup','width=734,height=570,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_storyboard-intro-thumb.jpg" width="450" height="330" alt="" />Introductory Storyboard</a></p>

<p>Panel 1: Frosty was happy.</p>

<p>Panel 2: Until one day, when he just snapped.</p>

<p>Panel 3: He went on a terrible rampage.</p>

<p>Panel 4: Soon, he was all over the news.</p>

<p>Panel 5: Finally, Frosty found himself surrounded by police, shooting at him.</p>

<p>Panel 6: He began healing himself, and growing bigger.</p>

<p>Panel 7: Desperate now, Frosty called his old friend, but his friend saw the news and didn't want to talk to him.</p>

<p>Panel 8: One of Frosty's hostages found his weakness, and with the aid of police flamethrowers...</p>

<p>Panel 9: Frosty was no more.<br />
 <br />
 <br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_storyboard-ending1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_storyboard-ending1.html','popup','width=760,height=400,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/frosty_storyboard-ending-thumb.jpg" width="500" height="263" alt="" />Ending Storyboard</a></p>

<p>Panel 1: Well done, Frosty!</p>

<p>Panel 2: You have now paid penance for your 1st victim!</p>

<p>Panel 3: ...only 5 victims remain! </p>

<p>Panel 4: May the fates smile upon you Frosty, in your quest to find the Light!</p>

<p>Panel 5: (Game restarts, minus intro and opening control interface display)<br />
 <br />
 </p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2008/05/thesis_frosty_goes_to_hell_1.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2008/05/thesis_frosty_goes_to_hell_1.html</guid>
         <category>Thesis</category>
         <pubDate>Fri, 23 May 2008 17:27:05 -0500</pubDate>
      </item>
            <item>
         <title>Thesis - Conceptual</title>
         <description><![CDATA[<p>Conceptual Iterations - "Afterward"</p>

<p>3D interactive narrative concerning a man's revelations of his past and the grief suffered with his wife after the death of their son, as presented in an abstract dream-world that the man slowly comes to realize through the guiding physical characters of Paula Meehan's "Child Burial" poem, which help him understand his past and regain his memory, and allows him to shift his conciousness from the dream world back to reality.<br />
 <br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/1.jpg"><img alt="1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/1-thumb.jpg" width="500" height="386" />Sketch 1</a> - Player examines artwork and images engraved and presented in environment around him, and begins to progressively understand his past.<br />
 <br />
 <br />
<img alt="1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/2.jpg" width="500" height="386" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/21.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/21.html','popup','width=500,height=386,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sketch 2</a> - Player looks into lake and watches scene with real-live actors in water, reinforcing his memories.<br />
 <br />
 <br />
<img alt="1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/3.jpg" width="500" height="386" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/3.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/3.html','popup','width=500,height=386,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sketch 3</a> - Player comes upon strange artifacts in surroundings, obelisks, a hospital bed, relics from his former life; and is guided by words of wife's poem, which are visible when player is walking the correct direction.<br />
 <br />
 <br />
<img alt="1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/4.jpg" width="500" height="386" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/4.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/4.html','popup','width=500,height=386,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sketch 4</a> - The text will be an actual 3D object, able to be walked around at certain points, with event changes when player moves a certain distance past the halfway point on the h-axis.<br />
 <br />
 <br />
Below is a printout of the "Child Burial" poem by Paula Meehan, with sketches concerning scene progression and unfolding narrative.</p>

<p><img alt="2_A.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/2_A.jpg" width="612" height="734" /></p>

<p><br />
<a href="http://hobbes82.deviantart.com/art/Afterward-an-Animatic-86507678">Afterward - an Animatic</a> - Link to rough animatic presentation of storyboard and progression of key scenes throughout interactive narrative.<br />
</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2008/04/thesis_frosty_goes_to_hell.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2008/04/thesis_frosty_goes_to_hell.html</guid>
         <category>Thesis</category>
         <pubDate>Tue, 22 Apr 2008 14:37:01 -0500</pubDate>
      </item>
            <item>
         <title>The World, Pixel-by-Pixel</title>
         <description><![CDATA[<p>This class essentially instructed us how to use C scripting and programming techniques in general to create and interpret works of art, as well as allow greater control for the artist to guide the user's experience and challenge them in new ways.<br />
 <br />
 <br />
<object width="400" height="283"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1876777&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1876777&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="283"></embed></object><br /><a href="http://vimeo.com/1876777">Envy</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Screen capture of me using program I made to ideally tell an illustrated story and anthropomorphic parable of envy based on the user's physical position as sensed by the computer's iSight camera. Was able to get basics to work, though transition was choppy and uneven, so I uploaded this version which looks much better, where I was able to figure out how to change and blend image based on horizontal position of mouse. Illustrations are by me, and project was programmed using C and Xcode IDE. For Pixel-by-Pixel class, ITP, NYU, 2008.<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1876628&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1876628&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1876628">X-Ray of Ugly</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Screen capture of me testing a project that requires the user to be in a certain position in front of the computer's iSight camera to line up their face and move the mouse across the captured video to "reveal" the monster beneath. Really, I just wanted a way to make every single person on the planet look ugly and malformed. Created using C, in Xcode IDE. The illustration is cover art for Iron Maiden's "Purgatory" release, created by Derek Riggs. For Pixel-by-Pixel class, ITP, NYU, 2008.<br />
 <br />
 <br />
 </p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2008/02/the_world_pixelbypixel.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2008/02/the_world_pixelbypixel.html</guid>
         <category>Interactive/Gaming</category>
         <pubDate>Fri, 01 Feb 2008 22:51:46 -0500</pubDate>
      </item>
            <item>
         <title>Video Art</title>
         <description><![CDATA[<p><strong>Video Art shorts</strong></p>

<p><a href="http://itp.nyu.edu/blogs/videoart/category/students/jim/">ITP Video Art Class Blog</a> - Blog page for Video Art class, with posted comments and readings analysis, along with uploaded videos and links.<br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2338287&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2338287&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/2338287">Drift</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Final project for Video Art class, ITP, NYU. Story chronicles a man's inability to form a lasting relationship with a woman as a result of increasing mental instability, represented as 3 anthropomorphic levels of psyche occurring simultaneously (primal rage, debilitating fear/depression, and the balance in-between). His mental reality at this point is more real to him than his actual reality, hence the visual differences between screens. Multiple screens indicate physical barrier that only the man, and those whom he trusts enough to guide, can freely cross. Essentially, things go fine for the man and his prospective love until his mental and emotional problems set in, forcing him to distance himself from her and thus drive her off, leaving him alone. Finaly he meets a woman willing to wait for him as he comes back to reality, and as a result trusts her enough to show her his world, which she cannot accept and ultimately runs away from, leaving the man to venture further into his own degenerating mindset.<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1260313&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1260313&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1260313">Start</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Video Art documentary assignment (autobiography, in this case) for Video Art class at ITP, NYU. Music is "Green Hill Zone" theme from Sonic the Hedgehog, as arranged and performed on piano by Gori Fater (YouTube). <br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1260473&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1260473&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1260473">The Snowman, Revisited</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Video for poetry assignments in Video Art and 2x2 classes at ITP, NYU. Inspiration for story and poem from Raymond Briggs' "The Snowman" animated short. Music is "An Unwelcome Friend," by Philip Glass, from The Hours soundtrack. <br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1311678&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1311678&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1311678">Morning</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Video for Video Art class, ITP, NYU. 3 different layers of the same action, getting out of bed, played at three different speeds with a transparency fixed so all three could be seen simultaneously, existing in the same moment. Quick speed denotes my hurried mindset to get out of bed and start the day while taking every precaution not to be late and be as efficent as possible. Normal speed represents the balance between a quick, hurried lifestyle and one that allows time for contemplation, but without missing deadlines and appointments and keeping myself somewhat grounded in reality. The length of time I enjoy my morning view is often indicative of that relationship, and is therefore a good litmus test to find such a balance.<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3036417&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3036417&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/3036417">Elemental Video Magery</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Assigned to create video in Video Art class examining an elemental part of video as a visual and showcase medium. I chose to focus on the effects of multiple iSights, which is what I've used to film many of my video shorts. ITP, NYU. Music is tail-end of "Never Drown," by Days of the New.<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1311556&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1311556&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1311556">Videoillustrate</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Video/illustration for Video Art class. Tasked to make video expressing ourselves with whatever second artistic medium we chose. ITP, NYU. Music is "Pallars Anders Visa" by In Flames.<br />
 <br />
 <br />
 </p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2007/12/video_art.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2007/12/video_art.html</guid>
         <category>Animation/Video</category>
         <pubDate>Mon, 31 Dec 2007 18:37:44 -0500</pubDate>
      </item>
            <item>
         <title>2x2</title>
         <description><![CDATA[<p><strong>2x2 Class shorts</strong></p>

<p>2x2 basically refers to the idea of a video being played on a small screen, roughly 2 inches by 2 minutes long. The class examines the effects that size and technical restraints on how a video can be viewed over the internet can subtly alter and require a new way of thinking about conceptual development for that medium.<br />
 <br />
 <strong>Synaptic Combat</strong><br />
<embed src="http://blip.tv/play/AZrdd4akeA" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></p>

<p>Piece for 2x2 class, ITP, NYU, using first frame as last frame, with something happening in-between to make last different from first. Photos from Magnum Photo Archive.<br />
 <br />
 <br />
 <br />
<strong>WaterAid Spot</strong><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/zPoKDpfeMjA&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zPoKDpfeMjA&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="360"></embed></object></p>

<p>Short promotional spot for WaterAid. I chose a child-like aesthetic, though the piece is a very rough concept draft. 2x2 class, ITP, NYU.<br />
 <br />
 <br />
 <br />
<strong>The Quickness</strong><br />
<embed src="http://blip.tv/play/AZvqHYakeA" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></p>

<p>Editing experiment at my parent's house in Ohio, consisting of the first six forms of Tae Kwon Do, as demonstrated by myself, a green belt student wearing the wrong clothes on a hot day. Presented as "Free Swim" assignment, for week 5 in 2x2 class, ITP, NYU.<br />
 <br />
 <br />
 <br />
<strong>The Snowman, Revisited</strong><br />
<embed src="http://blip.tv/play/AZvpK4akeA" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></p>

<p>A mock blend of fantasy, illustration, and narrated poetry by myself. Idea concerned little boy in Briggs' story, and hypothetical results of Snowman visiting him while he's in grad school. Developed at ITP, NYU, for 2x2 and Video Art classes. Inspired by Raymond Briggs' "The Snowman;" one of my all-time animated favorites. Music is "An Unwelcome Friend," by Philip Glass, from The Hours soundtrack.<br />
 <br />
 <br />
 <br />
<strong>View from a Stretcher</strong><br />
<embed src="http://blip.tv/play/AZ6RaYakeA" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></p>

<p>Biography of fictional/real character using Magnum Photo Archive for 2x2 class, ITP, NYU, Fall '07. Piece uses camera lens as first-person view of dying woman in "life-flashing-before-eyes" montage, which also serves as biography/history of her character in series of images. Photos used with permission from Magnum Photo Archive. Music is "Mellon Collie and the Infinite Sadness," by Smashing Pumpkins. <br />
 <br />
 <br />
 <br />
<strong>Start</strong><br />
<embed src="http://blip.tv/play/AZ3XZYakeA" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></p>

<p>Video Art documentary/2x2 open-choice ("free swim"), ITP, NYU, Fall '07. Music is from Sonic the Hedgehog (Green Hill Zone), as arranged and performed on piano from Gori Fater (YouTube).<br />
 <br />
 <br />
 </p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2007/12/2x2.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2007/12/2x2.html</guid>
         <category>Animation/Video</category>
         <pubDate>Sat, 29 Dec 2007 01:24:41 -0500</pubDate>
      </item>
            <item>
         <title>2x2 - Week One</title>
         <description><![CDATA[<p>Here's the "sketch of an emotion" assignment I did. My emotion was Envy.</p>

<p><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/envy.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/envy.html','popup','width=1000,height=453,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">ENVY SKETCH - click here</a></p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2007/09/crossbloggin.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2007/09/crossbloggin.html</guid>
         <category>Animation/Video</category>
         <pubDate>Sat, 22 Sep 2007 00:28:14 -0500</pubDate>
      </item>
            <item>
         <title>Methods of Motion</title>
         <description><![CDATA[<p><strong>Animated/Video Shorts</strong></p>

<p>This area is a short space dedicated to presenting the work I've done in Methods of Motion class as well as related work and classes.</p>

<p>All projects were authored and completed by myself, with contributing assistance and advice from Marianne Petite, Terry Eiler, and students in both NYU's Interactive Telecommunications Program and Ohio University's School of Visual Communication.<br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1260219&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1260219&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/1260219">Love Story</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Final animation project for Methods of Motion class at ITP, NYU. Based off a TCOM technical writing treatment for a MADD (Mothers Against Drunk Driving) television spot I created at Ohio University. "Onion-skinning" technique used to achieve shaky-lines effect. Built using Flash Professional CS2. Music is "Without a Name" by Killswitch Engage. <br />
 <br />
 <br />
 <br />
<object width="400" height="267"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1301570&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1301570&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="267"></embed></object><br /><a href="http://vimeo.com/1301570">To Frag</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Originally an assignment experimenting with layout design in Sequential Storytelling and Digital Comics class at ITP, NYU.  I was curious about exploring the vague line between comics and animation. Story is my philosophical take on first-person shooter online games and communities. Music is "Burned With Desire" by Armin van Buuren. Created with AfterEffects CS3. <br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3032193&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3032193&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/3032193">The Fall of Jim McStickman</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>This is my second assignment for Methods of Motion class at ITP, NYU. Stop-motion animation, using a swinging camera mount, a physical set, characters, and iStopMotion on connected laptop computer. Story is that of a rising claymation performer's downfall as a result of a secret DVD released to certain members of the public, showing uncensored, deleted footage of his frustrations and tortuous treatment toward his interns. I'm not too good at clay sculpture, so this also functions as an outlet for venting claymation frustrations. And no, I'm not sure who released the DVD. Let's say, the previously-fired set props intern. Music is "For Your Own Benefit" composed by Philip Glass, off The Hours soundtrack. Created with iStopMotion, play-doh, wire, and a bunch of strips of paper.<br />
 <br />
 <br />
 <br />
<object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3030424&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3030424&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br /><a href="http://vimeo.com/3030424">The Watch</a> from <a href="http://vimeo.com/user572823">James McMahon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>This was one of the first assignments for the Methods of Motion class at ITP, NYU. Explored how to tell a story through a sequence of photographs. I wanted to experiment with representing size and scale in a small space. In this case, I attempted an epic story about a watchman's journey to his route, and his eventual demise (featuring random objects in my bedroom as the principal characters). Music is the tail-end of "Everything" by Watashi Wa. Assembled in iMovie.<br />
 <br />
 <br />
 </p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2007/04/methods_of_motion.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2007/04/methods_of_motion.html</guid>
         <category>Animation/Video</category>
         <pubDate>Thu, 26 Apr 2007 15:36:27 -0500</pubDate>
      </item>
            <item>
         <title>Massively Multi-User Media</title>
         <description><![CDATA[<p>Hi, I'm Jim, and this is my Massively Multi-User Media blog, full of pictures showcasing the strange, deranged, warped and totally mundane activities of Second Life, along with some embarrassingly simple scripting.</p>

<p><br />
<strong>Midterm/Final Concept</strong></p>

<p>My midterm and final concept will be a hybrid obstacle course/king-of-the-hill contest.  The game will take place high up in the air, which also allows the opportunity to determine the effects, if any, vertigo has on players as they race, balance and compete against one another (a curiosity of mine).  Both physics and normal code statuses will be used to convey the challenges to players.</p>

<p>Essentially, players will make their way through stages of an obstacle course and meet one another at the end, where they will be forced to eliminate one another via means which at this time are still conjectural (push guns, perhaps) to determine a champion.   Said shining hero ideally will be rewarded with rather large and copius amounts of billboards surrounding the course, proclaiming their gaming greatness to the virtual world, as well as scorekeeping and anything I can conjure before Finals.  </p>

<p>The obstacle course will have three pathways, one for each player.  Each course will be identical in the construction and execution of its elements, and each pathway will be split into three sections (or two, if my current   scripting progress continues).  </p>

<p><em>The three sections include:</em></p>

<p>-  The "gauntlet" section, where players will face a series of objects attempting to knock them off the platform to a horrible, screaming non-death miles below.  The "plank" the players will walk on to move forward will be a slightly elongated sphere, to mess with players' sense of balance, and the plank will be semi-transparent to highlight the faux sense of risky heights.  So far, the gauntlet objects are multiple walls with differing movement and avatar-sized holes, which will move horizontally at a right angle to a players' forward progress.</p>

<p>- The "platform" section, where players engage in a bit of platform-jumping reminiscent of the old days of gaming, using 2L's "jump" ability, with different timing and motion attached to each platform object to force caution and timing considerations on players, lest their dreams of death-defying bravado disintegrate horribly at the 2L equivalent of 9.8 m/s.</p>

<p>- The "wall" section, whereby players attempt to "climb" up a wall to get to the top.  In this case, "climb" refers to jumping onto precariously placed ledges sticking out from the wall's base, which forces balance and again, a decent command of jump-timing to reach the top and avoid the humiliation of watching one's avatar display the unusually amusing default "fall" animation of 2L.</p>

<p>The king-of-the-hill element comes into play, as mentioned earlier, when players have completed the obstacle course and have met one another at the top.  What happens after that is still academic, and will be fleshed out once I finish the obstacle course (concentrating on both at once would most certainly cause great gnashing of teeth, and lead to irredeemable madness on my part).  </p>

<p><em>Some pics of my progress:</em></p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_002.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_002.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_002.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 1</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_003.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_003.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_003.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 2</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_004.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_004.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_004.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 3</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_005.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_005.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/oc_test1_005.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 4</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_001.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_001.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_001.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 5</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_002.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_002.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_002.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 6</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_003.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_003.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_003.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 7</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_004.jpg" width="499" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_004.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/midterm_codeprobs_004.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Obstacle Course pic 8</a><br />
 <br />
 <br />
Unfortunately, this is where things go askew.  My code, which was working fine without any problems, now suddenly has a syntax error at line 35, 4.  I don't know how to fix this (or why this occured in the first place), and I feel I should before I can place decent scripts on other platforms, build on previous code, and begin to understand what the hell I'm doing in LSL.  </p>

<p><em>My evil, mischievous code:</em></p>

<p>integer count;</p>

<p>default<br />
{<br />
    state_entry()<br />
    {<br />
        llSay(0, "Get moving, mofo");<br />
        // turn on physics<br />
        llSetStatus(STATUS_PHYSICS, TRUE);<br />
        llSetTimerEvent(0); //disable timer<br />
        count == 0;      // zero count<br />
        llSetTimerEvent(1); //enable one second timer event<br />
        state moveRight;<br />
    }<br />
}</p>

<p>state moveRight<br />
{<br />
    state_entry()<br />
    {  <br />
        float FORCE_MAGNITUDE = 1; // essentially how fast to fly<br />
        vector FORCE_DIRECTION = <0,-1,0>; // which direction to fly in<br />
        <br />
        llSay(0, "moveRight");<br />
        llSetBuoyancy(1);<br />
        llSetForce(FORCE_DIRECTION * FORCE_MAGNITUDE * llGetMass(), TRUE);<br />
    }<br />
    <br />
    touch_start(integer total_number)<br />
    {<br />
        llSay(0, "Stop all");<br />
        llSetTimerEvent(0); //disable timer<br />
        // clear the force by setting it to a 0 magnitude vector<br />
        llSetForce(<0,0,0>, TRUE);<br />
    <br />
    timer ()  // run this code every time the timer event is raised<br />
    {<br />
        count ++;     //increment count<br />
        if(count > 10) // reset after 10 secs<br />
        {<br />
            float FORCE_MAGNITUDE = 1; // essentially how fast to fly<br />
            vector FORCE_DIRECTION = <0,1,0>;<br />
            <br />
            llSay(0, "Stop moveRight");<br />
            llSetForce(FORCE_DIRECTION * FORCE_MAGNITUDE * llGetMass(), TRUE);<br />
            state moveLeft;<br />
        }<br />
    }<br />
}</p>

<p>state moveLeft<br />
{   <br />
    state_entry()<br />
    {  <br />
        float FORCE_MAGNITUDE = 1; // essentially how fast to fly<br />
        vector FORCE_DIRECTION = <0,1,0>; // which direction to fly in<br />
        <br />
        llSay(0, "moveLeft");<br />
        llSetBuoyancy(1);<br />
        llSetForce(FORCE_DIRECTION * FORCE_MAGNITUDE * llGetMass(), TRUE);<br />
    }   <br />
    <br />
    touch_start(integer total_number)<br />
    {<br />
        llSay(0, "Stop all");<br />
        llSetTimerEvent(0); //disable timer<br />
        // clear the force by setting it to a 0 magnitude vector<br />
        llSetForce(<0,0,0>, TRUE);<br />
    }<br />
       <br />
    timer ()  // run this code every time the timer event is raised<br />
    {<br />
        count ++;     //increment count<br />
        if(count > 10) // reset after 10 secs<br />
        {<br />
            float FORCE_MAGNITUDE = 1; // essentially how fast to fly<br />
            vector FORCE_DIRECTION = <0,-1,0>;<br />
            <br />
            llSay(0, "Stop moveLeft");<br />
            llSetForce(FORCE_DIRECTION * FORCE_MAGNITUDE * llGetMass(), TRUE);<br />
            state moveRight;<br />
        }<br />
    }<br />
}</p>

<p>Next is to work on getting the objects to recognize only avatars and upon contact, do their part to make their lives miserable (after I figure out how to get my walls to move correctly).  After I fix the problems and get a little more hang of the code, there should be a snowball effect in terms of constructing the course, as each component will be built from pieces of old physics code and examples, and I will hopefully create and maintain something that doesn't so closely resemble a huge embarrassment failure  :)</p>

<p><br />
<strong>Class 5</strong></p>

<p>Here is my LSL code for week 5, enabling environment detection and subsequent interaction.  Mostly, it's just code example 1 and 3 combined and altered a bit for more interesting conversation, while still performing the basic<br />
requirements of environment detection and interaction.  In this case, detecting an avatar, relaying its velocity, and moving 3 paces upon contact/collision with an avatar, with appropriate textual response from object directed to avatar concerning object's displeasure with experiencing contact from anything other than itself.  Yes, my object is a bit of a jerk.  Enjoy!  <br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/week5_fixed.jpg" width="496" height="372" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/week5_fixed.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/week5_fixed.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Week Five Coding Mod Pic</a><br />
 <br />
 <br />
Code:</p>

<p>//James McMahon<br />
//Massively Multi-User Media - Class 5</p>

<p>integer TELEPORT_RANGE= 3; // this defines the maximum range our object can teleport on the x or y axis</p>

<p>float randomRange(float min, float max) {</p>

<p>float range = max - min; // find the range of numbers that need to be generated<br />
float random_number = llFrand(range); // find the random number in the range we just calculated<br />
return random_number + min; // and return the random number offset by the minimum value</p>

<p>}</p>

<p><br />
default{  //start the script(after declaring variables)</p>

<p>state_entry() {  //first "state" code</p>

<p>llOwnerSay("Waiting for something to smack into me");<br />
}</p>

<p>collision_start(integer num_detected) {<br />
    //once the object has detected something, run through list of objects detected<br />
    integer i = 0;<br />
    for(i=0;i<num_detected; i++){<br />
        //find out and say name of detached object<br />
        string object_name = llDetectedName(i);<br />
        llOwnerSay("Aw, crap, I just detected an object named "+ object_name);<br />
        //find out and say the velocity of the detected object<br />
        vector object_velocity = llDetectedVel(i);<br />
        llOwnerSay("Its velocity is coming on fast at " + (string) object_velocity);<br />
    }<br />
        <br />
// find out the name of the first person who collided with you so you can complain about being stepped on<br />
llOwnerSay("Damn! "+llDetectedName(0) + ", that hurt, you clumsy-ass bully. I'm outta here before you steal my lunch money and dunk my head in a toilet, too...");</p>

<p>// find out where you currently are<br />
vector my_position = llGetPos();</p>

<p>// figure out a random offset to move the object by. We're not moving in the z direction so we don't end up floating off<br />
vector offset = <randomRange(-TELEPORT_RANGE, TELEPORT_RANGE), randomRange(-TELEPORT_RANGE,TELEPORT_RANGE), 0>;</p>

<p>//note:  object can end up swallowed by landscape as it moves; for example, my object will keep <br />
//teleporting until it walks (with the same y position) into a hill, and the only thing peaking out is <br />
//its head.  This isn't because there is no Z value, rather, it seems to be that teleporting makes an <br />
//object fall outside parameters that conform on object to the landscape?<br />
//add the offset to your current position position and use vector desired_position = my_position + offset;</p>

<p>// move to the new position<br />
llSetPos(desired_position);<br />
}<br />
}</p>

<p><br />
<strong>Class 4</strong></p>

<p>Here are some examples of basic texturing with my models in 2L.  First, the double-sword I made (multiple screenshots for a better look at the textures):<br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_001.jpg" width="500" height="378" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_001.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_001.html','popup','width=500,height=378,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sword Pic 1</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_002.jpg" width="500" height="378" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_002.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_002.html','popup','width=500,height=378,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sword Pic 2</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_004.jpg" width="500" height="405" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_004.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_004.html','popup','width=500,height=405,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sword Pic 3</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_005.jpg" width="500" height="378" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_005.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/doublesword_005.html','popup','width=500,height=378,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sword Pic 4</a><br />
 <br />
 <br />
The handle is textured with a rug, the white blade is a transparent smoke texture, and the blue blade is a water texture. Secondly, here's my one pic (didn't really need any more) of my Stay Puft Marshmallow Man:<br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/texture1_003.jpg" width="500" height="378" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/texture1_003.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/texture1_003.html','popup','width=640,height=488,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Stay Puft Pic 1</a><br />
 <br />
 <br />
I used a  white transparency, messed with the alpha a bit, and ultimately overlayed a blue transparency as the texture.</p>

<p>Tune in next week for more hilarious hijinx when I try my hand at more coding and scripting!  Until then, be safe, be sound, and don't rape anyone in cyberspace.  </p>

<p><br />
<strong>Class 3</strong></p>

<p>Here is the result of my ultra-simple code as I make my first foray into the wonderful and exciting world of LSL scripting.  The joy.  The excitement.  Here is a picture of the result (mainly just an in-game chat conversation example):</p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Snapshot_codingmod_001.jpg" width="496" height="375" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Snapshot_codingmod_001.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Snapshot_codingmod_001.html','popup','width=800,height=605,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Week 3 Example</a></p>

<p>Behold my programming prowess in action...  </p>

<p><br />
<strong>Class 2</strong></p>

<p>Here is my first 3D model in Second Life.  Having worked with Maya and Blender, I find this system to be irritating, to say the least.  Why Linden Labs felt they had to be different and unique from other established 3D-software programs is beyond me, as the interface is not that intuitive.  That's just me though, as I enjoy complaining about trivial things (gives me a rush).</p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Snapshot_staypuft_001.jpg" width="496" height="375" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Snapshot_staypuft_001.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Snapshot_staypuft_001.html','popup','width=800,height=605,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Model 1</a></p>

<p>The Stay Puft Marshmallow Man!  Made from...wood.  Texturing comes later, dammit.</p>

<p><br />
<strong>Class 1/Miscellaneous</strong></p>

<p>What follows are interesting places, views, objects, etc. that I ran across while chilling in Second Life.  <br />
 <br />
"The first interesting place" I came across in 2L...<br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/2L-place.jpg" width="498" height="311" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/2L-place.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/2L-place.html','popup','width=600,height=470,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Silent Hill 2</a><br />
 <br />
 <br />
...followed by my first experience with a griefer!  I thought this one was particularly amusing (and surprisingly well-done)...<br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jell-owned%21.jpg" width="496" height="382" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jell-owned%21.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jell-owned%21.html','popup','width=800,height=616,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Jell-Owned!</a><br />
 <br />
 <br />
Here is some scenery I enjoyed...<br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/whalerider.jpg" width="496" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/whalerider.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/whalerider.html','popup','width=800,height=605,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Whale Riding</a><br />
 <br />
 <br />
As you can now probably tell, my avatar has undergone some cosmetic surgery, from being a humanoid fox-like animal known as a "furrie" (aka generic stock avatar), to something more befitting my admittedly warped and odd sense of humor.  In these pics, my virtual alter-ego, drunk off his virtual ass (notice the bottle of Bud), is enjoying various sights around the world...<br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/qhome/jfm360/public_html/blog/chillin_on_missiles.jpg" width="496" height="371" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/qhome/jfm360/public_html/blog/chillin_on_missiles.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/qhome/jfm360/public_html/blog/chillin_on_missiles.html','popup','width=750,height=563,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Chilling On Rustic Missiles</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/chillin_on_bigkitty.jpg" width="500" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/chillin_on_bigkitty.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/chillin_on_bigkitty.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Kitty Riding</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/drunk_artistry.jpg" width="500" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/drunk_artistry.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/drunk_artistry.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sublime Art Appreciation (Drunk) 1</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/drunk_artistry2.jpg" width="500" height="374" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/drunk_artistry2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/drunk_artistry2.html','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Sublime Art Appreciation (Drunk) 2</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/shittin'.jpg" width="496" height="371" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/shittin%271.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/shittin%271.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">True Artistic Modeling</a><br />
 <br />
 </p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2007/02/massively_multiuser_media.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2007/02/massively_multiuser_media.html</guid>
         <category>Interactive/Gaming</category>
         <pubDate>Wed, 14 Feb 2007 17:23:53 -0500</pubDate>
      </item>
            <item>
         <title>Sequential Storytelling &amp; Digital Comics</title>
         <description><![CDATA[<p>Hi, I'm Jim, and I'm a Sequential Storytelling and Digital Comics student.  Below are my assignments thus far for the semester.</p>

<p><strong>Final Project</strong></p>

<p><em>Final Version:</em></p>

<p><a href="http://www.deviantart.com/deviation/54929473/">Catharsis</a> by ~<a  href="http://hobbes82.deviantart.com/">Hobbes82 (aka myself)</a> on <a href="http://www.deviantart.com">deviant</a><a href="http://www.deviantart.com">ART</a><br />
 <br />
 <br />
<strong>Final Project: Thumbnails and Script</strong></p>

<p>Revised 5/1/2007:  Completed jpegs of drawings, text and yellow text background which are featured in current SWF file.  Actual images are much cleaner and sharper, the following are just to get a general idea where I'm at and to show progress.  Currently working on programming Flash interface, choosing different background door images, and resolving how the end image/text will be presented.  </p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan1-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan2-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan3-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan4-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan5-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan6-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan7-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan8-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan9-shitty.jpg" width="368" height="248" /> <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan10-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan11-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan12-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan13-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan14-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan15-shitty.jpg" width="368" height="248" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/final_pan16-shitty.jpg" width="368" height="248" /><br />
 <br />
 <br />
 <a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_final.swf">Flash Motion Sketch</a><br />
 <br />
 <br />
Latest progress!  Yay!</p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_finaltest2.jpg" width="501" height="358" /><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_finaltest2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_finaltest2.html','popup','width=772,height=552,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Example 1</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_finaltest.jpg" width="501" height="358" /><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_finaltest.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/ssdc_finaltest.html','popup','width=772,height=552,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Example 2</a><br />
 <br />
 <br />
What follows is the poem I'll be using as the narrative to the story.  It initially was "An Old Book," written by myself, but I have since changed the poem selection to "Untitled" by sash (sash is the online moniker used by a poet I met online while surfing poets.com).  To recap, the general idea is to use this poem as a sort of background narrative to the picture story I'll be telling, thumbnails of which are included below.  Exact placement is still unknown, but I'm leaning towards preserving the integrity of the original poem's layout by adhering to pictures being narrated with couplets, but that may change as I see fit.  Definately still a work in progress...</p>

<p>"Untitled" by sash</p>

<p>I used to have a crypt inside my heart<br />
Where I would bury loves that had expired;</p>

<p>Slow rotting carcass soup, they seeped and foamed,<br />
My vital organs' toxic bouillabaisse.</p>

<p>My lungs exhaled an aura of disgust,<br />
A rabid, howling halitosis beast</p>

<p>That guarded my malignant bitterness<br />
As if it was a treasured golden bone.</p>

<p>But then I built a crematorium<br />
Inside my mind; I undermined decay</p>

<p>Of heart and soul and sundry body parts.<br />
To beat the odds of death of more than faith,</p>

<p>I heaped the putrid bones of loves exhumed<br />
And tossed them heartily upon the pyre,</p>

<p>Expelled all charcoal hopes left unfulfilled<br />
Like backfired puffs of nightmare made benign</p>

<p>and watched</p>

<p>them</p>

<p>   swirl</p>

<p><br />
away </p>

<p>       on<br />
 <br />
  drifts</p>

<p>of<br />
 </p>

<p>  air</p>

<p>The ending of this poem will be interesting to implement in the story in a fashion that doesn't seemed forced or too contrived.  What follows are only a sampling of images that I plan to include, and which give the general look and feel of the story.</p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb1.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb2.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb3.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb4.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb5.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb6.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb7.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb8.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb9.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb10.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb11.jpg" width="290" height="181" /><br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/thumb12.jpg" width="290" height="181" /><br />
 <br />
Again, each picture is in sequence (so far), and I am currently working on the best way to match the poem to the images.  In general, I'm working toward a grungy, decrepit look to the surroundings, making use of both black and white and color frames, the black and white a device to travel to the recent past so as to help understand the progression of the story.  I also am trying to obscure faces and too many details, to leave the audience with a puzzle to solve afterwards.  Will I succeed?  Tune in next week to find out! <br />
 <br />
 <br />
<strong>Assignment #9:  Information Navigation:</strong><br />
 <br />
This assignment dealt with organizing information for a possible digital comics website.  Components as follows:<br />
 <br />
<em>Information</em><br />
 <br />
• Gallery area showcasing all art</p>

<p>• Information about each assignment, including assignment details, date of creation, why I chose each topic and other miscellaneous things about the piece</p>

<p>• About me area, brief, with contact info and links to other sites, specifically, Digital Comics class site, ITP site, and my own forthcoming website</p>

<p>• Extras, such as date, time, and weather, for general convenience </p>

<p><br />
<em>Functionality</em></p>

<p>• Comments area</p>

<p>• Breadcrumbs</p>

<p>• E-mail form area with comments/questions sent directly to my e-mail address</p>

<p><br />
<em>Wireframe</em></p>

<p><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_home1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_home1.html','popup','width=700,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Home</a></p>

<p><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_gallery.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_gallery.html','popup','width=700,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Gallery</a></p>

<p><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_about.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_about.html','popup','width=700,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">About</a></p>

<p><br />
<em>Site Map</em></p>

<p><a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_sitemap.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_class9_sitemap.html','popup','width=700,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Site Map</a></p>

<p><br />
<strong>Assignment #8:  Typography:</strong></p>

<p>Experimentation with typography and type working with one word or phrase/sentence.  In my case, I chose the phrase and sentence "Have a nice day!"</p>

<p>Some scrolling examples, similar to Assignment 7; just scroll down kind of slow until you reach the end...</p>

<p><em>Nice Day #1</em><br />
<img alt="typo_sunny.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/typo_sunny.jpg" width="300" height="2000" /></p>

<p><em>Nice Day #2</em><br />
<img alt="typo_raining.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/typo_raining.jpg" width="300" height="2000" /></p>

<p>Some rollover examples:</p>

<p><em>Nice Day #3</em><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/typo_monstergirl.swf">Download</a></p>

<p><em>Nice Day #4</em><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/typo_finger.swf">Download</a></p>

<p><br />
<strong>Assignment #7:  Time:</strong></p>

<p>This is my attempt at creating a digital comic that represents the passing of time (without using clocks, calendars, etc.).  The story will unfold as you scroll down the page slowly to the end.</p>

<p><img alt="week_7.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/week_7.jpg" width="400" height="6000" /></p>

<p><br />
<strong>Assignment #6:  Layouts On a Digital Canvas:</strong></p>

<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/UizdSbE6FCk&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/UizdSbE6FCk&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>

<p>(Not sure if this counts, but I couldn't let the perfect opportunity pass to fuse what I've learned from two classes together for this assignment)</p>

<p><br />
<strong>Final Project Preliminary Presentation:</strong></p>

<p><br />
<em>1.  My Definition of a Digital Comic</em></p>

<p>A created piece presented in a digital format containing a majority of traditional characteristics of printed comics, while also allowing for real-time visual and structural manipulative capabilities, effects, and user interactivity.  </p>

<p><br />
<em>2.  My Definition of Interactivity</em></p>

<p>The capability of an object’s base characteristics and underlying foundations to be manipulated based on user input, and a corresponding reaction from the object to the user.</p>

<p><br />
<em>3.  2 Or 3 Ideas For My Possible Final Project</em></p>

<p>1.  I’d like to combine two of my fictional narratives with similar themes or complimentary characteristics together, by using the textual narrative of one of my poems to enhance an illustrated story with no textual narration.  Hopefully, this will form a user/viewer experience somewhat akin, in a literary manner, to viewing a music video whereby the artist attempts to tell a visual story independent of the song’s actual lyrics.  </p>

<p>2.  I’d like to experiment with telling a comic-book-style story using 3-D animation/modeling and perhaps software like Adobe After Effects, so that animation and interactivity are present, but only as devices to continue the traditional print-visual-style story.  For example, to turn the page or switch to a different panel, the user would have to perform an action like clicking a button or perhaps typing a phrase or something.   I would personally try to stay away from too much animation, and what animation I did have would probably be in a choppy fashion, to mimic the aesthetic and feel of print comics.  </p>

<p>3.  The idea of choose-your-own-adventure narratives would be interesting; for example, if I wrote the beginning of a story and made an animation in a digital format susceptible to further manipulation, like an FLA document, other people could take the narrative in their own direction, or write from different points of view, and also have the capability to illustrate it with an intrinsic similarity in visual style if they so desire, or the opportunity to re-imagine the visuals of the story entirely.  To do this, I would have to first set-up a system that would make this easy to accomplish, which would probably require setting up a game-type interface for interacting with others and to quickly access their works and to begin experimentation.  All this would be necessary to attract those who are intrigued by social storytelling but don’t necessarily have the time or experience to go searching for open-source stories to further manipulate, and subsequently track down the author, explain the intentions, and hope they concur.  This won’t work, though, because I suck at programming.  This was just a third idea thrown out there in case I ever want to revisit it in the future.</p>

<p><br />
<em>4.  Description of One Idea In Detail</em></p>

<p>•  My story will be fictional, probably a drama or comedy instead of action or romance.</p>

<p>•  The story will be about a guy walking through a school and having flashbacks that visually tell a different story than what is actually being told in the lines to my poem “An Old Book.”</p>

<p>•  Something close to whatever emotion I wanted to elicit from the reader of the poem, though if my experimentation yields interesting results stemming from juxtaposition and similar disassociative narration or elements, I’ll certainly continue on the path that interests me most.</p>

<p>•  I would like it to be a series, and then a series only in the sense that the common thread among the stories is of their shared ancestry as poems authored by myself.  Otherwise, the stories don’t have that much in common, other than a bleak world view and some weird humor.</p>

<p>•  My audience is aimed at those who enjoy graphic novels, illustrated stories, and readers of poetry.  Those people who enjoy reading both poetry and graphic novels and have a decent competency to use a computer are ultimately the best candidates.</p>

<p>•  Visually, I’d like my story to have a hand-illustration visual aesthetic, but augmented and enhanced by digital tricks such as transparencies, layers, buttons, interactive animations, and other similar methods to present the material in an interesting, engaging way. </p>

<p>•  Yes, but in a very limited manner, so as to allow a telling of the story uninterrupted.  Essentially, the interaction would most likely take place as a result of flipping pages by pressing buttons or clicking hot spots, or perhaps  assigning tasks to the user before they can continue with the story.  To keep the story coherent and whole, I’d have to think that too much interactivity might be a distraction to the user from experiencing the full intended effects of the piece, which would make it more similar to a movie than a game.  </p>

<p>•  Similar to my third idea, I was thinking that a system set up to allow other people on the web access to the source files of animated stories would be cool, since those people could make parodies of the original content, tell the story in the viewpoint of a minor character, or communicate amongst themselves to create sections of a longer animated film.  Again, a simple communication interface geared specifically for working and sharing in this space would be optimal, and I definitely don’t have the programming wherewithal to even attempt it.  Perhaps this is some sort of future IM chat space/Flash interface program, or perhaps I just need more sleep.  </p>

<p><br />
<em>5.  Traditional Print Comic Techniques I Think Can Be Expanded Or Changed In a Digital Format, How, and New Techniques That Might Be Used</em></p>

<p>I think one technique is the ability to “pan” when a story is presented in a digital format.  For instance, panning would allow one to navigate across sections of a larger comic in predetermined or open-ended directions, most likely in a program like After Effects or Maya, for a sort of flashlight-on-a-hieroglyphic-wall effect.  Getting the comic into 3D space could prove an interesting task, though most likely an excruciating one to pull off artfully, coherently and well-done.  Also, the ability to make games and require user input could potentially affect a comic’s presentation of its narrative or to possibly enhance aspects of the narrative for a complimentary experience, for example, a story could unfold based on how the user performs a certain task, which would make the experience much more interactive and game-like.</p>

<p><br />
<em>6.  Successful Interactive Stories I’ve Come Across and Why They Were Successful To Me</em></p>

<p>The first thing I think of when hearing “interactive stories” are games, and more specifically, RPGs, which are successful because their overarching storylines allow a certain measure of freedom in-between presented instances of the story arc.  Recently, I’ve seen some cool effects of presenting stories visually that resembles the aesthetic of comic book art, specifically cel-shaded animation, rotoscoping, and forms of digital cinematography.  Massively-Multi-Player games/online spaces frequently allow the opportunity for story invention through socializing with other players (for side quests and whatnot), and some games are explicitly attempting to saturate themselves in the aesthetic and structure of traditional comic books, such as the Max Payne series and many games related to film-noir in general.<br />
 <br />
 <br />
<strong>Assignment #4:  Panels and Borders:</strong></p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic1.jpg" width="495" height="409" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic1.html','popup','width=660,height=546,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Panel Comic 1</a><br />
 <br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic2.jpg" width="498" height="232" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic2.html','popup','width=647,height=310,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Panel Comic 2</a><br />
 <br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic3.jpg" width="498" height="356" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic3.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/jim_comic3.html','popup','width=683,height=488,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Panel Comic 3</a><br />
 <br />
 <br />
<strong>Assignment #3:  Story to Comic:</strong><br />
 <br />
Illustrated comic adaptation of "Tooth and Claw," a short story by T. Coraghessan Boyle. Piece completed for Sequential Storytelling and Digital Comics class at ITP, NYU. Bic pen. <br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_week3_pg1.jpg" width="500" height="700" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_week3_pg1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_week3_pg1.html','popup','width=556,height=778,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Tooth and Claw, pg 1</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_week3_pg2.jpg" width="499" height="691" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_week3_pg2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/SSDC_week3_pg2.html','popup','width=574,height=795,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Tooth and Claw, pg 2</a></p>

<p><br />
<strong>Assignment #2:  Sketchbook Assignment #2B:</strong></p>

<p><img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan1.jpg" width="498" height="178" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan1.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan1.html','popup','width=600,height=215,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Interdependant</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan1-2.jpg" width="498" height="182" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan1-2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan1-2.html','popup','width=600,height=220,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Montage</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan2.jpg" width="500" height="183" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan2.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan2.html','popup','width=550,height=201,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Picture Specific</a><br />
 <br />
 <br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan3.jpg" width="500" height="178" /><br />
<a href="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan3.html" onclick="window.open('http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/mcmahon_scan3.html','popup','width=550,height=172,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Additive</a><br />
 <br />
 <br />
<strong>Assignment #1:  Diary Comic:</strong></p>

<p><img alt="diarycomic1-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/diarycomic1-2.jpg" width="500" height="166" /></p>

<p><em>Here is the list of moments "Monday" came from:</em></p>

<p>1.  Stephen Colbert gesticulating towards his ill-fated guest with a knowing smirk<br />
2.  My mother, rummaging through the plastic bag of pills to find my father’s heart medication<br />
3.  Greeting my roommate’s girlfriend, who was shocked to see three people when expecting none<br />
4.  My father, gasping for breath as he climbs the three floors to my apartment <br />
5.  My mother, father and I squished together in the back seat of the same blue cab that picked us up three days straight<br />
6.  Standing, shivering at the corner of Pavonia and Washington Blvd. outside the PATH station waiting for our cab through bitter winds<br />
7.  My mother and father enjoying their food at Uno’s Restaurant reflecting on everything they had seen in the city <br />
8.  My mother explaining to me why the three of us should eat steak and other more upscale foods instead of where I usually eat<br />
9.  My father, laughing as we missed our Subway stop as a result of the N train flying right past 8th Street on weekends<br />
10.  The trees at the south end of Central Park, after my mother remarked how cool it was that they could twist and reach for the sky in such interesting contorted patterns<br />
11.  My mother, excited as she described the beauty of the surroundings near Bethesda statue in Central Park<br />
12.  My father, smiling and sweating profusely, as he read the plaque dedicated to John Lennon in Strawberry Fields <br />
13.  Crowds of children at the Museum of Natural History and frenetic vision as I try not to step on any of them<br />
14.  The men’s restroom, seen from afar with an almost tangible and visible ethereal glow, after searching for about 15 goddamn minutes longer than I felt I could hold it after the IMAX presentation<br />
15.  IMAX presentation of Mars Rover<br />
16.  The bustling beehive of human activity seen in the form and sounds of the Museum of Natural History’s Food Court<br />
17.  Entrance to the Museum of Natural History as we stepped off the C train at 81st street and our seemingly choreographed response of delight at not having to walk far from the train to get there<br />
18.  My father, asking me (with good-natured sarcasm, if there is such a thing) just how many liquor stores I need to live close to while surveying the neighborhood and waiting for our cab<br />
19.  My roommate Abiade, talking with my parents and I before he headed off to Hoboken<br />
20.  My father, waking me up by ripping the pillow from under my head.</p>

<p><br />
<img alt="diarycomic2-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/diarycomic2-2.jpg" width="500" height="166" /></p>

<p><em>Here is the list of moments "Tuesday" came from:</em></p>

<p>1.  My computer screen saver, imbued with a picture of my cat from my old place in Delaware, Ohio<br />
2.  Online pictures of my brother’s tattoo examples that he sent me to assist in the concept art stage<br />
3.  My TaeKwonDo uniform, much dirtier than I had hoped<br />
4.  My roommates as I open the door to the apartment, making coffee and griping about the inability to access the router when the landlord is on vacation<br />
5.  The first crazy person after I came back from Ohio:  muttering to himself and shaking his head violently as I walk home through the Jersey City ‘hood, surprised at how less shocked I am of the place than last semester<br />
6.  A drunk person waiting at the Hudson-Bergen Light Rail Station, singing loudly to his presumed girlfriend or significant other, and intermittently interrupting his own singing with defiant proclamations of not “givin’ no shit ‘bout singin’ in front of muthafuckahs waitin’ fo’ a bitch-ass train” <br />
7.  The muffin area of the New University Diner, with a disturbing and complete lack of pumpkin muffins<br />
8.  My smiling and disheveled reflection, as I reach to open the glass doors of the beverage area of the New University Diner<br />
9.  The ceiling of the TaeKwonDo dojo, frequently, after being the self-defense lesson example/ragdoll for the period<br />
10.  The pages of Tales of A Young Urban Failure<br />
11.  Scanning faces in my class to see who I recognized <br />
12.  Blurs of the church and supermarket parking lot in my peripheral vision as I sprint to catch the Light Rail Train from a ways away, and the feeling of triumph as I barely made it inside as the doors were closing<br />
13.  Hurriedly hugging my mother and father, who insisted on giving departing hugs while getting into the car, which was parked alongside the street as traffic from both directions kept looming closer and closer<br />
14.  My father, sitting down to rest after walking every few city blocks, an image repeated throughout their visit to the city<br />
15.  The look of pride and joy on my parents’ faces as I showed them my Intro to 3D project<br />
16.  My newly soaked coat collar, from spitting out too-hot chocolate my mother had bought for me while I had been in line getting a new NYU Card to replace the one I lost, after conversing on how pissed I was at that dumbass dispatcher for making me skip my first class<br />
17.  My mother and father offering to catch up with me later so I could get to class faster instead of “letting them slow me down,” completely uncaring of their relative ignorance to the public transportation system<br />
18.  The look of anger on my own face as seen through the rear-view mirror of the taxicab that picked us up one hour and 40 minutes late, which changed to contemptuous laughter as the taxi driver held up the two-way Nextel to thank me for waiting, despite his inexplicable canceling of our pick-up request<br />
19.  A screen full of e-mails and sporadic checks of the clock while waiting for the cab<br />
20.  My father, ripping the pillow from under my head to wake me up at 7am.<br />
</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2007/01/diary_comics.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2007/01/diary_comics.html</guid>
         <category>Digital Art/Illustration</category>
         <pubDate>Mon, 22 Jan 2007 00:13:25 -0500</pubDate>
      </item>
            <item>
         <title>The Epiphany Machine - Physical Computing Final Documentation</title>
         <description><![CDATA[<p>Hi, I'm Jim McMahon, and this is my documentation for my The Epiphany Machine physical computing final project.  I've broken down this pleasant foray into mechanical madness according to six (6) sections.  They are as follows:</p>

<p>1.  Concept drawing and controller key<br />
2.  Content and general project explanation/description<br />
3.  Pseudo-code and general plan-of-attack for completing project<br />
4.  Construction and building process pictures<br />
5.  Troubleshooting log<br />
6.  Conclusion/Sources Cited</p>

<p>Before I begin to lay out for you a tale of tortuous, tenacious technicality, I must inundate you with a brief explanation as to my motives behind the project, and why I wish to see this particular choice through to completion.  I graduated from Ohio University with a major in Interactive Multimedia and a minor in English, and while I get plenty of chances to put my multimedia skills to practical use in this program, the constant concocting of correct coding in my classes leaves me yearning for some good 'ol fashioned English and creative writing.  </p>

<p>The idea for this came as I was meeting with my physical computing instructor, and attempting to figure out what to do for my final project.  As I had no ideas, she simply asked what I liked, and writing being one of them, I decided to see what could come about from the suggestion.  My instructor and I chatted about a possible word-changing controller, and I decided to run with the idea as far as my embarrassingly small, bow-legged PComp legs could carry it.</p>

<p>As such, displayed for your viewing pleasure below is an image of the general concept of which I was thinking.  Colors in the final incarnation may vary (see also:  "I'm using wood, dammit").  </p>

<p><br />
<strong>1.  Concept Drawing and Controller Key</strong></p>

<p><img alt="controller_concept.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/controller_concept.jpg" width="446" height="509" /></p>

<p><br />
<strong>2.  Content and General Project Explanation/Description</strong></p>

<p>The main idea behind this thing is to generate, via hands-on manipulation, a creative writing exercise on-the-fly.  One exercise I did in college included writing random favorite words from all members of the class onto the blackboard, and subsequently giving the students free reign to write whatever they liked, as long as they forced those words somewhere into their story.  Different results followed, from minimalist poetry using only the suggested words and few others, to long, epic (if not bloated) narratives that had no chance of being completed in the 50 minutes of class time we were alotted.  </p>

<p>The idea here is a similar one; I'm aiming to allow for options of building sentences input by input, or perhaps having static sentence structure and allowing for variable components of said sentence, much like a mad lib.  This will work by serial communication between the Arduino Microcontroller, the Arduino code environment, and the Processing IDE, which will display the results of all that future twisting, turning and pushing in the form of sentences and phrases, or whatever form the user wishes from their choices.  </p>

<p>A sample list of words (chosen by me) will respond when variable data is received.  For example,</p>

<p>Nouns - brain, turtle, ninja<br />
Verbs - caroom, vomit, fall<br />
Adjectives - contagious, frappish, monomaniacal<br />
Etc...</p>

<p>The construction of unexpected sentences has always helped me hurdle creative dumbfoundery, and a tactile approach will hopefully get the brain thinking in a slightly different way.  Ideally this will lead to literary trysts into an imaginitive stratosphere, screaming inky divinity from the end of a ballpoint pen, and enable those modern progeny of Atlas to cast off thy hunched 'n bunched shoulders the soul-crushing weight of writer's block into the briny sea of worthless bombastic bullcrap metaphors.</p>

<p><br />
<strong>3.  Pseudo-Code and General Plan-of-Attack for Completing Project</strong></p>

<p>I intend to base my initial progress off the Lab 5 - Serial Communication lecture and notes, and to start by making sure all software is correctly installed, as previously I had been missing the drivers in Arduino when I downloaded to my computer.  </p>

<p>After this will be a confirmation check to examine if all my equipment is ready by completing the first couple labs, which also will serve to refresh my memory on certain basics.</p>

<p>I will then start the serial communication lab, and attempt to understand how the code works so that I may manipulate certain parameters and areas of the Processing code to better visually illustrate my concept idea.  </p>

<p>I will need to revisit how to most effectively use string arrays for my project, so that the words can be displayed on the screen instead of just at "println."  I will have to figure out how to map certain physical actions (such as button pushing or pot twisting) to actions in Processing, and to think about how to possibly design such an interface for effective display and usability.  </p>

<p>I will then build the prototype for the project, which will definately not look even remotely close to the concept idea, but will instead be an amalgamation of wires, wood, and metal pieces.  </p>

<p>Finally, user-testing and cross-platform compatibility will commence, and I hopefully will have the project finished to an acceptable state.</p>

<p><em>Interface (Processing) pseudo-code</em></p>

<p>Allow user (for now) to construct his/her own sentence on-the-fly.  Basically, whichever potentiometer or pushbutton the user tweaks or presses becomes the next word in the sentence, and while tweaking or pressing the buttons, the screen will show the user cycling through words in a pre-determined (by me) list in real-time, and those words each will be mapped according to a numerical equivalency for accurate mapping.  </p>

<p>If any other pot other than the one currently active is activated, move behind last word/string (maybe 10 px from width) and begin cycling through list of verbs, nouns, adjectives, or whatever the user chooses to continue tweaking.</p>

<p>If button is pressed, cycle once through list next word/string.  If string is "(this)," change all words/values/strings to matching parameters of the selected.</p>

<p>Design interface should be simple and not very visually cluttered or prominent in any way so as to be distracting for user.   Black background will be erasable, by assigning the background command once in setup and once in a key, mouse or serial event.  Text will be light gray (#CCCCCC) to mute effect of stark black/white color contrast to eyes constantly fixed on it, and to disallow the "I'm Burning This Damn Text Into My Retinas As Afterimages!  The Pain!  I Can't Stop Looking At the Words Green Eggs and Ham!  Oh Why Did I Peruse Dr. Seuss While Taking a Bathroom Deuce and Then Start Typing Green Eggs and Ham-Related Poetry To My Laptop?!" Effect.</p>

<p>Include "return"-type button which skips to next line and starts at leftmost position on line, which allows for greater freedom with experimentation (e.g. poetry), and enforces left-alignment, which is the common form.  Ideally, this project would eventually progress to the point where I could create the option for tabs or spaces or total object alignment, for those who prefer their text centered.</p>

<p>In future, perhaps map A, B, C, etc. on the controller buttons to increase gameplay dynamic, and include suggested "templates" for experimentation with guaranteed somewhat grammatically-feasible results; like in video game codebooks, for example:  </p>

<p>"EABDCA," where:</p>

<p>Declarative Article = E, Noun = A, Verb = B, Pronoun = D, Adjective = C, and Noun = A, which could conceivably, as an example, be interpreted on the screen as:</p>

<p>the cheeseburger kicked my voluptuous donkey</p>

<p>*Still curious what effect introducing color to the controller will bring on information-retention methods...</p>

<p><em>Thoughts on Concious Decisions</em></p>

<p>The interface for this project's interactivity is relatively simple for many concious decisions, described below:</p>

<p>1.  Black background always seems (to me) less intimidating than white space; perhaps because there's an unconcious association to the memory of writer's block or something.  Also, it seems more conducive to daydreams and fantasies, which hopefully will speed up "writing epiphany" process.  </p>

<p>2.  Gray text won't burn itself into your retinas like white, and thus allow for a longer endurance period for your eye to focus correctly on screen.  </p>

<p>3.  Minimalistic design theme between black background and gray text that seems to work, despite being a bit (purposefully) dull.</p>

<p>4.  No punctuation eliminates the distracting tendencies to incessantly tweak grammar, which distracts users from concentrating on the words themselves and their properties.  Grammatical structuring should occur later as a secondary result to what they created on the screen with the controller.</p>

<p>5.  Limited choice of words prevents the time-consuming, train-of-thought-derailing habit of searching endlessly for the Right Word to perfectly express a feeling or thought.  In itself, that's a great thing, but not while in the middle of completing content in a sentence and attempting to awash yourself in your own stream-of-conciousness thinking.  </p>

<p>6.  Using a tactile approach will hopefully perform a better job of:</p>

<p>a) forcing the user to interpret phrases, sentences, meaning and punctuation, <br />
b) allowing writers of multiple skill sets a method to drop the creative writer's block and rekindle the creative fire, which might seep back into their intended work, <br />
c) engaging the more mechanically-inclined and hands-on learners to allow them to better understand and perhaps appreciate the craft and spark a curiousity to practice themselves, <br />
d) teaching those learning the language, be it young children, handicapped, or international people some basics of communication in English, <br />
e) allowing more concrete mental associations between controller action and screen (basic elements of gameplay), <br />
f) encouraging careful attention to sentence structure, especially if I use "difficulty" choices of words ranging from "common usage" to "hard/unique/complicated/jargon"-type scales.  </p>

<p>Below are pics of interface design with the same text content:</p>

<p>[ignoring the RETURN-key option and interacting regularly]</p>

<p><img alt="epiphanymachine_regtxt.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/epiphanymachine_regtxt.jpg" width="640" height="480" /></p>

<p>[using RETURN-key option for structural experimentation; in this case, poetry]</p>

<p><img alt="epiphanymachine_poetryexamp.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/epiphanymachine_poetryexamp.jpg" width="640" height="480" /></p>

<p><br />
<strong>4.  Construction and Building Process Pictures</strong></p>

<p>Here are some iSight pictures I saved from Processing allowing a visual record of what I've been attempting so far...</p>

<p>These first three pictures are of the layout of my breadboard, currently configured for and awaiting completion of Lab 5 before getting anywhere else.</p>

<p><img alt="breadboard1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard1.jpg" width="320" height="240" /></p>

<p><img alt="breadboard2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard2.jpg" width="320" height="240" /></p>

<p><img alt="breadboard3.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard3.jpg" width="320" height="240" /></p>

<p>Here are pics of my tools and tacklebox, with freshly soldered potentiometers and switches all ready to go and awaiting my command.</p>

<p><img alt="breadboard4.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard4.jpg" width="320" height="240" /></p>

<p><img alt="breadboard6.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard6.jpg" width="320" height="240" /></p>

<p>Here is the computer screen, feebly (in this light) showing my Processing code and Arduino and Terminal windows in the background.</p>

<p><img alt="breadboard7.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard7.jpg" width="320" height="240" /></p>

<p>Finally, a true hallmark of any stressful, hair follicle-endangering project:</p>

<p><img alt="breadboard5.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard5.jpg" width="320" height="240" /></p>

<p>That's right, Chinese take-out from the 'hood, along with a copy of Firefly to allow confident reassertion of my nerdliness.  </p>

<p>These are updated pics of the Epiphany Machine breadboard configuration and layout, while I was trying to figure out what the hell was wrong with the code (again).  </p>

<p><img alt="breadboardEM1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardEM1.jpg" width="320" height="240" /></p>

<p><img alt="breadboardEM2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardEM2.jpg" width="320" height="240" /></p>

<p><img alt="breadboardEM3.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardEM3.jpg" width="320" height="240" /></p>

<p><img alt="breadboardEM4.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardEM4.jpg" width="320" height="240" /></p>

<p><img alt="breadboardEM5.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardEM5.jpg" width="320" height="240" /></p>

<p>Hopefully, I can re-configure this mess of wires for a better looking and "functioning" prototype.</p>

<p>Here is a better looking series of photos about the prototype of the project, though I miscalculated how to include the potentiometer with the buttons, and I just didn't have time to do the necessary arduous and time-consuming task of calculations and measurements that inevitably come from such a "simple" process as poking holes in the foam-core and expecting everything to fall into place (I probably should have laid out a detailed battle plan before engaging in this, but I was too preoccupied trying to figure out why in the name of all that is Holy my code still won't work).  This is the final looksie.</p>

<p><img alt="breadboardfinal1.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal1.jpg" width="320" height="240" /></p>

<p><img alt="breadboardfinal2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal2.jpg" width="320" height="240" /></p>

<p><img alt="breadboardfinal3.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal3.jpg" width="320" height="240" /></p>

<p><img alt="breadboardfinal4.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal4.jpg" width="320" height="240" /></p>

<p><img alt="breadboardfinal5.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal5.jpg" width="320" height="240" /></p>

<p><img alt="breadboardfinal6.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal6.jpg" width="320" height="240" /></p>

<p><img alt="breadboardfinal7.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboardfinal7.jpg" width="320" height="240" /></p>

<p><img alt="breadboard8.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/breadboard8.jpg" width="320" height="240" /></p>

<p><br />
<strong>Troubleshooting Log</strong></p>

<p>This is the section of my documentation whereby I cry and whine and bitch and moan about why in the hell various parts of my project aren't working.  At this point, it's the reason why I'm not further along and anywhere close to where I want to be.</p>

<p>- Had problems with Analog In/Out lab; apparantly PCs are configured wrong in their port setup or whatever.  Carlyn helped; looking forward to working on a computer that doesn't annoy the crap out of me, or suck an unnecessary 4 hours out of my life trying to figure out what went wrong.</p>

<p>- Had problems with Serial Communication Lab 5, in the form of not being able to get the Terminal to communicate the way it's supposed to; was advised in class to double-check and make sure I installed correct drivers on my computer.  Did so and problem ceased.  </p>

<p>- Had problems attempting to figure out what was broadly wrong with Serial Communication Lab 5, as I still cannot get it to work.  Sample of e-mail to instructor:</p>

<p>"I know that my breadboard is<br />
wired correctly, because I'm getting values for my two pots and my one<br />
pushbutton in the Terminal, each of which change accordingly when I<br />
twist either of the two pots or push the button.  In essence, the<br />
Arduino code seems to be working fine. </p>

<p>The Processing example code, therefore, is the problem.  It doesn't work<br />
when I straight copy-and-paste it into the program.  It doesn't work<br />
when I change the "port = new Serial(this, Serial.list()[0], 9600);"<br />
command by replacing the "[0]" after "Serial.list()" with any other<br />
number, although 0 and 1 will make the screen black, and 2 and 3 result in:</p>

<p>RXTX uucp_lock() /var/lock/LK.001.009.002 is there<br />
gnu.io.PortInUseException: Unknown Application</p>

<p>java.lang.RuntimeException: Error inside Serial.<init>()<br />
at processing.serial.Serial.errorMessage(Serial.java:575)<br />
at processing.serial.Serial.<init>(Serial.java:148)<br />
at processing.serial.Serial.<init>(Serial.java:102)<br />
at Temporary_7088_1670.setup(Temporary_7088_1670.java:26)<br />
at processing.core.PApplet.handleDisplay(PApplet.java:1237)<br />
at processing.core.PGraphics.requestDisplay(PGraphics.java:568)<br />
at processing.core.PApplet.run(PApplet.java:1406)<br />
at java.lang.Thread.run(Thread.java:613)</p>

<p>These are the listings of my ports:</p>

<p>Stable Library<br />
=========================================<br />
Native lib Version = RXTX-2.1-7<br />
Java lib Version   = RXTX-2.1-7<br />
/dev/tty.modem<br />
/dev/cu.modem<br />
/dev/tty.usbserial-A1000ewV<br />
/dev/cu.usbserial-A1000ewV</p>

<p>Is the port in use by some other program and blocking what I'm trying to<br />
send?  This has happened while I had the Terminal up and running, as<br />
well as when the Terminal hadn't been activated after restart.  My port<br />
should correspond to number 2, according to the logic of the directions,<br />
but all that happens is a blank applet, not doing or showing anything<br />
but gray.  I can force the ball to appear by not linking its color to a<br />
variable, but it won't move at all, despite my sending a capital A to<br />
begin serial commincation; I typed capital A in the terminal, as well as<br />
when the applet is active."</p>

<p>Later, I was able to considerably narrow the problem with help from my housemate, who is a programmer.  An example of a revised e-mail:</p>

<p>"we were able to narrow<br />
the problem down to a single line of code in the "setup" area:</p>

<p>port = new Serial(this, Serial.list()[2], 9600);</p>

<p>Most of that line seems to work except the "this" parent Papplet<br />
parameter.  The complete code is below (with a bunch of "println"<br />
commands for extra debugging testing), and the result is displayed in<br />
the error log area at the bottom of the Processing window.  The applet<br />
generated was of a blank screen, mainly because the program encountered<br />
the error before "draw."  Throughout this entire process, Arduino was<br />
running the required code, and the Terminal program was open and running.</p>

<p>//Processing Code</p>

<p>import processing.serial.*;</p>

<p>int bgcolor;                             // Background color<br />
int fgcolor;                             // Fill color<br />
Serial port;                         // The serial port<br />
int[] serialInArray = new int[3];    // Where we'll put what we receive<br />
int serialCount = 0;                 // A count of how many bytes we receive<br />
int xpos, ypos;                     // Starting position of the ball<br />
boolean firstContact = false;        // Whether we've heard from the<br />
microcontroller</p>

<p></p>

<p>void setup() {<br />
  size(256, 256);  // Stage size<br />
  noStroke();      // No border on the next thing drawn</p>

<p>  // Set the starting position of the ball (middle of the stage)<br />
  xpos = width/2;<br />
  ypos = height/2;</p>

<p>  // Print a list of the serial ports, for debugging purposes:<br />
  println(Serial.list());<br />
  println("port 2 = " + Serial.list()[2]);<br />
  println("this=" + this);<br />
 <br />
  // I know that the first port in the serial list on my mac<br />
  // is always my  Keyspan adaptor, so I open Serial.list()[0].<br />
  // On Windows machines, this generally opens COM1.<br />
  // Open whatever port is the one you're using.<br />
  port = new Serial(this, Serial.list()[2], 9600);<br />
  println("1");<br />
  port.write(65);    // Send a capital A to start the microcontroller<br />
sending<br />
  println("2");<br />
}</p>

<p></p>

<p>void draw() {<br />
  background(bgcolor);<br />
  fill(fgcolor);<br />
  // Draw the shape<br />
  ellipse(xpos, ypos, 20, 20);<br />
  println("xpos=" + xpos + ", ypos=" + ypos);</p>

<p>  // If no serial data has beAeen received, send again until we get some.<br />
  // (in case you tend to start Processing before you start your<br />
  // external device):<br />
  if (firstContact == false) {<br />
    delay(300);<br />
    port.write(65);<br />
  }<br />
}</p>

<p></p>

<p>void serialEvent(Serial port) {<br />
 <br />
  println("se: port=" + port);<br />
  // if this is the first byte received,<br />
  // take note of that fact:<br />
  if (firstContact == false) {<br />
    firstContact = true;<br />
  }<br />
  // Add the latest byte from the serial port to array:<br />
  serialInArray[serialCount] = port.read();<br />
  serialCount++;</p>

<p>  // If we have 3 bytes:<br />
  if (serialCount > 2 ) {<br />
    xpos = serialInArray[0];<br />
    ypos = serialInArray[1];<br />
    fgcolor = serialInArray[2];</p>

<p>    // print the values (for debugging purposes only):<br />
    println(xpos + "\t" + ypos + "\t" + fgcolor);</p>

<p>    // Send a capital A to request new sensor readings:<br />
    port.write(65);<br />
    // Reset serialCount:<br />
    serialCount = 0;<br />
  }<br />
}</p>

<p><br />
//This is what I get in the bottom window after hitting the Play button:</p>

<p><br />
Stable Library<br />
=========================================<br />
Native lib Version = RXTX-2.1-7<br />
Java lib Version   = RXTX-2.1-7<br />
/dev/tty.modem<br />
/dev/cu.modem<br />
/dev/tty.usbserial-A1000ewV<br />
/dev/cu.usbserial-A1000ewV<br />
port 2 = /dev/tty.usbserial-A1000ewV<br />
this=Temporary_1274_4015[panel0,0,22,256x256,layout=java.awt.FlowLayout]//Is<br />
there something here that's causing the problem? -Jim</p>

<p>RXTX Warning:  Removing stale lock file. /var/lock/LK.001.009.002<br />
gnu.io.PortInUseException: Unknown Application</p>

<p>java.lang.RuntimeException: Error inside Serial.<init>()<br />
at processing.serial.Serial.errorMessage(Serial.java:575)<br />
at processing.serial.Serial.<init>(Serial.java:148)<br />
at processing.serial.Serial.<init>(Serial.java:102)<br />
at Temporary_1274_4015.setup(Temporary_1274_4015.java:28)<br />
at processing.core.PApplet.handleDisplay(PApplet.java:1237)<br />
at processing.core.PGraphics.requestDisplay(PGraphics.java:568)<br />
at processing.core.PApplet.run(PApplet.java:1406)<br />
at java.lang.Thread.run(Thread.java:613)</p>

<p>My housemate kept asking if there was a source code to look at, which<br />
had something to do with serial initialization.  I'm not exactly sure<br />
what he's talking about, but maybe that can explain the problem I'm<br />
having a bit better.  In essence, my pot twisting and button pushing is<br />
not being picked up by Processing, and that very basic condition needs<br />
to work before I can go any further."</p>

<p>And this is where I am irredeemingly, irrefutably, incomprehensibly stuck the f*ck in a mucky rut.  I can't get anywhere from here, as my basic condition has not been met, despite all attempts to remedy the situation.  I'm despondent, and reeling still from the heinous blast of shattered self-confidence and melancholic mourning for a victory that should have been...</p>

<p><em>Nevermind...</em></p>

<p>Apparantly the problem was my brain operating on different logic than the directions assumed.  I literally did almost everything under the sun to get that damn code to work, and I found out all I had to do was quit Arduino and the Mac Terminal program and just run the Processing code.  I had thought it fundamentally important to have at least two programs talking to each other during serial communication, which is technically right, BUT those two programs must be the Arduino Microcontroller itself and some kind of IDE (or Terminal) open and running the required serial recognizable code.  Having two programs attempting to control the port is impossible and so I needed to actually kill the other programs.  This seems such a basic mistake, but to be perfectly honest, I worked my ass off to figure this out (insert vague, caveman-like grunting sound as emphasis).</p>

<p><em>12.10.06</em></p>

<p>After my (ahem) epiphany(!) concerning the need to quit Arduino before uploading code, I ran into another wall, which was basically programming my code in an efficient and generally operable manner with the added features to my breadboard configuration.  I met with my instructor, and she rewrote the lab to work with serial communication and send what I needed to get my Processing code to begin working.  Unfortunately...</p>

<p>PROBLEM:  The Processing code does not work correctly.  I came to this conclusion after testing the Arduino code and finding that it sent the correct values for the correct things, as shown below:</p>

<p><img alt="scrnshot_arduinocode121006-.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/scrnshot_arduinocode121006-.jpg" width="500" height="505" /></p>

<p>In the above example, the first three numbers are the potentiometer values, and the 6 digits that appear after each correspond to one pushbutton (which is wired to the breadboard).  The Arduino code works fine.  After I upload this and test it, I then will stop the code, quit Arduino, and start up Processing, and to choose the PDE file from "open sketchbook" menu.  I run the code, and nothing happens except:</p>

<p><img alt="scrnshot_proccode121006-sm.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/scrnshot_proccode121006-sm.jpg" width="500" height="504" /></p>

<p>All it does is show a black background and print the serial port list.  Nothing else, even when called to println, happens.  What you saw is what I got.  </p>

<p>As a result of my ineptitude to get this code to work, I've tried all manner of troubleshooting the code, but the problem is that I can't identify specifically what is wrong enough to know what to do or where to look to fix it.  I know where the problem resides:</p>

<p>void serialEvent(Serial port) {<br />
  // if this is the first byte received,<br />
  // take note of that fact:<br />
  if (firstContact == false) {<br />
    firstContact = true;<br />
  }<br />
  // Add the latest byte from the serial port to array:<br />
  serialInArray[serialCount] = port.read();<br />
  serialCount++;</p>

<p>  // If we have 7 bytes:<br />
  if (serialCount > 6 ) {<br />
    int eraVar = serialInArray[0];<br />
    println("EraVar:" + eraVar);</p>

<p>    for (int i = 1; i < 7; i ++) {</p>

<p>      int num = serialInArray[i];</p>

<p>      // print the values (for debugging purposes only):<br />
      //println(xpos + "\t" + ypos + "\t" + fgcolor);</p>

<p>      switch(num) {<br />
      case 0:<br />
        println("Switch" + i + "Is not pressed");  // Does not execute<br />
        break;<br />
      case 1:<br />
        println("Noun");  // Prints "Noun"<br />
        break;<br />
      case 2:<br />
        println("Verb");  // Prints "Verb"<br />
        break;<br />
      case 3:<br />
        println("Adjective");  // Prints "Adjective"<br />
        break;<br />
      case 4:<br />
        println("Adverb");  // Prints "Adverb"<br />
        break;<br />
      case 5:<br />
        println("Reset");  // Prints "Reset"<br />
        break;<br />
      case 6:<br />
        println("LineBreak");  // Prints "LineBreak"<br />
        break;<br />
      }<br />
    }<br />
  }</p>

<p>  // Send a capital A to request new sensor readings:<br />
  port.write(65);<br />
  // Reset serialCount:<br />
  serialCount = 0;<br />
}</p>

<p>The serialEvent() seems to be the culprit of what's wrong, but I have no idea where at in the code to figure it out.  I've tried moving around placements of nested statements, like moving the " for (int i = 1; i < 7; i ++) {"-command and everything in it to the same level as the preceding "if (serialCount > 6 ) {"-command, which allows the "eraVar" to print repeatedly, and "println("Switch" + i + "Is not pressed");"-command to print as well.  The problem with that, though, is my computer freezes everytime I do it (even the CAPS lock light won't go out if it's on), and I have to do a hard restart every time, which I'm  loathe to do.  </p>

<p>I guess what I need to know is if there's a way to slow down serialEvent() from printing so fast so I can experiment without a crashing computer, and in general to get interaction between the button-pushing and potentiometer twisting.  There's a value, "48," which seems to be the default value of the potentiometer that's being transmitted or interpreted when I test for such, which also is a strange problem...Processing doesn't seem to be reading the correct values being sent.  What the f*ck is going on?</p>

<p><br />
<strong>6.  Conclusion/Sources Cited</strong></p>

<p>My conclusion thus far is a somewhat limited one, as I was only able to progress so far without the use of actual serial communication between Processing and Arduino, the point of my project.  I believe that given enough time, I could make an interesting little device that might help some people break out of a momentary creative block, which was really all I was hoping for, though my eternal impatience with PComp would probably win out over my desire to see the project through to its fullest.  If I've learned anything from this Great Experiment, it would have to be a markedly improved ability to debug Processing, as well as get a sense of what is "probably" going wrong in any given application I tend to run.  I've learned a bit about serial, too; pretty much everything I need to know up until the actual communication-with-Processing part.</p>

<p>What follows are my sources and those whom I cite throughout my work...</p>

<p>Notes:</p>

<p>- Physical Computing, ITP 2006 Fall semester, instructed by Carlyn Maw<br />
- Physical Computing, by Dan O'Sullivan and Tom Igoe, Thompson Course Technology, MA. 2004.<br />
- Classmates' online notes and journals, at:<br />
"http://itp.nyu.edu/~cm1002/Fall2006/pComp/index.php?n=Notes.Class" and<br />
"http://itp.nyu.edu/~cm1002/Fall2006/pComp/index.php?n=Notes.Journals"<br />
- Various pages of ITP's Physical Computing web directory:<br />
"http://itp.nyu.edu/physcomp/"<br />
- Arduino and Processing reference libraries, environments, and tools:<br />
"http://www.arduino.cc/"  - Arduino homepage<br />
"http://www.processing.org/" - Processing homepage</p>

<p>Consulting/Extra Help:</p>

<p>- Carlyn Maw, my Physical Computing Instructor<br />
- My housemates Ron and Kyle (don't know their last names)<br />
- Felipe Ribeiro, and various other student and teacher input from ITP<br />
- Anyone or anything I forgot (always inevitable)</p>

<p>Thank you for visiting my documentation page.  Perhaps someday this device will appear, as if out of the blue, on a newspaper's front page (or page 8) declaring a temporary cure for creative ills, as I am left standing alone in a puddle of questionable liquid in a Subway car, riding off to who knows where and briefly reading over the shoulder of some poor soul who wants nothing but an assurance that I won't rob him this night, if he'll only just let me read a little further the realization of a rough blueprint from long ago.  </p>

<p>Thanks again for all those who helped me throughout this semester.  I cannot describe how much I appreciate your patience and support.  </p>

<p>James (Jim) Franklin McMahon VIII - ITP Fall '06, Class of 2008.</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2006/12/the_epiphany_machine_pcomp_fin.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2006/12/the_epiphany_machine_pcomp_fin.html</guid>
         <category>Interactive/Gaming</category>
         <pubDate>Mon, 04 Dec 2006 03:32:11 -0500</pubDate>
      </item>
            <item>
         <title>Physical Computing - Serial Communication Final</title>
         <description><![CDATA[<p>This is a screen shot of a modified version of the Serial lab from week 5.  At the moment, I'm attempting to understand how serial communication works in a more detailed manner, and am trying to complete a few basic steps such as getting specific words to the screen and figuring out what kind of layout and interface would best suit my needs.  </p>

<p><img alt="Picture-2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/Picture-2.jpg" width="600" height="322" /></p>

<p>Also, just getting the damn code to work every time is a challenge in itself...</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2006/11/serial_final.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2006/11/serial_final.html</guid>
         <category>Interactive/Gaming</category>
         <pubDate>Mon, 20 Nov 2006 11:30:28 -0500</pubDate>
      </item>
            <item>
         <title>Dots and Boxes - Introduction to Computational Media Final</title>
         <description><![CDATA[<p>I've taken this project beyond ICM (Introduction to Computational Media) class to a 2-credit programming workshop course. I was interested in getting this to work as well as I could, as it is the first video game I've ever made, and I like the idea of making a decent version of Dots 'n Boxes, of which I haven't found very many.</p>

<p><strong>Programming Help Code Studio page</strong> - Below is my section from the Code Studio ITP webpage that includes my objectives and how I plan to complete them:</p>

<p>          o Idea: Reasonable closure for my ICM project, "Dots and Boxes," as well as any forward progress that can be made towards my PComp serial communication project, "The Epiphany Machine." </p>

<p>          o Week 1 Objective - To refamiliarize myself with both projects, and to document the problems of each which have stifled my forward progress and made me sad, so very sad. Such knowledge will help in communicating the exact nature of the problem for discussion in next week's class and to obtain more efficient and working code, until such time that I slam with a bone-jarring thud straight into the next programming wall, which will be outlined below shortly... </p>

<p>          o Week 2 Objective - ...and which is the fact that I cannot figure out what is wrong with my text-entry operation. I want actions to perform once someone submits text, i.e. their name as they typed it, and it actually shows the hell up, which is the precursor to another operation involving typing initials which get recorded and then displayed on boxes whenever a player scores. I want to try to fix this problem so I can move forward with the next phase of my evil operation, which includes... </p>

<p>          o Week 3 Objective - ...fixing the same damn problem I had last week. This week, it gets SOLVED (much like getting served, but with a certain intellectual-smackdown quality to it). Basically, I want to allow a rudimentary two-player game, which allows for different mousebutton clicks to lay objects down on a grid by each player, key waiters which allow switching between boxes and connectors for each player, and basic characteristics (different colors, shapes, etc.) which will distinguish UI and gameplay elements between players... </p>

<p>          o Week 4 Objective - ...and this week, to do some cleanup work on issues that, last week, invariably were waiting to rear their ugly, pustulating and pox-filled heads. These include actually manipulating text box parameters, adding a second text box for Player Two, and correctly mapping initials to boxes (and getting those initials to appear correctly), which should lead right into... </p>

<p>          o Week 5 Objective - ...trying to find the memory hog! Yay! It's like a game for masochists, which slows down my progress and makes me impotently shake my fist at the screen, as if hurling geriatric epithets to those damn kids who just egged my house again. Also, I'd like to figure out how to hide my text boxes and buttons, and to essentially create the interface for the start of the game (i.e. create a darkened screen with on-screen instructions to enter your initials, hit the button, and switch to the regular game-playing mode, to begin the epic battle 'twixt you and your foe)... </p>

<p>          o Week 6 Objective - ...which will hopefully free up the chance to get this thing working as a self-contained program able to played and downloaded over the internet. Before all that, I'd like to fix any of the previous problems still relentlessly pouring forth their illogical filth unabated. Concerning the networking, I first would like to figure out where to start on this terrifying venture, and to begin completing the necessary steps to realize this objective... </p>

<p>          o Week 7 Objective - ...which, despite jumping the gun here, should continue unabated by previous woes, though I won't rule out constant occurances of figuring out 1) what the hell is wrong with this, 2) why the shit that won't work, and 3) how the f*ck do I do this, seriously, I'm ready to punch myself in the face until I'm pleasantly numb and cannot feel the vertigo of plunging self-esteem because this code won't work AAAARRRRRRGGGGGGGHHHHHHHHH. Or, something to that effect. AN ASIDE: The Epiphany Machine, discussed originally as a possible improvement project, will probably fade into the annals of my deteriorating memory as a useless and one-time foray into Physical Computing, though perhaps, one day in the future, my innate tendency for mental S&M will emerge and I will try to finish the project (out of spite, certainly). </p>

<p></p>

<p><strong>Updated 10/8/2006:</strong></p>

<p>Processing Code:</p>

<p><em>(Dots and Boxes Tab)</em></p>

<p>//Dots and Boxes<br />
                //By Jim McMahon</p>

<p>PFont regNameFont;<br />
int numX = 15;  //how many grid circles across<br />
int numY = 20;</p>

<p>things[] mythings = new things[numX*numY];  /* This is an array of "things" (called "mythings"), which are of class "things" (the class which describes<br />
characteristics these "things" have together*/</p>

<p>int w = 480;  //Width of grid area in pixels<br />
int h = 630;</p>

<p>int spacex = w/numX;  //spacing between grid circles<br />
int spacey = h/numY;</p>

<p>color lightGray = 150;  //One choice of color</p>

<p>int player1NumSquares = 1;  //This will increment itself by one (to keep score)<br />
int player2NumSquares = 1;</p>

<p><br />
void setup() // Do all this just once.<br />
{<br />
  regNameFont = loadFont("Zapfino-18.vlw");<br />
  <br />
  size(510,750);  //size of our battlefield<br />
  smooth();  //Anti-alias, mofo'<br />
  <br />
  int gridcx = 0;  //Keep in mind that the dependant "class" uses these variables.<br />
  int gridcy = 0;<br />
  int c = 0;<br />
   <br />
  while(gridcx < numX)<br />
  {<br />
    while(gridcy < numY)<br />
    {<br />
      mythings[c] = new things(30+gridcx*spacex,30+gridcy*spacey); //Out of the "mythings" array/basket, pick out "c" number of "things" (which<br />
      gridcy++;  //have coordinates of "x" and "y," which are defined above and change below).<br />
      c++;  // Increment "c" by one each time ("c" = itself plus one).<br />
    }<br />
    gridcy = 0;  // Changes y position of background circles.<br />
    gridcx++; // Changing this changes spacing between background circles.<br />
  }<br />
}</p>

<p><br />
void draw() // Draw this shit repeatedly.<br />
{<br />
  background(255);  // draws white background<br />
  fill(150);<br />
  textFont(regNameFont);<br />
  <br />
  textAlign(LEFT);<br />
  text("Player One...",30,670);<br />
  textAlign(LEFT);<br />
  text("Player Two...",30,720);<br />
  <br />
  for (int i = 0; i < mythings.length; i++) <br />
  {<br />
    /*  Apparantly, these conditions above and below (the "for" and "if" loops) are set up as "if myThings isn't a bogus<br />
    command, then trip the "if" command, which says "hey bitch, draw whatever's in "void drawThings()" (located<br />
    in the class).*/<br />
    if (mythings[i] != null) <br />
    {<br />
      mythings[i].drawThings();<br />
    }<br />
  }<br />
  keyPressed();<br />
  mouseOver();<br />
}</p>

<p><br />
void mouseOver()<br />
{</p>

<p>  int cindex = 0;<br />
  mythings[cindex].con1 = false;<br />
  mythings[cindex].con2 = false;<br />
  <br />
  for (int i = 0; i < mythings.length; i++)<br />
  {<br />
    if (abs(dist(mythings[cindex].gridcx,mythings[cindex].gridcy,mouseX,mouseY)) > abs(dist(mythings[i].gridcx,mythings[i].gridcy,mouseX,mouseY)))<br />
    {  /*if the Absolute Value of the Distance between the <br />
    */<br />
      cindex = i;<br />
    }<br />
   <br />
  }<br />
}</p>

<p><br />
void mousePressed() //Draw shit when mouse is clicked.<br />
{<br />
 <br />
  int cindex = 0;<br />
  for (int i = 0; i < mythings.length; i++)<br />
  {<br />
    if (abs(dist(mythings[cindex].gridcx,mythings[cindex].gridcy,mouseX,mouseY)) > abs(dist(mythings[i].gridcx,mythings[i].gridcy,mouseX,mouseY)))<br />
    {<br />
      cindex = i;<br />
    }<br />
  }<br />
 <br />
  if(key == 's' || key == 'S') <br />
  {<br />
    mythings[cindex].con1 = true;  //horizontal connector<br />
  }</p>

<p>  if(key == 'a' || key == 'A')  <br />
  {<br />
    mythings[cindex].con2 = true;  //vertical connector<br />
  }</p>

<p>  if(key == 'd' || key == 'D') <br />
  {<br />
    mythings[cindex].con3 = true;<br />
    if(mythings[cindex].con3 = true) <br />
    {<br />
      println("Player 1 score: " + player1NumSquares);<br />
      player1NumSquares++;<br />
    }<br />
  }</p>

<p>  if(key == 'k' || key == 'K') <br />
  {<br />
    mythings[cindex].con1 = true;<br />
  }</p>

<p>  if(key == 'j' || key == 'J') <br />
  {<br />
    mythings[cindex].con2 = true;<br />
  }</p>

<p>  if(key == 'l' || key == 'L') <br />
  {<br />
    mythings[cindex].con4 = true;<br />
    if(mythings[cindex].con4 = true) <br />
    {<br />
      println("Player 2 score: " + player2NumSquares);<br />
      player2NumSquares++;<br />
    }<br />
  }<br />
}</p>

<p>void keyPressed() // Draw shit when pressing certain keys.<br />
{<br />
  /*<br />
  //Player 1 Controls<br />
  <br />
  if(key == 'a' || key == 'A') <br />
  {  //if you press the "a" key, draw a vertical line that moves with the mouse<br />
    stroke(25,25,25,115);<br />
    strokeWeight(3);<br />
    line(mouseX,mouseY,mouseX,(mouseY+30));<br />
  }<br />
  <br />
  if(key == 's' || key == 'S') <br />
  {  //if you press the "s" key, draw a vertical line that moves with the mouse<br />
    stroke(25,25,25,115);<br />
    strokeWeight(3);<br />
    line((mouseX),mouseY,(mouseX+30),mouseY);<br />
  }<br />
  */<br />
  if(key == 'd' || key == 'D') <br />
  {  //if you press the "d" key, draw a box that moves with the mouse<br />
    noStroke();<br />
    fill(lightGray);<br />
    rectMode(CORNER);<br />
    rect(mouseX,mouseY,spacex-15,spacey-15);<br />
    noFill();<br />
  }<br />
  /*<br />
  //Player 2 Controls<br />
  <br />
  if(key == 'j' || key == 'J') <br />
  {  //if you press the "a" key, draw a vertical line that moves with the mouse<br />
    stroke(25,25,25,115);<br />
    strokeWeight(3);<br />
    line(mouseX,mouseY,mouseX,(mouseY+30));<br />
  }<br />
  <br />
  if(key == 'k' || key == 'K') <br />
  {  //if you press the "s" key, draw a vertical line that moves with the mouse<br />
    stroke(25,25,25,115);<br />
    strokeWeight(3);<br />
    line((mouseX),mouseY,(mouseX+30),mouseY);<br />
  }<br />
  */<br />
  if(key == 'l' || key == 'L') <br />
  {  //if you press the "d" key, draw a vertical box that moves with the mouse<br />
    noStroke();<br />
    fill(lightGray);<br />
    rectMode(CORNER);<br />
    rect(mouseX,mouseY,spacex-15,spacey-15);<br />
    noFill();<br />
  }<br />
}</p>

<p> <br />
  /*<br />
  int g = 0;<br />
  int h = 0;<br />
  int m = 0;<br />
  int n = 0;<br />
 <br />
  Here, whenever you click the mouse, you're changing con1 (connector 1) to "true" (which activates con1 code),<br />
  and telling the program, through the use of that damn-ass "mythings" array, to draw con1 (connector 1) at the specified<br />
  area on the grid.<br />
 <br />
  The area on which the connector is drawn is dependant upon the integer's value it uses, where multiples of 10 are<br />
  displayed on top of grid, and anything somewhere below.  Instead of counting left to right on the grid, you should<br />
  count from top-to-bottom, then move one column left and count top-to-bottom, and so on.*/<br />
 <br />
  //mythings[g].con1 = true;<br />
  //mythings[h].con2 = true;<br />
  //mythings[m].con3 = true;<br />
  //mythings[n].con4 = true;<br />
  //g++;  //This causes con1 (connector 1) to be drawn at the next array position; g++ or whatever you call it besides "g"<br />
        //basically means "draw at a certain place, represented by (array #) 8 (or 9, or wherever the fuck you want the<br />
        //position), AND THEN increment the array number by one so it draws at the next position, represented by the<br />
        //previous array number plus one."<br />
  //h++;</p>

<p><br />
<em>(Class "things" Tab)</em></p>

<p>class things <br />
{ <br />
  int gridcx, gridcy; // position of me // seems to be just variables that depend on global definition<br />
  boolean con1 = false; // defines if I should draw connector<br />
  boolean con2 = false; // defines if I should draw other connector<br />
  boolean con3 = false;<br />
  boolean con4 = false;  //see bottom<br />
 <br />
  things(int _gridcx, int _gridcy) <br />
  {<br />
    gridcx = _gridcx;   // This is passed into a set "class variable" near top of code.<br />
    gridcy = _gridcy;<br />
  }<br />
 <br />
  void drawThings() {           //  Drawing number of "connector" (aka con1 and con2)//And setting up the "drawThings"<br />
   <br />
    color lightGray = 150;<br />
    //int gridcx = 30;  //starting x position of grid circle/point<br />
    //int gridcy = 30;  //starting y position of grid circle/point<br />
    int gridcdiam = 5;  //diameter of grid circle<br />
    int spacex = w/numX;  //spacing between grid circles<br />
    int spacey = h/numY;<br />
    <br />
    noStroke();<br />
    ellipseMode(CORNER);        //  function to begin with, as well as drawing those grid circles in the background.<br />
    fill(lightGray);<br />
    ellipse(gridcx,gridcy,gridcdiam,gridcdiam);    //  This is a drawing of just one ellipse that appears in the background, starting at (0,0), and which<br />
   <br />
    if (con1) {                      //  gets called a bunch of times by the array things.<br />
      // Do the drawing for connector 1.<br />
      //(horizontal)<br />
      stroke(25,25,25,100);<br />
      strokeWeight(3);<br />
      line(gridcx+5,gridcy+3,gridcx+35,gridcy+3);<br />
      noFill();<br />
      noStroke();<br />
     <br />
    }<br />
    if (con2) <br />
    {<br />
      // Do the drawing for connector 2.  <br />
      //(vertical)<br />
      stroke(25,25,25,100);<br />
      strokeWeight(3);<br />
      line(gridcx+3,gridcy+3,gridcx+3,gridcy+35);<br />
      noFill();<br />
      noStroke();<br />
    }<br />
    <br />
    if (con3) <br />
    { //this is your victory box.  Everybody dance now!  Everybody dance NOW.<br />
      noStroke();<br />
      fill(lightGray);<br />
      rectMode(CORNER);<br />
      rect(gridcx+2,gridcy+2,spacex+2,spacey+2);<br />
      <br />
      smooth();<br />
      fill(150);<br />
      textFont(regNameFont);<br />
      textAlign(RIGHT);<br />
      text("..." + abs(player1NumSquares-1),480,670);<br />
      <br />
      noFill();<br />
    }<br />
    <br />
    if (con4) <br />
    { //this is your victory box.  Everybody dance now!  Everybody dance NOW.<br />
      noStroke();<br />
      fill(lightGray);<br />
      rectMode(CORNER);<br />
      rect(gridcx+2,gridcy+2,spacex+2,spacey+2);<br />
      <br />
      smooth();<br />
      fill(150);<br />
      textFont(regNameFont);<br />
      textAlign(RIGHT);<br />
      text("..." + abs(player2NumSquares-1),480,720);<br />
      <br />
      noFill();<br />
    }<br />
  }<br />
}<br />
    <br />
    <br />
    <br />
    <br />
    /*if (con3) {  old con3 and 4)<br />
  //vertical line moved 30 spaces from con2<br />
      stroke(25,25,25,100);<br />
      strokeWeight(3);<br />
      line(gridcx+35,gridcy+3,gridcx+35,(gridcy+3)+30);<br />
      noFill();<br />
      noStroke();<br />
    }<br />
    if (con4) {  //this is your victory box.  Everybody dance now!  Everybody dance NOW.<br />
 <br />
      stroke(0,0,0,175);<br />
      fill(lightGray);<br />
      rectMode(CORNER);<br />
      rect(gridcx+2,gridcy+2,spacex-15,spacey-15);<br />
      noFill();<br />
      <br />
    }*/</p>

<p><br />
The basic idea for my final is to continue working on the dots and boxes game, fixing and improving different aspects of the project to improve aesthetics, performance, function, and to hopefully enable peer-to-peer communication via server/client relationships across the internet.  I want to accomplish a simple two-way communication before I tackle the internet issue.  See below:</p>

<p><img alt="client_server.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public.html/blog/client_server.jpg" width="350" height="403" /></p>

<p>This is where I am at the moment:</p>

<p><img alt="original_web.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public.html/blog/original_web.jpg" width="400" height="489" /></p>

<p>Some examples of changes I intend to implement in the game include:</p>

<p>- Placing text on actual gameboard/grid to keep score and display players' names<br />
- Allow players to type in their initials, which attach to specific players' boxes, and to type in their names instead of being called "Player One/Two," as seen in this example:</p>

<p><img alt="moved_type.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public.html/blog/moved_type.jpg" width="400" height="489" /></p>

<p>- Allow for different-sized gameboard/grids so players can choose how "big" they want their game, as seen below:</p>

<p><img alt="diff_sizehoriz.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public.html/blog/diff_sizehoriz.jpg" width="500" height="193" /></p>

<p><img alt="diff_sizevert.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public.html/blog/diff_sizevert.jpg" width="400" height="497" /></p>

<p>- Attempt to allow players the choice of different background/dot/boxes/bar colors, and to possibly incorporate images into it (such as bones instead of bars, or baseballs instead of dots?); see below:</p>

<p><img alt="custom_colors.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public.html/blog/custom_colors.jpg" width="400" height="496" /></p>

<p>- Provide small sample of sound effects in game (perhaps some satisfying clicking-type noise when bars are laid down on grid, etc.) and have the option to turn said effects on or off<br />
- Get rid of mouse cursor while inside grid<br />
- Perhaps design some sort of logo or decoration for game in lower right corner</p>

<p>MATERIALS:  Processing, image-editing programs (Photoshop, Illustrator, etc.), java coding environment, web browsers, freakishly unhealthy amounts of caffeine</p>

<p>Such is my goal, that which you have just read.  It seems daunting and scary to me, but hopefully should be accomplished to my satisfaction.  In the future, I'd like to provide game mechanic options, such as forcing boxes to close by opposing player if previous player makes a third bar, or to force a player to wait until the other has gone before they can take their turn.  </p>

<p>In strange late-night hallucinatory states, I have dreamt of enabling some sort of video capture and playback to allow the background of the game to be an active video capture of the opponent's face, but I think the option of trash-talking your opponent (admittedly what I was thinking of when this epiphany occurred) would be better achieved through the use of some kind of Instant Messaging system complimenting the game.  Other thoughts include the option of allowing the computer to randomly slap down a bunch of bars in random areas, to speed up typical slow first halves of games and allow player's to test their skills in random situations.</p>

<p>This, in essence, is my final project for ICM.  The board is set.  The pieces are moving...</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2006/11/icm_final_concept_dots_and_box.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2006/11/icm_final_concept_dots_and_box.html</guid>
         <category>Interactive/Gaming</category>
         <pubDate>Fri, 17 Nov 2006 10:55:40 -0500</pubDate>
      </item>
            <item>
         <title>Physical Computing - Lab One</title>
         <description><![CDATA[<p><strong>PComp Lab 1</strong><br />
<img alt="3V_across_close2.jpg" src="http://itp.nyu.edu/~jfm360/blog/home/jfm360/public_html/blog/3V_across_close2.jpg" width="400" height="300" /></p>

<p>/home/jfm360/public_html/blog<br />
[Pic of 1st circuit]<br />
[pic of voltimeter]<br />
questions:</p>

<p>1) Is the regulator that we pulled out of Jim’s bag a 5V regulator?</p>

<p>[pic of 5V] Yes</p>

<p>2) We measured the voltage across the switch at 3.37 at the 20V setting. This means that when open (off), the switch had 3.37  volts across. When closed (on), the voltage dropped to 0. If the multimer is in parallel with the switch, then why would the voltage drop? Wouldn’t only the current drop? Our understanding of the circuit is that the voltage stays constant across the circuit - at the point where the led touches ground, there should still be 5V running through, albeit at a near zero current. </p>

<p>3) We get two different readings: from the outside of the switch to ground, we get 5V (as expected). From the outside of the switch to the inside of the switch (ie “across” the switch) we get 3.37. Shouldn’t the full 5V be read across the switch?<br />
[pics 5 v outside, close, 3v across, 3vclose]</p>

<p>4) The math behind the circuit: If the voltage is capped at 5V b/c of the regulator, and we know the resistor is 220 Ohms, then we should be able to calculate the current being pulled across the LED.</p>

<p>Voltage = Current X Resistance<br />
V = IR<br />
5=X220<br />
X = .0227 Amps</p>

<p>22.7mA</p>

<p>Is this correct?</p>

<p><br />
Circuit: LED’s in Series</p>

<p>We got 2.6 V across each LED, which is roughly 50% above their rated capacity. Hmm… makes me wonder at what voltage they would actually stop functioning. Let’s not find out.</p>

<p>3 LED’s in series? </p>

<p>Prediction: will NOT light up, as their cumulative voltage is 5.1, more than the 5V regulator allows.</p>

<p>Test: Yup (pic)</p>

<p><br />
Circuit: LED’s in Parallel</p>

<p>Maybe it’s because we don’t a switch wired into this circuit, and therefore our LED’s have spent a considerable about of time with wll more than 1.7V flowing through them, but the fact is that we are getting a very high reading for milliamps across the LEDs – almost 70! What gives? Are we doing it wrong? We have one needle contacting the leading edge of one LED (connected to the circuit), and the other needle is touching the leading edge of another LED (not connected to the circuit). Both LED’s have their back pin connected to the circuit.</p>

<p>5. Generating a Variable Voltage with a Potentiometer</p>

<p>Just making sure we understand exactly the mechanics behind the potentiometer, we decided to take one apart. It helps to actually see the prongs moving away from the power, looking at the physical distance the electricity has to travel on the graphite (?) disc.<br />
 [pic pot deconstruct]</p>

<p>We get an easy to control variable Voltage reading that peaks at 3.36V. Is this because out of 5V available, 1.7 is taken by the LED, leaving 3.3V? Does that mean that the resistor does not affect the voltage, ONLY the current? Hmmm…<br />
</p>]]></description>
         <link>http://itp.nyu.edu/~jfm360/blog/2006/11/birth_pangs.html</link>
         <guid>http://itp.nyu.edu/~jfm360/blog/2006/11/birth_pangs.html</guid>
         <category>Interactive/Gaming</category>
         <pubDate>Wed, 01 Nov 2006 21:46:09 -0500</pubDate>
      </item>
      
   </channel>
</rss>

