<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Ideas For Dozens</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/" />
    <link rel="self" type="application/atom+xml" href="http://www.urbanhonking.com/ideasfordozens/atom.xml" />
    <id>tag:www.urbanhonking.com,2008-04-13:/ideasfordozens//44</id>
    <updated>2010-08-31T04:36:21Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.0</generator>

<entry>
    <title>Towards a Notation System for Foosball</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/08/towards_a_notation_system_for.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.20182</id>

    <published>2010-08-31T04:35:48Z</published>
    <updated>2010-08-31T04:36:21Z</updated>

    <summary> This entry documents the fourth of my projects for this summer&apos;s ITP 4-in-4. 4-in-4s are occasional events entailing the execution of one complete project each day for four consecutive days. They&apos;re a great opportunity to finally do a daydream...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="4in4" label="4-in-4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="foosball" label="foosball" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  <em>
    This entry documents the fourth of my projects for this summer's <a href="http://itpedia.nyu.edu/wiki/4-in-4_Summer_2010">ITP 4-in-4</a>. 4-in-4s are occasional events entailing the execution of one complete project each day for four consecutive days. They're a great opportunity to finally do a daydream project you've been talking about for ages or to play with a new technology or technique you'd be meaning to try out.
  </em>
</p>


<p>
  Foosball is the national pastime of ITP. An old, beaten-up, much beloved table is a fixture on the floor and during semesters a game is almost always in progress, from busy daytime hours when the clunk of the ball adds to the overall noise of the floor to late night procrastination sessions when students round up whoever's around to play intense games meant to block out any thought of a looming deadline or mountainous pile of work.
</p>
<p>
  I'd played some foos before coming to ITP &mdash; most notably at UC Riverside with my cousins after a series of summer softball games &mdash; but, in my first year at ITP, I've become predictably obsessed: trying my best to learn from the masterful 2nd year players who, at the start of the year at least, routinely routed me.
</p>
<p>
  In the course of this foosball education, I began to come up with certain theories. For example, I noticed that players were divided into those who moved both hands between the handles (advancing to the 5-man and the 3-man when on offense, for example) and those who kept their left hand anchored at the goalie, only advancing with their right. I instinctually favored the latter approach, feeling that scoring opportunities were created for the other player whenever hands moved: a left hand-anchored approach minimized movement and hand-off-handle scoring opportunities. Similarly, I started to see that a lot of the best players shared a certain style of passing and shooting from the outside players of the 5- and 3-man rows that was especially effective. Also, a few players (most notably <a href="http://www.nullsleep.com/">Jeremiah Johnson</a>) used their lightning quick reflexes to play an aggressive kind of defense where, instead of simply blocking an opponent's attempt to move the ball forward, they'd slap it back at full speed, as if hitting it from their own possession (an especially deadly move against the opponent's defense where it frequently results in a goal).
</p>
<p>
  I started to wish for a formal vocabulary to describe these trends and ideas I was seeing and some structured way to test my hypotheses, a procedure that would allow me to transcribe and keep statistics on games in order to better understand them and discuss them. I realized that I needed a notation system like exists for chess or baseball, something analogous to the "1-6-3 double play" or " Bxd7+" (bishop to D7, check). And, on <A href="http://www.39forks.com/">Scott Wayne Indiana</a>'s suggestion, I sought a system that could be represented visually (like a baseball scorecard) to enhance transcription.
</p>
<p>So, for my final 4-in-4 project, I set out to design such a system.</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4933030604/" title="Foosball scorecard with annotations by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4143/4933030604_d246ff33f7.jpg" width="450" alt="Foosball scorecard with annotations" /></a>
</p>
<p>
  Starting from Scott's suggestion about the baseball scorecard, I started by designing a simple graphical representation of the foosball table. I then labeled each handle with a "B" or "W" (for Black or White) representing each side (at ITP, at least, the actual players can be nearly any color, having been repaired, replaced, and becostumed so frequently) and a number corresponding to how many players were attached to that row. Hence: B5 would be black's 5-man row and W1, white's goalie. Then, for the multi-man rows, I added letters for each man so that the notation system could also capture which specific man hit the ball. For example: "W3a" would mean that white hit the ball with the man furthest from them on their 3-man row.
</p>
<p>
  I also included the handles in the diagram because I knew that the position of the players' hands at the time of each contact with the ball was important data for exploring my theories about handle strategy. It also, when you have a series of events in sequence, turns out to give a really nice feeling of the momentum or drama of a moment of play. I didn't try to include the hand-on-handle positions in the written notation system as I wanted to make it easy and intuitively understandable. I'll present some real examples in a minute, but if I said: "W3a to W3c for the goal", you'd easily be able to picture a lateral pass between the two outside players on white's 3-man row followed by a scoring shot. All the extra cascade of notation that would be required to capture hand position would only water down that flavorful little bit of drama.
</p>
<p>
  Now: an example of the notation in action! I printed out a handful of sheets of paper filled with a grid of scorecards and recruited Mike Cohen and Jeff Howard to play. 
  </p>
  <p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4943455043/" title="Mike by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4136/4943455043_5b22cb6f2c.jpg" width="225" alt="Mike" /></a>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4943454443/" title="Jeff by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4100/4943454443_c09aba11c5.jpg" width="225" alt="Jeff" /></a>
</p>
  <p>
   I told them that, after each goal, I'd interrupt them to transcribe the events that led from from the last coherent possession to the goal. In theory, it would be great to transcribe an entire game and to do statistical analysis on the resulting data, but that would require adding sensors or a camera tracking rig to the foosball table (not that it hasn't had both of those things applied to it before, the thing bristles with the leavings of old class projects) and spending inordinate amounts of time getting the technology working rather than focusing on the notation which was the point of this project. I would love it if someone constructed a system for machine-generating this notation automatically at some point, but it was beyond the scope of this one-day project. With that in mind, I figured incidents of scoring were the most interesting thing to transcribe and also imminently doable.
</p>

<p>
  I designated Mike "Black" and Jeff "White" and had them kick things off. Before too long, Jeff scored the first goal. I had the players pause and reconstructed it thusly:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4932672969/" title="Jeff vs. Mike G1 by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4094/4932672969_f1d0c02fc1.jpg" width="500" height="201" alt="Jeff vs. Mike G1" /></a>
</p>
<p>
  <em><a href="http://www.flickr.com/photos/unavoidablegrain/4932672969/sizes/l/in/set-72157624696099969/">See the larger size on Flickr</a>.</em>
</p>
<p>
  This diagram might appear dense at first glance; let's break it down. First, look at the notations on the handles. White has his hands on W3 (the 3-man) and W5 (the 5-man), a position I soon dubbed "classic offense". Black is on B1 (the goalie) and B2 (the 2-man): "classic defense". Their hands stay in those positions for all four events of this play. Now, look at the red 'x' that moves between the four diagrams: at first between two of white's players and then into the goal. That's a fancy bit of passing on Jeff's part before the shot that scored; he knocked the ball laterally from the middle 3-man (W3b) to the one closest to him (W3c) and then back to take the shot. So, in the final notation, this play reads as: "W3b W3c W3b W!" (where "W!" reads as "White goal").
</p>
<p>
  You should be able to start to picture it in your head now: Jeff starts with control of the ball at the middle of his 3-man. Mike is back in defensive position. Jeff passes the ball to the side; Mike adjusts his defensemen to follow. Then Jeff passes it back to the middle, where he slaps it directly into the goal before Mike can recover. A classic bit of foosball strategy: using lateral passing between the 3-man to shake the defenders and create an opening for a goal.
</p>


<p>
  The game continued looking much like a whipping administered by Jeff who got up to a 6-0 lead before Mike scored his first goal. I'll revisit some of those earlier goals in a minute, but first I wanted to show another, even simpler, goal: #5 of the match:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4933401908/" title="Jeff v. Mike G5 by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4136/4933401908_c8d12eaa4e.jpg" width="500" height="417" alt="Jeff v. Mike G5" /></a>
</p>
<p>
  An incredibly straightforward goal: W3b W! with both players in "classic defense" and "classic offense" throughout. Jeff controlled the ball with the middle player of his 3-man handle and then shot it past Mike's goalie and 2-man and in.
</p>

<p>
  The goal immediately before that was nearly as simple. At this point, you should be able to imagine the whole story just from the notation: W5c B1 W!:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4932808295/" title="Jeff v. Mike G4 by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4120/4932808295_83f84ee4bc.jpg" width="500" height="271" alt="Jeff v. Mike G4" /></a>
</p>

<p>
  Now, let's talk about some goals that relate to the theories that set me off on this project in the first place, for example #6: W5c W!:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4932808361/" title="Jeff v. Mike G6 by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4095/4932808361_92efb28713.jpg" width="500" height="417" alt="Jeff v. Mike G6" /></a>
</p>
<p>
  At first glance, it looks nearly as simple as #5, just coming from W5 rather than W3. But look at the position of the handles in this exchange. Black starts off with his hands on B2 and B5. His goalie is untouched. White has control of the ball at W5. Black was caught in transition, right in the middle of trying to move his hands up towards "classic offense" when White got control of the ball at W5. The second position shows even more evidence of the chaos caused for Black by this reversed transition: he actually had only one hand on a handle at the time of W!: B5. His left hand was probably moving back towards B1, retreating in the face of White's sudden possession of the ball, but not yet having arrived to take charge of the goalie.
</p>
<p>
  And look at White's hand position by contrast: he's on W5 and W1. Probably starting from classic defense a few seconds earlier, he advanced only his right hand, keeping his left anchored on the goalie, making for maximum stability and speed during the transition play, which let him pound the goal in from midfield in the midst of Black's chaotic transition.
</p>
<p>
  Obviously, from the way I'm telling the story of this goal, I think it counts as evidence for my transition theory in favor of playing with a hand anchored at the goalie. And, in fact, the next goal in the match, Black's first, offers more evidence in support:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4932808399/" title="Jeff v. Mike G7 by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4073/4932808399_95d040379b.jpg" width="500" height="417" alt="Jeff v. Mike G7" /></a>
</p>
<p>
  This time, Black is anchored with his left hand on the goalie when he shoots, only having advanced his right hand to B5b to take possession. White is on W5 and W2, one of the weakest positions on the field: back on defense but with no anchor on the goalie and no hand on it to prevent deflections or allow for quick reactions. And, what's worse, as we can see from the hand positions in the second frame of this goal, White is also in transition: both of his hands move between B5b and B!, meaning, while the ball was in travel, he was, in fact, touching no handles. Black's hands have both also moved, but this has no bearing on the result of the play as he does not touch the ball again. In fact, if White had been able to prevent the goal, Black might have been left quite vulnerable to the kind of quick reversal we saw in goal #6 due to being in transition himself.
</p>
<p>
  This is a strong goal for Black and there's a reason it dramatically changed the momentum of the game. Up to this point, many of White's goals were scored in the position I've described as "classic offensive", i.e. with hands on W3 and W5. While this is an especially strong position for players (like Jeff) with lots of good fine shooting and passing skills (checkout <a href="http://www.flickr.com/photos/unavoidablegrain/4932808623/in/set-72157624696099969/">White's goal at #11</a> for example) it is also especially vulnerable to transition scoring if the opponent can kick the ball up field: from classic offense, you inherently have to move both hands in order to retreat at all, creating lots of transition time for an anchored opponent to pass or shoot. After this first occasion, Mike seemed to get into a rhythm in exploiting this weakness in Jeff's style: advancing the ball aggressively out of a seemingly defensive position and then proceeding to score while Jeff was forced to transition both hands back (<a href="http://www.flickr.com/photos/unavoidablegrain/4932808421/in/set-72157624696099969/">Goal #8</a> is another great example of this). Though Jeff would go on to win 10-5, Mike kept up goal-for-goal from this point, losing so badly only because of the nearly insurmountable lead Jeff had built up with those first series of goals.
</p>
<p>
  In fact, the second half of the game is replete with <a href="http://www.flickr.com/photos/unavoidablegrain/4932808569/in/set-72157624696099969/">bank shots from deep within Black territory (B2)</a>, <a href="http://www.flickr.com/photos/unavoidablegrain/4932808753/in/set-72157624696099969/">shots from B2 while White is still in classic offense</a>, and <a href="http://www.flickr.com/photos/unavoidablegrain/4932808867/in/set-72157624696099969/">combinations of both of those effects</a>.
</p>
<p>You can see all of the goals for this game notated <a href="http://www.flickr.com/photos/unavoidablegrain/sets/72157624696099969/with/4943455585/">in this flickr set</a>.</p>
<p>
  So, hopefully at this point I've demonstrated my notation system's virtues for recording and re-telling the story of a game as well as for making strategic and tactical arguments such as the one I've been rehearsing here about the importance of transition play and hand position.
</p>
<p>Given all of that, I did discover a few downsides to the system in using it for the first time. For example, my graphic doesn't include the foosholes so, if a goal was scored directly on foos, or if a machine was to attempt to transcribe a full game, that's a lack that would need to be addressed.</p>
<p>
  Also, as you can see from this picture:
</p>
    <p>
      <a href="http://www.flickr.com/photos/unavoidablegrain/4943455585/" title="Foosball scorecard by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4076/4943455585_38f36dedb5.jpg" width="500" height="335" alt="Foosball scorecard" /></a>
    </p>
    <p>
      The scoresheets that I printed out did not include the lettering and numbering key I've included in the graphics presented here. I was trying to keep things simple and minimal. The main problem with that decision was that there were no visual cues for reading the orientation of the sheet: a couple of times I got started notating only to realized that I had black and white reversed due to the symmetry of the sheet. So, when I print out further sheets, I think I'll use the notated version for clarity's sake.
    </p>
    <p>
      Another problem with the system is that it can occasionally be difficult to reconstruct complex interactions. Take, for example, this goal: W3c wall B1 W!
    </p>
    <p>
      <a href="http://www.flickr.com/photos/unavoidablegrain/4932808237/" title="Jeff v. Mike G2 by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4095/4932808237_c765ed0278.jpg" width="500" height="201" alt="Jeff v. Mike G2" /></a>
    </p>
    <p>
      Clearly, the ball bounced off the wall after White's shot in a manner that surprised and evaded Black's goalie. But, you don't quite get as vivid of a picture of the logic at play as you do with better structured goals. It's my suspicion (or at least my hope) that this kind of ambiguity would be greatest with goals resulting from "slop" &mdash; the disorganized caroming of the ball around the table and off random players without the meaningful intervention of human intention &mdash; which, I think, you could argue is actually a virtue of a notation system, which must inherently reduce, simplify, and structure the thing it describes.
    </p>
    <p>There was also a sense amongst the players that my notation didn't capture certain subtleties of particular goals, the angle of a shot that slipped in behind the goalie, for instance. This is definitely true, but again, I don't have a clear sense of how to capture that without making the notation system unwieldy. My intention is not to eliminate the need for human commentary, only to augment it and enhance its concision and clarity.</p>

 <p><b>Topics for future research</b>. Speaking of printing out further sheets, I plan to print out a handful of them and attach them to the ITP table so they'll be to hand for anyone who wants to sketch down a particularly interesting play or series of goals they see happening. I also plan to transcribe some additional games and to try to make a bit of a catalogue of signature plays and tactics that I've come across. And, of course, there's always the grand dream of machine transcription, which I intend to push on any unsuspecting first year looking for a topic for a camera tracking project or pcomp midterm.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Atari 2600 Cartridge Carved in Blue Foam</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/08/atari_2600_cartridge_carved_in.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.20175</id>

    <published>2010-08-26T03:51:58Z</published>
    <updated>2010-08-26T03:52:26Z</updated>

    <summary> This entry documents the second of my projects for this summer&apos;s ITP 4-in-4. 4-in-4s are occasional events entailing the execution of one complete project each day for four consecutive days. They&apos;re a great opportunity to finally do a daydream...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="atari" label="atari" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bluefoam" label="blue foam" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fabrication" label="fabrication" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  <em>
    This entry documents the second of my projects for this summer's <a href="http://itpedia.nyu.edu/wiki/4-in-4_Summer_2010">ITP 4-in-4</a>. 4-in-4s are occasional events entailing the execution of one complete project each day for four consecutive days. They're a great opportunity to finally do a daydream project you've been talking about for ages or to play with a new technology or technique you'd be meaning to try out.
  </em>
</p>

<p>
  For my second project, I wanted to carve something out of blue foam. I think blue foam carving is going to be a major ingredient in the work that I do at ITP this year and, while I know we'll be working with it in Materials and Building Strategies this coming semester, I wanted to get ahead start in familiarizing myself with it.
</p>
<p>
  For a subject matter, I chose an Atari 2600 cartridge. To understand why checkout <a href="http://www.urbanhonking.com/ideasfordozens/2010/03/atari_et_cartridge_3d_model_my.html">the 3D model of an Atari cartridge</a> I built for last winter's 4-in-4. That post explains the backstory behind my interest in the cartridges and the eventual thing I want to build with them. In the meantime, suffice it to say that making to-scale models of Atari cartridges has become something of a 'hello world' for me in new fab techniques.
</p>
<p>
  I started out by putting out a call on twitter for the correct dimensions of an Atari cartridge. Unsurprisingly, <a href="http://twitter.com/nocarrier/status/22103806934">Don Miller</a> wrote back almost immediately with the answer. He had one to hand and simply measured.
</p>
<p>
  <img src="http://img.skitch.com/20100826-bwar85wdprhcs9387a689wpt8a.jpg" width="450px" />
</p>
<p>
  Once I had the dimensions, I measure them out and drew them onto my piece of blue foam with sharpie.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4927893289/" title="blue foam with drawing on side by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4143/4927893289_53e4c0d4cd.jpg" width="450px" alt="blue foam with drawing on side" /></a>
</p>
<p>
  I then used a small handsaw to cut the basic rectangle loose from the large sheet of foam. The resulting rectangle was the right basic size as the cartridge but had an extremely rough surface texture and was lacking the rounded corners and the other few design details of a real cartridge.
</p>
<p>
  With a metal file, I set out to smooth the rectangle's surface and to add the rounded corners on its side.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4927894627/" title="corners rounded by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4118/4927894627_79c512cbdd.jpg" width="450px" alt="corners rounded" /></a>
</p>
<p>
  You can see from that picture that the far side of the cartridge got a little off square in the process. I also had a relatively hard time getting a nice smooth surface on the foam. As I'd file thing would sometimes get smooth, but when I applied to much pressure, the foam would seem to come apart a little in all directions, leaving a rough, ugly surface.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928489294/" title="top with rounded corners by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4098/4928489294_f8d677b39e.jpg" width="450px" alt="top with rounded corners" /></a>
</p>
<p>
  I was, however, able to shape a nice bevel that really reminded me of the real cartridges.
</p>
<p>
  I then set out to carve out the slight cutaway on the front of the cartridge in which (in a real cartridge) a sticker with the game art sits. 
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4927895503/" title="sticker inlay unsanded by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4136/4927895503_c3f29a52d2.jpg" width="450" alt="sticker inlay unsanded" /></a>
</p>
<p>
  Here you can see the texture of the carved away area before sanding.
</p>
<p>
  At first I couldn't figure out how to sand down into a cutout like that since the files I'd been using for the rest of the process wouldn't reach. Hunting around, I found what became the perfect tool for blue foam work: a sandpaper-covered wedge of squishy foam:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928492002/" title="sandpaper-covered foam by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4118/4928492002_b3f0c80378.jpg" width="450px" alt="sandpaper-covered foam" /></a>
</p>
<p>
  Using this tool, I was able to get down into the sticker cutaway and sand it relatively smooth.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928491210/" title="sticker inlay sanded by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4101/4928491210_a5a258fdc8.jpg" width="450px" alt="sticker inlay sanded" /></a>
</p>
<p>
  At this point I added the cutaways on the top and bottom of the cartridge (at the top for another sticker, at the bottom to expose the actual circuit board that interfaced with the console itself) and struggled to sand them.
</p>
<p>
  Finally, I used the hand saw to carve a seam that runs all the way around the cartridge, which, in the original, is produced by it being constructed of two separate pieces of plastic that join imperfectly.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928492252/" title="side slot by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4123/4928492252_853aa4d47e.jpg" width="450px" alt="side slot" /></a>
</p>
<p>
  This first attempt at a cartridge was ok, but had some major flaws. The shape was slightly irregular and the surfaces were rough, the cutouts especially so.
</p>
<p>
  I did some googling and read some online advice about working with blue foam (something I'd resisted doing before starting, wanting to get a clean experience of the material's behavior). I immediately discovered that I was on the right track with the sandpaper foam: lots of sanding was recommended for getting smooth surfaces. Further, sanding slowly, with low pressure, and in only one direction was recommended for preventing the foam's surface from breaking up like I experienced. And, finally, pre-starting cuts with a sharp knife was recommended as a way of keeping them from getting ragged.
</p>
<p>
  So, keeping all of this advice in mind, I set out to make a second cartridge. After a few false starts getting the basic proportions correct when cutting the raw rectangle out of the block of foam, my second cartridge came out much better than my first. 
</p>
<p>
  Smoother bevel and finish all around:
</p>
<p><a href="http://www.flickr.com/photos/unavoidablegrain/4928493276/" title="round and smoot side by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4116/4928493276_db7ce1061a.jpg" width="450px" alt="round and smoot side" /></a></p>
<p>
  Tighter cut for neater corners in the inlays (both cut with an exacto):
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928493530/" title="2nd cartridge: top by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4138/4928493530_d8cce2ecbf.jpg" width="450px" alt="2nd cartridge: top" /></a>
</p>
<p>
  Comparing the two side-by-side you can really see the improvement in control and surface on the second piece:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928494400/" title="front comparison by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4139/4928494400_b5cd565845.jpg" width="450px" alt="front comparison" /></a>
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4927899431/" title="top comparison by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4101/4927899431_4b956db3f1.jpg" width="450px" alt="top comparison" /></a>
</p>
<p>
  Obviously I still have a long way to go in improving my blue foam carving, but today was a satisfying start.
</p>
<p>
  Two thoughts to end with. First, out of all the tools I had available...
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4927899829/" title="tools by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4139/4927899829_17806d8952.jpg" width="500" height="450px" /></a>
</p>
<p>
  ...the simple hand saw was best for cutting basic shapes (though if I'd gone so far as to use power tools for that, they might have proved far superior &mdash; and a lot of online resources recommend hot knives or wire for that stage in the process), the exacto for starting detailing, and the sanding block for finishing and shaping.
</p>
<p>
  And, this may be obvious, but: blue foam gets everywhere! It's messy and clingy and, apparently, even not the greatest thing to breathe. Regardless, I plan to become much more intimately familiar with it in the coming months. So, my future is likely to look a lot like this:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4928495488/" title="Blue foam dust gets everywhere by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4080/4928495488_e06bd5d7e4.jpg" width="335" height="500" alt="Blue foam dust gets everywhere" /></a>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>ITPoogle: An ITP-Specific Search Engine</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/08/itpoogle_an_itpspecific_search.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.20173</id>

    <published>2010-08-25T15:45:43Z</published>
    <updated>2010-08-25T16:02:23Z</updated>

    <summary> This entry documents the first of my projects for this summer&apos;s ITP 4-in-4. 4-in-4s are occasional events entailing the execution of one complete project each day for four consecutive days. They&apos;re a great opportunity to finally do a daydream...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="search" label="search" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  <em>
    This entry documents the first of my projects for this summer's <a href="http://itpedia.nyu.edu/wiki/4-in-4_Summer_2010">ITP 4-in-4</a>. 4-in-4s are occasional events entailing the execution of one complete project each day for four consecutive days. They're a great opportunity to finally do a daydream project you've been talking about for ages or to play with a new technology or technique you'd be meaning to try out.
  </em>
</p>
<p>
  Unsurprisingly, the ITP community has a lot of places it posts information online. There's the homeship, <a href="http://itp.nyu.edu">itp.nyu.edu</a>, with all its offshoots, such as <a href="http://itp.nyu.edu/physcomp/">the pcomp site</a> and <a href="http://itp.nyu.edu/itp/people/people.php">the people directory</a>. There's hundreds of student blogs, dozens of class sites, even our own wiki: <a href="http://itpedia.nyu.edu">ITPedia</a>. 
</p>
<p>
  This is totally to be expected in a contemporary, technically literate, information-generating organization. The problem is: how to navigate it all? When you're looking for a specific piece of information &mdash; that tutorial about motors your classmate mentioned or a list of which alumni have previously worked with animatronics &mdash; it can become quite laborious to browse one-by-one through each of the many ITP-related sites. And a general Google search will tend to bury the ITP needle in a large stack of non-ITP hay.
</p>
<p>
  Considering this, it occurred to me that what we needed was an ITP-specific search engine. Such a tool would let students explore and hunt across all the program's varied online resources from one familiar interface.
</p>
<p>
  The problem is that, having done it <a href="http://grabb.it">before</a>, I know from personal experience that building a search engine is no quick hack. However, I realized that, using the AJAX API for Google site search, I could easily put together a prototype of an ITP-specific search engine that would do at least part of the job &mdash; enough, hopefully, to discover if such a thing would be useful enough to consider building for real.
</p>
<p>
  Hence, I would like to present: <a href="http://itpoogle.com">ITPoogle.com</a>, the ITP-specific search engine. Enter a query and ITPoogle presents results in three columns: one from ITPedia, one from itp.nyu.edu (which includes all student blogs and class websites hosted on that domain), and a third from a growing list of class syllabi and other resources past and present on other domains.
</p>
<p>
  <img src="http://img.skitch.com/20100825-qjc1egr1dgigbwcyek98bwmdg1.jpg" width="450px" />
</p>
<p>
  I'll spend the rest of this post briefly discussing how I built ITPoogle since I think it's an interesting case study of using AJAX to explore interface and tool design quickly without having to setup any server components whatsoever.
</p>
<p>
  I'd built a similar site in this style once before: <a href="http://rtumblr.com/">rtumblr</a>, another Google search mashup, this one designed to help Tumblr users find people who were reblogging them, a service Tumblr itself inexplicably fails to provide. I wrote up <a href="http://urbanhonking.com/ideasfordozens/2009/02/rtumblr_find_your_rebloggers.html">a full post about rtumblr</a> at the time and if you read it and follow the links, you'll see that I'd built myself a few interesting tools for creating dynamic single-page sites in javascript: a library for handling templating, one for routing URLs, etc.
</p>

<p>
  In the year and a half since I built rtumblr, I met the great <a href="http://www.quirkey.com">Aaron Quint</a>, and discovered that he'd also been thinking about dynamic, single-page javascript-driven sites. And AQ had taken the idea much further than I had, developing the full-featured and quite cool <a href="http://code.quirkey.com/sammy">Sammy.js</a>, a framework for solving exactly the common problems of these types of sites: routing, events, templating. 
</p>
<p>
  So, I decided I'd use Sammy.js as the basis for ITPoogle. I started the project by writing a simple HTML page with a search form, installing jQuery and Sammy.js on it, and getting Sammy configured to handle search URLs. The idea was to be able to provide permalinks for searches so that people can share results pages (like this: <a href="http://itpoogle.com/#/search/4-in-4">http://itpoogle.com/#/search/4-in-4</a>) even though the site is pure javascript. Sammy's routing API makes stuff like that super easy; the basic outline of the code looks like this:
</p>
<pre>
var app = $.sammy(function() {
  this.get('#/search/:q', function() {  
    // do stuff here with params['q']
  };
}

$(function() {
  app.run();
});
</pre>
<p>
  And then I simply used jQuery to take over the submit event on my search form to change the URL, re-triggering Sammy's routing ("#q" here is the id of the input where the user enters their search query):
</p>
<pre>
$("#search").submit(function(){
  window.location.hash = "#/search/" + encodeURI($("#q").val());
  return false;
});
</pre>

<p>
  Once I had the basic structure of the page in place, the next step was to start running the Google searches. I'd already written the start of a wrapper around the Google AJAX Search API when creating rtumblr, so I decided to extract that out into a library I called <a href="http://github.com/atduskgreg/Giggle">Giggle</a>. Giggle is a relatively straightforward aid to using the Google Search API. It handles things like composing queries, iterating through pages of responses, and packaging the results into something convenient.
</p>
<p>
  Initially, I built Giggle naively as a singleton object, but I quickly realized that doing so meant the danger of having results get intermingled when conducting multiple different searches simultaneously. So, I spent some time getting the scope right within Giggle so that I could create multiple instances of it, each of which could fire off their own searches without polluting the results coming from the others. 
</p>
<p>
  The advanced features of Javascript scope like this always trip me up when I come back to it after a break but it's not too complicated once you remember how it works.
  </p>
  <p>
  In the end the Giggle API ends up looking like this:
</p>
<pre>
var search = new Giggle();

search.q("ITP", {title: "ITP"}, function(results, locals){
  console.log(locals.title);
  console.log(results);
})
</pre>
]]>
        
    </content>
</entry>

<entry>
    <title>Lessons from Big Games for Mobile Web Apps</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/06/lessons_from_big_games_for_mob.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19983</id>

    <published>2010-06-08T04:14:55Z</published>
    <updated>2010-06-08T13:50:57Z</updated>

    <summary>This weekend I served as a judge for Come Out and Play, an experimental urban games festival held in a different location around New York every year. During the course of the festival, I had an experience that I think...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="biggames" label="big games" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="iphone" label="iphone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webapp" label="web app" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>This weekend I served as a judge for <a href="http://www.comeoutandplay.org/">Come Out and Play</a>, an experimental urban games festival held in a different location around New York every year. During the course of the festival, I had an experience that I think might be worth describing for developers thinking about the native apps vs. web apps debate. It was an experience that confirmed everything that's lead me to want to learn to build iPhone apps rather than sticking with web apps for mobile development.</p>

<p>One of the games, called <a href="http://www.playpathfindr.com/">Pathfindr</a>, was billed as "The Amazing Race" meets "Foursquare." They said in advance that it required an iPhone or Android phone to play. They'd built a web app that used javascript APIs to access the phone's location, then they used that to check if you were close enough to the series of checkpoints and questions that made up the game terrain. Your typical treasure hunt.</p>

<p>The experience of trying to play this game pointed out everything that is inferior about the web app experience vs. the native experience. And not as minor technical annoyances, but in a way that completely ruined the experience of the game.</p>

<p><em>(Note: none of what follows is meant as a criticism of Pathfindr's developers. I think they are diligent individuals who's only mistake was naively believing all of the hype around web apps as a solution for mobile development. In fact the game works so well as a case study because they seem to have done everything exactly how the current conventional wisdom would have them do it.)</em>
</p>

<p>
  The app consisted of a series of menus, styled to resemble native iPhone UI, through which you signed up for the site with an email address and password and chose which game iteration you wanted to join or resume (they'd run Pathfindr once before in Minneapolis as a tour of notable locations in the life of F. Scott Fitzgerald). Once you reached a game, the play took place on a satellite map where a set of markers appeared noting three checkpoints that you had to visit in turn and a series of questions you had to answer along the way about things in the local environment. In order to eliminate a checkpoint or answer one of the questions, you had to get within a certain distance of the marker on the map and then tap that marker. The map also displayed the blue iPhone-style "you are here" indicator. The game took us an hour and a half to complete and stretched from the <a href="http://brooklynlyceum.com/">Brooklyn Lyceum</a>, where the festival was based, all the way to Grand Army Plaza at the entrance of Prospect Park.
</p>

<p>
  Here is a rundown of the technical problems we encountered in the course of the game:
</p>

<p>The web app was slow. Pages took a long time to load from the server with each new question or with new map tiles when you tried to move around the map. This was not caused by the rate of the iPhone 3G connection (other pages, such as Google, loaded perfectly rapidly), but because of the 20 or 30 people simultaneously accessing the site over-and-over. The problem was worst when all the teams were standing together and trying to register at the start of the game and was slightly mitigated over the course of 90 minutes as we spread out around the course.</p>

<p>The app was unresponsive. Dragging and zooming around the map was sludgy and painful. Redraws took forever.</p>

<p>The GPS location was jumpy and inaccurate. Far worse than I've ever seen it in the iPhone Maps application or any native iPhone app that uses location.</p>

<p>The app sucked battery life. In an hour and a half of playing it killed one phone completely dead from about a 30% charge and was close to killing a second one.</p>

<p>The app's map UI was non-standard and confusing. It used satellite-only tiles which made navigation difficult; accidentally tapping the blue "you are here" dot would zoom the map all the way out, which was extremely annoying; it had extra chrome within Mobile Safari's chrome leaving only tiniest number of pixels available for the actual map.</p>

<p>At one point, someone in our team accidentally closed the app's tab while trying to do a google search as part of the game. We had to suffer through lost state within the game that required four or five page loads to get back to where we were and hence about 5 minutes of sitting still with 5 people all hovering around a phone.</p>

<p>Overall, the sludginess of the web app experience meant that, in a game designed to take us out into the neighborhood, make us more attentive to the landmarks around us, and force us to collaborate with a group of strangers, we spent a large amount of the time staring at the phone's tiny screen, waiting for pages to load. The technology's flaws overcame the game's virtues and severely damaged the experience.</p>

<p>I'm sure mobile web app performance experts could explain a number of ways in which Pathfindr's developers could have improved their app to avoid some of the problems I mention here. However, one of the main talking points for mobile web apps is always that developers "already know how to make them". And talking to the one of the developers after the game, he touted the fact that they'd been able to build the first version of the game platform in only a few days' development time. If there are a bunch of new skills that an average web developer will have to learn to build an effective mobile web app, then that goes a long way to mitigating the advantages of their existing experience and it makes the argument for web apps seem a lot more like an argument for familiarity rather than ease of use.</p>

<p>
  Again, the Pathfindr team was professional and polished. Their app had obviously been the subject of a great deal of loving care. Give them the benefit of the doubt. The problems with the app didn't derive from their incompetence, but from current limits in mobile browser technology in this kind of situation.
</p>

<p>Also, as someone who's just started learning iPhone development, there was nothing in the game that was beyond the level of the first four or five chapters of a good intro iPhone development book, for example <a href="http://www.amazon.com/iPhone-Programming-Ranch-Guide-Guides/dp/0321706242">Big Nerd Ranch's iPhone Programming Guide</a>, which I'm currently in the process of working through.</p>

<p>In less than a weeks' time, a dedicated developer just getting started on the iPhone could have built a native app with much the same functionality as Pathfindr's web app that would not have suffered from any of the problems I describe above. And for an experienced iPhone dev, the process would have been more like the one or two days Pathfindr themselves took.</p>

<p>
  I can't speak for Android, but at least in the case of iPhone development, as a newbie iPhone dev and a highly experienced web dev, I think the idea that native development is so much more difficult than web development is largely FUD. While native development means learning Java or Objective-C and getting up to speed with someone else's large API, there's no server to maintain on an ongoing basis, there's only one language rather than the three or four that are typical for a web application (HTML, CSS, Javascript, and at least one server-side language), and there are no scaling issues to consider with the acquisition of multiple users. The "ease of use" factor with web apps exists solely for a developer community that already knows how to make web apps. For new developers or anyone willing to learn something new, I think the level of difficult argument is actually a lot more evenly balanced than it might appear from the outside.
</p>

<p>What about device independence? In the case of Pathfindr's audience at Come Out and Play, at least, nearly every single participant used an iPhone. There may have been one or two Android players, but I didn't see them. They'd advertised the game as "smart phone-only" and said they'd tested it on Android, iPhone, and Palm Pre Plus. A few people with Blackberries came thinking they might qualify, but had to be turned away or added onto teams of players with iPhones. With the incredible battery usage my team saw, I can't imagine that an Android team would even have been able to finish the course (especially with what I've heard about the HTC 4G).</p>

<p>The result on the ground, then, was an application that was the worst of both worlds: device-limited without the benefits of device-specific design. It had all the performance disadvantages of a web app that I've outlined above with none of the imagined benefits of cross-device compatibility.</p>

<p>Advocates of web applications as the solution for mobile development need to do some observations of real world scenarios like this before they convince more developers that native apps are unnecessary or evil in some way. The new creative and surprising uses to which a big games festival like Come Out and Play puts mobile apps is a terrific proving ground for development platforms.</p>

<p>For my part, I want mobile apps to be weirder and more fun than their desktop ancestors and to explore all the new affordances offered by the position of phones and new devices in urban space and in our lives. And I'll take whatever development platform keeps the battery running, the GPS coordinates flowing, and the sensors sensing. Right now that means native apps.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The GitHub Stoplight</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/05/the_github_stoplight.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19939</id>

    <published>2010-05-20T01:19:13Z</published>
    <updated>2010-05-20T01:19:42Z</updated>

    <summary> A couple of months back, the guys at GitHub bought a stoplight. They ordered it on Ebay from a seller in the UK. Their plan was to hook it up to their build system. The idea was that when...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="ac" label="AC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="arduino" label="arduino" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ethernet" label="ethernet" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="relay" label="relay" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stoplight" label="stoplight" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  A couple of months back, the guys at <a href="http://github.com">GitHub</a> bought a stoplight. They ordered it on Ebay from a seller in the UK. Their plan was to hook it up to their build system.
  </p>
  <p>The idea was that when they check code into their continuous integration system (see <a href="http://github.com/defunkt/cijoe">defunkt/CI Joe</a>) the stoplight would turn yellow while the code was building, red if the build failed because of failing tests, and green if the build succeeded. It would give them a large unmissable indicator in their office for the status of their current code. 
</p>
<p><em>The stoplight at the start of the project:</em></p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622031483/" title="stoplight before plugged-in by atduskgreg, on Flickr"><img src="http://farm4.static.flickr.com/3331/4622031483_2de0422a92.jpg" width="195" height="500" alt="stoplight before plugged-in" /></a>
</p>

<p>
  One of the GitHub founders, <a href="http://github.com/pjhyett">PJ Hyett</a> played around with using an Arduino to integrate with the continuous integration server. He wrote a ruby script that polled the server and then sent a serial message to an Arduino which turned on an appropriate green, yellow, or red LED.
  </p>
  <p>
  This worked, but had a couple of downsides: first it required a laptop to be connected to the Arduino to talk to the CI server; second it only lit up little LEDs rather than the big beautiful stoplight. For good reason, as a beginner PJ balked at the idea of controlling the AC power needed by the stoplight. After all, AC can kill you.
</p>
<p>
  That's where I came in.
</p>

<p>
  <a href="http://twitter.com/luckiestmonkey">Melissa Severini</a>, GitHub's admin, got in touch with me to see if I was interested in taking on the project of hooking up the stoplight. I told her I definitely was and got to work putting together a proposal.
</p>
<p>
  My goal was to improve PJ's take on the project by handling all of the networking on the Arduino itself and, of course, to control the actual stoplight rather than just LEDs.
</p>
<p>
  On the AC side, having read <a href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=119">Sparkfun's tutorial on controlling AC with relays</a>, my plan was to connect one relay to each of the stoplight's lights and then to run all of those to a single Arduino which would itself connect to GitHub's CI Joe instance over their office wifi.
</p>
<p>
  <em>Initial proposal sketch:</em>
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4566583637/" title="The Github Stoplight by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4019/4566583637_725a2393d2.jpg" width="375" height="500" alt="The Github Stoplight" /></a>
</p>
<p>
  As you can see from that photoshop mockup, I was planning on using the <a href="http://asynclabs.com/store?page=shop.product_details&flypage=flypage.tpl&product_id=23&category_id=11&vmcchk=1">Asynclabs BlackWidow</a> for the networking part of the project. The BlackWidow is a neat little Arduino variant which has wifi hardware built into it.
  </p>
  <p>
  In the final planning stages, this was the component of the project that changed the most: I ended up ditching the wifi in favor of using <a href="http://www.ladyada.net/make/eshield/">Ladyada's ethernet shield</a> with a Wiznet module to connect the Arduino directly to GitHub's router via an ethernet cable. There were two main reasons for this decision: first of all, I realized that trying to run a wifi antenna inside the solid steel box of the stoplight's housing was probably not the smartest idea, and second I found asynclabs' wifi code for the Arduino to be simply too complicated for me to wrap my head around in the few days I had to prepare before traveling out to SF. I was able to get the BlackWidow to connect to a wifi network, but never to actually reach out beyond it to real URLs on the internet.
</p>
<p>
  So, my proposal submitted and accepted by GitHub, I ordered parts and scheduled flights.
</p>
<p>
  The second week of May, my parts began to arrive and I soldered up the Sparkfun relay boards and tested them with my Arduino. I also talked with <a href="http://tigoe.net/">Tom Igoe</a>, ITP professor and member of the core Arduino team, who gave me a bunch of great advice about using the relays safely and also explained how to power the Arduino itself off of the AC power as well as the stoplight (a subject I'll return to later).
</p>
<p>
  Last friday, I flew out to SF with a bag full of electronics: 7 Arduinos, 3 USB cables, a soldering iron, a pair of wire cutters, 2 packages of rubber feet, three spools of threaded hookup wire, 3 relays, etc. etc. I was surprised my bag made it through security with nothing more than a TSA inspection notice slip. And on Saturday, the build process began.
</p>
<p>
  The first thing I did on arrival was to open up the stoplight and take a look inside:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622028649/" title="stoplight before by atduskgreg, on Flickr"><img src="http://farm2.static.flickr.com/1143/4622028649_058d00d35b.jpg" width="335" height="500" alt="stoplight before" /></a>
</p>
<p>
  As you'd expect for a piece of urban infrastructure that needs to work reliably for a long period of time, the stoplight's design is extremely simple. The AC runs in from its external plug (the white cable in the picture above) to a bank of screw terminals through which it's distributed to all three of the lights:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622635630/" title="stoplight before: power routing by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4006/4622635630_6050e5a8fa.jpg" width="500" height="335" alt="stoplight before: power routing" /></a>
</p>
<p>
  From there a pair of wires travels out to each light fixture, one hooked up to each side of the AC:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622029795/" title="stoplight before: light wires by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4031/4622029795_c2e866e4b2.jpg" width="500" height="335" alt="stoplight before: light wires" /></a>
</p>

<p>
  Thanks to <A href="flickr.com/adelcambre">Andy Delcambre</a>, I'd seen photos of this setup in advance and taken it into account when coming up with my plan. Andy was extremely helpful in the planning of this project and throughout its execution; I couldn't have done it without him. 
</p>
<p>
  After having checked out the wiring for myself, I spent the rest of my first day in the GitHub office installing the relays.
  </p>
  <p>
  A relay is a physical switch that can be closed by running a small amount of electricity through a pair of electromagnets. The result is a device that lets you control large amounts of electricity (like 120V AC) via small amounts (like the 5V DC that comes off an Arduino's pins).
</p>
<p>
  As I mentioned before, I'd soldered up three of the <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9096">Sparkfun relay breakout boards</a> before coming out to SF. These have three wires that get connected to the Arduino: ground, +5V, and a control line that goes to one of the digital pins. On the other side, it has two terminals for the AC connection. The idea is that you break one of the two AC wires going to your target device (in this case one of the stoplight lamps) and solder the relay into the break. Then when you pull the Arduino control pin high, the AC part of the circuit is closed and your devices turns on; when the control pin is low, the device is off.
</p>
<p>
  <em>Relay with control board soldered up to one of the stoplight lamps:</em>
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622032369/" title="relay closeup by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4061/4622032369_7b6652ec6d.jpg" width="500" height="335" alt="relay closeup" /></a>
</p>
<p>
  Once I had the first relay soldered up and plugged in, I wrote a basic blinking LED-style Arduino sketch that would simply toggle the relay control pin on and off every 500ms. After being sure that no one was touching any part of the stoplight, I plugged it in and the result was a blinking lamp:
</p>
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/wjpll9tvXHY&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/wjpll9tvXHY&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>

<p>
  Note the satisfying clicking sound. (Brief aside: next time you're standing at a street corner waiting for the "walk" signal, listen closely to the big box attached to one of the utility polls nearby and you'll hear a giant relay clicking away blinking the "don't walk" hand.)
</p>
<p>
  Having proven that the relays could control the stoplights, I went ahead and attached relays to the other two lamps as well following the same procedure, testing each one in turn.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622032901/" title="relays connected to all three lights by atduskgreg, on Flickr"><img src="http://farm4.static.flickr.com/3300/4622032901_62abda4bbf.jpg" width="285" height="500" alt="relays connected to all three lights" /></a>
</p>
<p>
  Now, I had control of all three of the lights. The next step was to connect to the internet. To do this, I attached the Ladyada ethernet shield with the wiznet module to my Arduino and plugged an ethernet cable from that into the GitHub office router.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622034267/" title="Arduino with ethernet shield by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4043/4622034267_2483182de2.jpg" width="335" height="500" alt="Arduino with ethernet shield" /></a>
</p>
<p>
  I had <a href="http://www.flickr.com/photos/unavoidablegrain/3474989713">experimented with Arduino and Ethernet before</a> so I was pretty familiar with the hardware and software involved. The main new element this time was that instead of serving up webpages from the Arduino I needed to use the Arduino as a client and specifically I needed to capture the status of a particular URL since that's how CI Joe reports its status (a 200 response means a successful build, a 412 with the word "building" means the build is in progress, and a 412 with a git sha as the body means that the build is broken and the commit corresponding to that particular sha is to blame.) 
</p>

<p>
  After a bit of googling, I came across the <a href="http://www.arduino.cc/en/Tutorial/TextString">Arduino String</a> library which includes a "contains" method that will search a given string for some substring and return true if the substring is found. If I formulated the request correctly from the Ethernet library I could get the library to print out the response headers which include the status, which I could then pull out using this contains method.
</p>

<p>
  Once I had that figured out, I pretty quickly put together a sketch that would poll a given URL and blink the red lamp if that URL was 400 and blink the green lamp if it was 200. I tested my code against a URL on a server I controlled so I didn't have to ask the GitHub guys to force a rebuild of their site every few minutes while I was working on things.
</p>

<p>
  Before too long, I had the basic status switching working:
</p>

<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&photo_secret=76a7566787&photo_id=4613589704"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&photo_secret=76a7566787&photo_id=4613589704" height="300" width="400"></embed></object>

<p>
  Now at this point, all the pieces of the project were theoretically in place; all that was left was putting it all together, pointing it at the real GitHub CI server, and rewiring it so the Arduino itself would also be powered from the AC coming into the stoplight from the wall.
</p>
<p>
  Up to this point, I'd been powering the Arduino with a simple AC to USB power converter:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622645168/" title="USB power plug plugged into power strip by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4046/4622645168_60f47a3e24.jpg" width="500" height="335" alt="USB power plug plugged into power strip" /></a>
</p>
<p>
  Before I'd left New York, Tom Igoe had suggested simply wiring a two-prong outlet in series with the stoplight's AC power cable and using that to power the Arduino so I didn't need a separate power supply.
</p>
<p>
  So, on Monday this is what we did. For some reason, the stoplight's AC cord had been routed out of a hole in the top of its case:
</p>

<p><a href="http://www.flickr.com/photos/unavoidablegrain/4622638378/" title="stoplight power cable by atduskgreg, on Flickr"><img src="http://farm2.static.flickr.com/1170/4622638378_4b9a2897d1.jpg" width="500" height="335" alt="stoplight power cable" /></a></p>

<p>
  I cut this cord just below the bank of screw terminals and ran it back into the stoplight through a small hole in its steel base (a hole I'd also run the ethernet cable through earlier).
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622647384/" title="ethernet and power cables emerging from the base by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4022/4622647384_39754b0b3f.jpg" width="500" height="335" alt="ethernet and power cables emerging from the base" /></a>
</p>
<p>
  Then with Andy's help (he had some experience with wiring AC and I was starting to be a bit feverish and under the weather by this point) I connected a two prong outlet as well as the leads that went to the screw terminals for all of the lamps to the wires out to the plug, screwing the whole mess of wires together with plastic screw caps: 
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622039435/" title="USB power plug wired up to AC by atduskgreg, on Flickr"><img src="http://farm4.static.flickr.com/3309/4622039435_8c50c1ae5e.jpg" width="455" height="500" alt="USB power plug wired up to AC" /></a>
</p>
<p>
  Then, as you can see in that picture, I just plugged in the AC-to-USB power converter and ran a USB cable to the Arduino. Not the most elegant solution (and I could definitely have benefitted from a shorter USB cable that wouldn't have taken up so much space inside the cramped stoplight case), but it did the job and was pretty straightforward and danger-free.
</p>
<p>
  Now, the whole project was powered by simply plugging the stoplight's trailing power cord into a wall outlet. I switched the Arduino over to point at GitHub's real CI server and updated my response parsing and boom, the lights were switching based on the real status of the build.
  </p>
  <p>
    <a href="http://www.flickr.com/photos/unavoidablegrain/4622646276/" title="Green light on with guts hanging out by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4042/4622646276_f5ae7ddd8a.jpg" width="500" height="335" alt="Green light on with guts hanging out" /></a>
  </p>
  <p>
    I also rewrote the code slightly to use the Arduino's timer library so that the current light would stay lit even while the Arduino was keeping track of the 10 seconds it was supposed to wait between polling the CI server.
  </p>
  <p>
  Theoretically, the project should have been basically done at this point. But after I let it run for an hour or so, I noticed that the Arduino would start to get stuck, getting only an "incomplete headers" message from the Ethernet library on every response even when I could see that the server was doing the right thing when I hit it in the browser. 
  </p>
  <p>
  Thankfully, I had one more day before it was time for me to leave to head back home so I asked the ITP mailing list for help. Tom Igoe was nice enough to step in and save the day again by letting me know that there's apparently a memory leak or some other problem in the Ethernet library and that the best way to keep it reliable over long periods of operation is to connect the Ethernet shield's reset pin to one of the Arduino's digital outputs and then pull it low after each successful request so that it will reset.
</p>
<p>
  The next day, I came back into the GitHub office and followed his advice. After I figured out that I needed to call Ethernet.begin() again after resetting the shield, it worked like a dream, making requests reliably for a few hours.
</p>
<p>
  At this point I declared the project feature complete and set about shoving all the electronic guts back inside of the stoplight case. In the planning stages this was something I'd actually been quite worried about because I assumed that, being steel, the stoplight case would be conductive and hence prone to making shorts on my boards. On the second day of the project, however, I had the presence of mind to test the stoplight with my multimeter and, much to my pleasure, I discovered that the layer of paint coating the thing was not conductive at all. In fact, nothing inside of the stoplight besides the screw terminals themselves were the slightest bit conductive. This made the prospect of stuffing quite a bit of wire and PCB into the stoplight safely much more likely.
  </p>
  <p>So, I covered the AC connections of the relays with hot glue as a safety measure for anyone who might accidentally end up in close proximity to them with the stoplight still plugged in, and basically just shoved all of the wires inside until the case would close. It was a tight fit, but it worked in the end with space to spare.
</p>
<p>
  I closed the whole thing up and got the guys to run a build and, lo and behold, the stoplight turned green!
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622043091/" title="GitHub Stoplight: Green means successful build by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4004/4622043091_aa692cd987.jpg" width="335" height="500" alt="GitHub Stoplight: Green means successful build" /></a>
</p>
<p>
  Here's how it looks from the other side of the office from the table around which most of the work at GitHub actually gets done:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4622646850/" title="GitHub stoplight from across the office by atduskgreg, on Flickr"><img src="http://farm4.static.flickr.com/3391/4622646850_c9a4152ef2.jpg" width="335" height="500" alt="GitHub stoplight from across the office" /></a>
</p>
<p>
  I just want to say a big thanks to <a href="http://github.com/pjhyett">PJ Hyett</a>, <a href="http://github.com/defunkt">Chris Wanstrath</a>, and <a href="http://github.com/mojombo">Tom Preston-Warner</a>, GitHub's founders, for bringing me out as well as GitHub's <a href="http://github.com/kneath">Kyle Neath</a> who helped set up the CI Joe integration. This project would have been much harder and more dangerous without Tom Igoe's advice and Andy Delcambre's help at every stage of the build. And, of course, a big thank you to <a href="http://mysauceistomatobased.com">Melissa Severini</a> for thinking of me for this project in the first place. 
  </p>
  <p>
  If you want to learn more, the code is, of course, on GitHub: <a href="http://github.com/atduskgreg/GitHub-Stoplight">atduskgreg/GitHub-Stoplight</a>. And if you want some hardware bling for your own startup, don't hesitate to <a href="http://twitter.com/atduskgreg">get in touch</a>.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Slonimsky-inspired Musical Robot Helmet</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/05/slonimskyinspired_musical_robo.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19896</id>

    <published>2010-05-06T19:13:39Z</published>
    <updated>2010-05-06T19:14:25Z</updated>

    <summary> This post is the second in a series I&apos;ll be writing this week catching up on documenting projects I worked on this semester. The ITP semester goes by like a steam-powered locomotive and good documentation is frequently the first...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="helmet" label="helmet" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="livingart" label="living art" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="music" label="music" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="slonimsky" label="slonimsky" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  <em>This post is the second in a series I'll be writing this week catching up on documenting projects I worked on this semester. The ITP semester goes by like a steam-powered locomotive and good documentation is frequently the first thing thrown under the wheels. This week, I intend to pull some of my projects out from under that rushing train by writing them up here.</em>
</p>

<p>
  Some of the most surprising projects at ITP arise out of collaboration. When you work with someone with a different background and a different set of interests than your own you frequently end up making work that neither of you would have conceived alone.
</p>
<p>
  A great example of that for me this semester was the project <a href="http://mfleisig.com">Morgen Fleisig</a> and I built for Living Art in response to an assignment about symmetry. Morgen is a practicing architect and somehow whenever we work together we end up exploring the relationship between music and built space. For example, he and I worked together earlier this semester to compose a set of rules for a group of people to perform a piece of music that would transform based on the space in which it was performed: <A href="http://www.urbanhonking.com/ideasfordozens/2010/01/instructions_for_indoor_music.html">Instructions for Indoor Music</a>. 
</p>

<p>
  For the symmetry assignment, Morgen and I decided to explore ways of expressing a single symmetrical pattern in both musical and spatial form. We started with a scale from <A href="http://www.amazon.com/Thesaurus-Scales-Melodic-Patterns-Text/dp/082561449X">Slonimsky's Thesaurus of Scales and Melodic Patterns</a>.</p>
    <p>
     <a href="http://www.flickr.com/photos/unavoidablegrain/4584660026/" title="Slonimsky's Thesaurus of Scales and Melodic Patterns by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4031/4584660026_59d9597bee.jpg" width="375" height="500" alt="Slonimsky's Thesaurus of Scales and Melodic Patterns" /></a>
    </p>
    <p>
    Slonimsky's Thesaurus is a monument from the era of Modernism in music when composers explored the formal and mathematical relationships inherent in the tempered scale and the intervalic relationships that constitute it. It achieved wider fame later on when John Coltrane professed its importance in developing his "sheets of sound" style (see <a href="http://en.wikipedia.org/wiki/Coltrane_changes#Influences">the wikipedia entry on the Coltrane Changes</a> for more info).
    </p>
      <p>
    The Thesaurus proceeds systematically through every possible equal sub-division of the octave to define a series of scales and then explores a set of patterns and arpeggiations on those scales. Put another way, Slonimsky provides an exhaustive exploration of the mathematical patterns and symmetries within the tempered scale beyond the traditional major, minor, and other modes.
</p>
<p>
  After some discussion, Morgen and I chose to work with the Whole Tone Progression:
</p>

<p><a href="http://www.flickr.com/photos/unavoidablegrain/4584614150/" title="Slonimsky Whole-Tone Progression by atduskgreg, on Flickr"><img src="http://farm4.static.flickr.com/3324/4584614150_08a9285d1c.jpg" width="500" height="291" alt="Slonimsky Whole-Tone Progression" /></a></p>
<p>
  This scale divides the octave into six equal parts. To match this scale, Morgen chose a Hexagonal Truncated Trapezohedron, a geometric shape constructed out of two layers of six pentagons anchored at the top and bottom to the sides of a hexagon:
</p>

<p>
  <img src="http://upload.wikimedia.org/wikipedia/en/a/af/Hexagonal_truncated_trapezohedron.png" width="500" />
</p>

<p>
  A Hexagonal Truncated Trapezohedron is the spatial equivalent of the whole tone scale because it divides the full 360 degrees of the circle into six equal parts, just as the whole tone scale does the octave. Looked at from the point of view of the Whole Tone Progression, the Trapezohedron provides a number of affordances: you could map the six tones of the scale to each of the pentagons on either layer in a number of different configurations.
</p>

<p>
  In addition to the scales themselves, Slonimsky provides a set of patterns and sequences to explore those scales. For each progression, the sequences start simple and get more complicated&mdash;moving from Ultrapolation of One Note through Infrapolation of One Note to Infra-Interpolation and eventually all the way to Infra-Inter-Ultrapolation.
</p>
<p>
  We decided to use the simplest pattern, Ultrapolation of One Note:
</p>

<p><a href="http://www.flickr.com/photos/unavoidablegrain/4584614104/" title="Slonimsky Whole-Tone Progression Ultrapolation by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4042/4584614104_7d8afab2c5.jpg" width="500" height="285" alt="Slonimsky Whole-Tone Progression Ultrapolation" /></a></p>

<p>
  Once we had chosen the pattern, we then started working on turning it into a structure and bringing the pattern to life with speakers and LEDs. I took on the electronics and Morgen took on the structure.
</p>

<p>
  After some work and some bumping up against the timer limitations on the Arduino, I got the Arduino Tone library playing three speakers, and three LEDs to play the beginnings of the progression:
</p>

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

<p>
  Simultaneously, Morgen was working on the structure. After some discussion, we decided that it should be a helmet. Helmets are an efficient way of creating internal spaces that can be inhabited by one person at a time without having to build a whole room.
  </p>
  <p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4584211651/" title="Morgen with Helmet by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4013/4584211651_8b56f43dd2.jpg" width="375" height="500" alt="Morgen with Helmet" /></a>
</p>
  <p>
   They also, we discovered, have a a great 1950s-flying-saucer look to them:
</p>
<p>
  <img src="https://webspace.utexas.edu/cokerwr/www/index.html/adamski4.jpg" />
</p>



<p>
  Especially when worn on the head (modeled here by Todd) and covered with blinking LEDs:
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4584215885/" title="Todd wearing the helmet by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4060/4584215885_5a3a1caeb1.jpg" width="375" height="500" alt="Todd wearing the helmet" /></a>
</p>

<p>
  We ended up arranging the speakers symmetrically around the helmet in pairs so that the musical sequence would move around your head without the stereo image changing. We also covered each surface of the helmet with vellum to diffuse the LED indicating the active panels.
</p>

<p>
  Here are a couple of videos of people in the class wearing the helmet in its final form. 
</p>

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

<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&photo_secret=6b09cb6cdf&photo_id=4584842952"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&photo_secret=6b09cb6cdf&photo_id=4584842952" height="300" width="400"></embed></object>

<p>
  The real joy of the final piece for me was watching people wear it. It ended up turning them into 1950s robots from Planet Modernism in a way that embodied both the techno-seriousness and the ridiculousness of modernist music.
</p>

<p>
  You can see more images of it on my flickr set about the project: <a href="http://www.flickr.com/photos/unavoidablegrain/sets/72157624006414336/">Whole Tone Ultrapolation on a Hexagonal Truncated Trapezohedron</a>.
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Snake Party: An Urban Game for NYU&apos;s Stern Plaza</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/05/snake_party_an_urban_game_for.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19876</id>

    <published>2010-05-03T20:02:22Z</published>
    <updated>2010-05-03T20:03:39Z</updated>

    <summary> This post is the first in a series I&apos;ll be writing this week catching up on documenting projects I worked on this semester. The ITP semester goes by like a steam-powered locomotive and good documentation is frequently the first...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="biggames" label="big games" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="game" label="game" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="urban" label="urban" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="video" label="video" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  <em>This post is the first in a series I'll be writing this week catching up on documenting projects I worked on this semester. The ITP semester goes by like a steam-powered locomotive and good documentation is frequently the first thing thrown under the wheels. This week, I intend to pull some of my projects out from under that rushing train by writing them up here.</em>
</p>
<p>
<a href="http://www.flickr.com/photos/unavoidablegrain/4484118637/" title="Snake Party by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2746/4484118637_b0d926c3d1.jpg" width="379" height="500" alt="Snake Party" /></a>
</p>
<p>
  Snake Party is a game I designed with Meredith Hasson, Mike Kneupfel, Tianwei Liu, and Luis Volante for the "urban games" unit of Big Games. The assignment was to design a game to be played in the immediate blocks around NYU between Broadway and Washington Square Park.
</p>
<p>
  Our group decided early on that we wanted to model our game after an old fashioned video game. Hence, we seized on <a href="http://tinyurl.com/32tel8j">the NYU Stern plaza</a>, which is a large flat space with a built-in grid inscribed in it:
</p>
<p>
  <img src="http://img.skitch.com/20100503-gf4458qjuhwue2cuj1abpsy4ap.jpg" width=500/>
</p>
<p>
  After experimenting with a number of different mechanics based on games ranging from Battleship to Tic-Tac-Toe, we settled on an adaptation of the 1970s game, <a href="http://en.wikipedia.org/wiki/Snake_(video_game)">Snake</a>:
</p>
<p>
  <img src="http://upload.wikimedia.org/wikipedia/en/0/04/Snake_trs-80.jpg" />
</p>
<p>
  As Wikipedia describes, in Snake "the player controls a long, thin creature, resembling a snake, which roams around on a bordered plane, picking up food (or some other item), trying to avoid hitting its own tail or the "walls" that surround the playing area."
</p>
<p>
  To recreate this mechanic in real life, we divided the players up into two teams, each connected together by a rope. Each snake had a head and a tail. The game grid was littered with balloons and party hats. The goal of each snake was to collect a hat for each of its players. Only the frontmost player in each snake could pick up a hat. When the snake ran into a balloon, the frontmost player moved to the back of the snake. Each snake moved one square forward, left, or right every five seconds, triggered by the blowing of a horn.
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4575702664/" title="Snake Party in Progress by atduskgreg, on Flickr"><img src="http://farm4.static.flickr.com/3405/4575702664_ab8dd223de.jpg" width="500" height="375" alt="Snake Party in Progress" /></a>
</p>
<p>
  One interesting thing happened during the course of play that we didn't expect: one team's snake was able to trap the other team by moving perpendicularly in front of it. We hadn't anticipated this being possible and so we were forced to improvise a rule on the spot whereby the trapped snake simply stood still until the moving snake past by.
</p>
<p><a href="http://www.flickr.com/photos/unavoidablegrain/4575071321/" title="Picking up a hat by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4035/4575071321_982d46432e.jpg" width="500" height="375" alt="Picking up a hat" /></a></p>
<p>
<p>
  The game was relatively well-balanced, both snakes were close to collecting all of the hats when one of them won.
</p>

  We received a lot of good feedback in the discussion after the play session. Best of all was the suggestion of breaking up the teams into smaller snakes so that more players would have a more active role at each moment. As the game went on the players began to cooperate more, the players not at the head of the snake helping to advise the head about where they should move. Smaller teams would encourage that communication and create more opportunities for interactions between the teams.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4575703746/" title="Picking up a balloon by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4033/4575703746_9be683eafb.jpg" width="375" height="500" alt="Picking up a balloon" /></a>
</p>
<p>
  <em>Thanks to Meredith Hasson for the photos in this post.</em>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>An Unofficial Video for Ambulance by TV On the Radio</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/05/an_unofficial_video_for_ambula.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19872</id>

    <published>2010-05-02T07:05:01Z</published>
    <updated>2010-05-02T07:05:49Z</updated>

    <summary> I wrote recently about the design and production process for an ongoing video I was making for the song Ambulance by TV On The Radio in collaboration with Calli Higgins. Well, I&apos;m proud to announce that we finished the...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="ambulance" label="ambulance" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="animation" label="animation" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="music" label="music" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stopmotion" label="stop-motion" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tvontheradio" label="tv on the radio" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="video" label="video" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
 I wrote recently about <a href="http://www.urbanhonking.com/ideasfordozens/2010/04/ambulance_video_design_process.html">the design and production process</a> for an ongoing video I was making for the song Ambulance by <a href="http://www.tvontheradio.com/">TV On The Radio</a> in collaboration with <a href="http://www.flickr.com/photos/callihiggins">Calli Higgins</a>. Well, I'm proud to announce that we finished the video this week and it's now online for your viewing pleasure (best enjoyed full screen): 
</p>

<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=11372728&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11372728&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11372728">Ambulance (unofficial video)</a> from <a href="http://vimeo.com/user1249829">Greg Borenstein</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>
  After completion, I calculated that between the two of us Calli and I put around 370 hours into making this video. I worked on it for twelve weeks and she worked on it for five.
</p>
<p>
  One striking contrast in the animating process was how quickly the edit came together in comparison with the actual animating. Since shooting each second of video and applying the character's faces was so time consuming, the video was storyboarded relatively tightly to not waste any precious seconds of footage.
</p>

<p>
  We couldn't be prouder of the final result and are currently trying to get in touch with the band to show it to them. If you have any leads for how we can do that, please get in touch with me.
</p>

<p>
  If you want to learn more about the design and construction process for the set and characters, take a look at my earlier post: <a href="http://www.urbanhonking.com/ideasfordozens/2010/04/ambulance_video_design_process.html">Ambulance Video Design Process and Animatic</a>.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Ambulance Video Design Process and Animatic</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/04/ambulance_video_design_process.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19823</id>

    <published>2010-04-10T17:31:11Z</published>
    <updated>2010-04-10T17:31:52Z</updated>

    <summary> For the last five weeks or so, I&apos;ve been working on stop motion video for the song Ambulance by TV On The Radio. I started it for the stop motion assignment for Methods of Motion, have continued it on...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="animation" label="animation" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="miniature" label="miniature" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="music" label="music" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stopmotion" label="stop-motion" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="video" label="video" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  For the last five weeks or so, I've been working on stop motion video for the song Ambulance by <a href="http://www.tvontheradio.com/">TV On The Radio</a>. I started it for the stop motion assignment for <a href="http://itp.nyu.edu/~mp51/methodsofmotion/index.html">Methods of Motion</a>, have continued it on through the After Effects assignment, and will be pressing on work with it through the rest of the semester for my final project.
</p>
<p>
  The process has had four stages so far: building the environment, designing the characters, animating, and putting in the faces. I'll go through them one by one.
</p>

<p>
  When I first heard the song the idea for a narrative popped into my head almost immediately. The imagery was inspired by the combination of the running water sounds that open and close the track and the "dark barbershop" quality of the harmonies. In my mind these combined to summon imagery that juxtaposed warm domesticity with violence and raw violent nature. The basic outline of the story would be: at a warm household on a riverside cliff, a woman waits. Her man returns home infuriated and attacks her. She escapes and he chases her along the cliffside until she falls into the water. He chases her through the river until she finally manages to fight back, kicking him into the water where he drowns as the lights of an ambulance flash in the distance.
</p>
<p>
  I started with the part I was most comfortable with: building the set. Having already built <a href="http://www.flickr.com/photos/unavoidablegrain/sets/72157611719753997/">a miniature mountain</a> for a previous project, I knew how to proceed with the construction. I set about laying out the landscape with balls of rolled up newspaper.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4380847173/" title="river landscape newspaper underlayer by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4032/4380847173_0fac9e927d.jpg" width="500" height="335" alt="river landscape newspaper underlayer" /></a>
</p>
<p>
  Then I covered the paper in strips of plaster cloth
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4385048933/" title="plastered model from above by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4015/4385048933_5de685b9fc.jpg" width="500" height="335" alt="plastered model from above" /></a>
</p>
<p>
  and painted it:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4385051353/" title="view of painted model by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4014/4385051353_26eea05f02.jpg" width="500" height="359" alt="view of painted model" /></a>
</p>

<p>
  Finally, I added grass (from plastic modeling dust) and trees (out of sticks from Tompkins Square Park).
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4398805851/" title="lights installed in river set by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4025/4398805851_93e6ac5125.jpg" width="500" height="335" alt="lights installed in river set" /></a>
</p>
<p>
  Since the scene takes place at night, I imagined it lit by a ghostly blue light that seemed to originate from the water. This took a little bit of experimenting with to get right. Finally I found that a combination of cut-up blue cellophane and vellum gave the light the right diffuse quality so you couldn't see
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4399576520/" title="view through rocks with new water by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2709/4399576520_bd3a672fb6.jpg" width="500" height="335" alt="view through rocks with new water" /></a>
</p>
<p>
  The other great advantage of this technique was that it's extremely easy to move the blue cellophane around between shooting each frame to create a compelling illusion that the water is actually moving.
</p>
<p>
  The next thing I had to figure out was how to do the characters. I struggled with this for a couple of weeks. At first, I experimented with taking photographs of a couple of people in my class, making them into paper dolls and moving them through the environment. I recruited two actors, photographed them in a variety of poses and facial expressions and then had high quality prints made so I could cut them into paper dolls. Here's the print I made of <a href="http://davidphillips.us/">David Phillips</a> who I'd recruited to play the male character:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4400121935/" title="David arranged for cutout by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2716/4400121935_ec85e2a4cc.jpg" width="500" height="329" alt="David arranged for cutout" /></a>
</p>
<p>
  This approach had two problems. When I finished constructing the paper dolls, I rapidly realized that they were going to be extremely difficult to animate. I didn't have enough poses to really just swap them out and all of my attempts to cut them up and attach them to different armatures failed miserably.
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4508422424/" title="David paper doll in Ambulance set by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2034/4508422424_70633db97c.jpg" width="500" height="335" alt="David paper doll in Ambulance set" /></a>
</p>
<p>
  Also, while these photographic prints did look somewhat compelling on the set, a number of people in the class gave me the feedback that they didn't quite match it. They were both too specific and too mundane.
</p>
<p>
  So, after some more experimenting, I decided to go with a hybrid approach. All along in the process, I'd been using small posable wooden drawing dummies while constructing the set to get its scale correct:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4386298381/" title="climbing onto a rock by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4036/4386298381_bc4c7af609.jpg" width="500" height="335" alt="climbing onto a rock" /></a>
</p>
<p>
  These figures had a nice neutral quality that made them iconic and I liked the way that the moved. The main problem with them was that they were identical making it hard to distinguish the male and female characters. Also, lacking faces, they lacked a certain subtlety of expression. 
</p>
<p>
  To solve these problems, I decided to team up with <a href="http://www.flickr.com/photos/callihiggins/">Calli Higgins</a>, a fellow student in the class. Calli had some pre-existing experience with After Effects and we decided to experiment with using it to superimpose faces onto the drawing dummies.
</p>
<p>
  It took some brilliant finagling by Calli with multiplication layers and transparency, but here was our first test footage (it's a short clip so watching full screen will make it dramatically easier to see the faces):
</p>

<p>
  <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=10616219&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10616219&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/10616219">Ambulance - test</a> from <a href="http://vimeo.com/user2397176">Calli Higgins</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</p>

<p>
  We used our own faces for each of the characters, taking pictures with the built-in iSight camera whenever we needed a new pose. Then Calli worked painstakingly through frame-by-frame to match the faces to the dummies' poses.
</p>

<p>
  With the world and characters in place, we've begun pushing through animating the rest of the piece. I'm shooting the raw stop-motion footage and then handing off to Calli to apply the faces. This week, in order to show the whole story to the class and to let Calli prepare for what was coming, I edited together the existing minute or so of animated footage that I'd shot along with an animatic, a kind of moving storyboard made by dissolving between still shots.
</p>

<p>
  <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=10795929&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10795929&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/10795929">Ambulance Video Animatic and partial assemblage</a> from <a href="http://vimeo.com/user1249829">Greg Borenstein</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</p>

<p>
  The animation is a slow and painstaking process, with an hour of work resulting in about two seconds of footage. From here on out it's just a slow slog where I need to shoot about 6-10 seconds of footage per day for the next three weeks to get the thing finished.
</p>

<p>
  For more "behind the scenes" on the building of the set, you can take a look at <A href="http://www.flickr.com/photos/unavoidablegrain/sets/72157623491760636/">my Ambulance video set on Flickr</a>.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Tripod Force Body Diagram</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/03/tripod_force_body_diagram.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19791</id>

    <published>2010-04-01T05:53:43Z</published>
    <updated>2010-04-01T19:39:48Z</updated>

    <summary> For Mechanisms and Things That Move this week, Dustyn asked us to draw a Free Body Diagram for some common household object. Since I&apos;ve been spending nearly every waking minute beside my camera shooting a stop motion animation, I...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="engineering" label="engineering" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="force" label="force" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mechanical" label="mechanical" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mechanisms" label="mechanisms" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="physics" label="physics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tripod" label="tripod" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  For <a href="http://itp.nyu.edu/mechanisms/index.php/Main/Syllabus">Mechanisms and Things That Move</a> this week, Dustyn asked us to draw a <a href="http://en.wikipedia.org/wiki/Free_body_diagram">Free Body Diagram</a> for some common household object. Since I've been spending nearly every waking minute beside my camera <a href="http://www.flickr.com/photos/unavoidablegrain/sets/72157623491760636/">shooting a stop motion animation</a>, I chose my tripod.
</p>
<p>
  What's a Free Body Diagram? A Free Body Diagram portrays the forces acting on a system. To draw a Free Body Diagram you break your system down into a set of simple machines and use the laws of mechanics to analyze how the various parts of those machines balance each other. Drawing one lets you know how the variables in your system relate to each other: how the weight of one object might affect the necessary torque in a motor, or how the angle of a support might affect the kind type of fastener you use, etc.
</p>

<p>
  To start off with, here's a drawing of my camera on my tripod.
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4481815127/" title="Nikon D60 on tripod by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2679/4481815127_2d390aee7c.jpg" width="374" height="500" alt="Nikon D60 on tripod" /></a>
</p>

<p>
  I made a drawing because, obviously, my camera was busy applying torque to the tripod. Now, here's the Force Body Diagram:
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4481815027/" title="Tripod Force Body Diagram by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4031/4481815027_25b003b8de.jpg" width="323" height="500" alt="Tripod Force Body Diagram" /></a>
</p>

<p>
  (<a href="http://www.flickr.com/photos/unavoidablegrain/4481815027/sizes/l/">View the large size</a>.) There are two parts of the system I'm analyzing here. First, the screw which holds the camera in place at an angle at the top of the tripod. Second, the three legs that support the weight of the camera and tripod system. I'll take the first part first. 
</p>
<p>
  The screw-system holds the camera in place at an angle by balancing the torque applied by the camera at the ball joint with the force from the screw which holds the ball joint in place. As you can see in the diagram, the torque is equal to the length of the shaft to the camera (in real life no more than a couple of inches) and the weight of the camera itself. The product of those two is the minimum amount of force the screw must be applying since the camera is currently aloft at quite the jaunty angle.
</p>
<p>
  The second system, the tripod legs, has two things going on. First, the angle of each of the tripod legs serves to distribute a portion of the total weight of the camera and the above part of the tripod. Each leg's angle lies at a vertex of a triangle between the leg, the floor, and the extended vertical line of the tripod's shaft. The tripod's weight is applied along that vertical line adjacent to the angle and we want to know the portion distributed to the leg, which makes up the hypotenuse of the triangle. Hence, the part of the weight carried by each leg is equal to the total weight divided by the cosine of the angle.
</p>
<p>
  Now, let's take this a bit further. Take a look at the three equations at the bottom of the diagram. We know that the sum of the portions for each leg added up to the total weight of the camera plus tripod system. If we do a little algebra, something interesting happens. The weight of the camera plus tripod actually cancels out of the equation. We're left with a relationship between the three leg-angles themselves directly. This makes sense. The angle of each leg only determines what portion of the weight that particular leg bears, not the total weight its capable of bearing. As long as each leg is doing its share of the work, then (all other things being equal) they should be able to hold up the weight above them.
</p>
<p>
  Another interesting observation falls out of this bit of algebra. The cosine of an angle decreases as the angle rise from 0 to 90 degrees. So, of course, the inverse of that cosine increases along that same range of angles. In other words, the further out you pull each leg from the tripod, the less of the weight that leg supports.
</p>
<p>
  This might be a counterintuitive result since when we spread the legs out the tripod becomes more stable. That is due to a factor illustrated in the second inset in my diagram: when we spread out the legs, we make it more likely that the center of mass of the tripod plus camera system will be within the plane defined by the tripod's legs.
  </p>
  <p>
    Anyway, I'm sure this analysis is incomplete. One of the main experiences of making this kind of diagram is that the more you put into it, the more you think of to put into it. And part of the art is choosing when to stop.
  </p>]]>
        
    </content>
</entry>

<entry>
    <title>Open: A Flash Animation About a Corkscrew</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/03/open_a_flash_animation_about_a.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19775</id>

    <published>2010-03-28T18:45:20Z</published>
    <updated>2010-03-29T01:44:37Z</updated>

    <summary> A while back, I mentioned that I was working on a Flash animation about a corkscrew for Methods of Motion. Not too long thereafter, I finished the animation, but had neglected to post it here until now. It&apos;s called...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="animation" label="animation" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="flash" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="motion" label="motion" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wine" label="wine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  A while back, I <a href="http://www.urbanhonking.com/ideasfordozens/2010/02/the_little_wine_key_that_could.html">mentioned</a> that I was working on a Flash animation about a corkscrew for <a href="http://itp.nyu.edu/~mp51/methodsofmotion/index.html">Methods of Motion</a>. Not too long thereafter, I finished the animation, but had neglected to post it here until now. It's called <a href="http://vimeo.com/10485315">Open</a>.
</p>

<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=10485315&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10485315&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/10485315">Open</a> from <a href="http://vimeo.com/user1249829">Greg Borenstein</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>
  Starting with a <a href="http://itp.nyu.edu/~gab305/motion/wine_key_animatic.gif">storyboard for a much longer and more complex story</a>, I decided to focus on the key moment of the corkscrew seeing the wine bottle and jumping up onto the counter.</p>
  <p>
    I started off by creating the animation using extremely primitive geometric drawings in Flash. That way I could focus on getting the movements right without having to deal with all the distractions of full backgrounds and highly detailed characters. You can watch an <a href="http://itp.nyu.edu/~gab305/motion/wine_key_early_draft.swf">early draft version</a> that shows the project in that state. 
  </p>
  
  <p>
  As you can already start to see happening in that SWF, I made a bunch of drawings of the corkscrew and the surrounding environments and brought these into Flash. Later on, I traced them as vectors. to increase the quality and give me more flexibility for moving, resizing, and animating them.
</p>
<p>
  Finally I had to draw a few moments by hand frame-by-frame (mostly where the corkscrew turns its "head" side-to-side, an action that didn't yield to any of Flash's transformation tools).
</p>
<p>
  Initially I intended to put audio to this and do a few other finishing touches, but the momentum of the semester has moved me on to another longer-duration animation project that I'm quite excited about. I'll hopefully have more to say about that here soon.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>There Will Be Yolk: A Rube Goldberg Machine</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/03/there_will_be_yolk_a_rube_gold.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19774</id>

    <published>2010-03-27T16:39:50Z</published>
    <updated>2010-03-27T16:40:27Z</updated>

    <summary> Our first assignment in Mechanisms and Things That Move earlier this semester was to build a Rube Goldberg device that cracked an egg using no fewer than 5 energy transfers. The majority of the egg and no more than...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="egg" label="egg" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mechanisms" label="mechanisms" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rubegoldberg" label="rube goldberg" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  Our first assignment in <a href="http://itp.nyu.edu/mechanisms/index.php/Main/Syllabus">Mechanisms and Things That Move</a> earlier this semester was to build a Rube Goldberg device that cracked an egg using no fewer than 5 energy transfers. The majority of the egg and no more than half of the shell had to end up in a jar or other container at the end.
</p>
<p>
  I worked with <a href="http://mfleisig.wordpress.com/">Morgen Fleisig</a> and <a href="http://www.enjoytheblank.com/">Mike Cohen</a>.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4305257123/" title="Rube Goldberg support structure detail with Mike and Morgen by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4070/4305257123_312fc08c45.jpg" width="334" height="500" alt="Rube Goldberg support structure detail with Mike and Morgen" /></a>
</p>
<p>
  Here's a video of our Rube Goldberg machine in action:
</p>
<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=9149450&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9149450&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/9149450">There Will Be Yolk: A Rube Goldberg Machine</a> from <a href="http://vimeo.com/user1249829">Greg Borenstein</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>
  That went by fast so let's walk through the energy transfers step-by-step.
</p>
<p>
  You started off the machine by pulling down a lever.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4315345668/" title="Handle by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4046/4315345668_7f3e1a4d1a.jpg" width="240" height="500" alt="Handle" /></a>
</p>

<p>
  The lever was attached to a piece of fishing line which traveled over a series of pulleys.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4314609627/" title="Pulley by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2718/4314609627_a152edaaaa.jpg" width="334" height="500" alt="Pulley" /></a>
</p>

<p>The rising fishing line lifted a metal weight off a balance beam</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4315342288/" title="Balanced lever by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4058/4315342288_5f4ff2bf2b.jpg" width="334" height="500" alt="Balanced lever" /></a>
</p>

<p>
  The falling companion weight depended from the balance beam by a brass chain, which hit two pieces of wire closing a switch connected to a 9v battery.
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4315340460/" title="Unbalanced lever and closed switch by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4009/4315340460_e5351942e4.jpg" width="334" height="500" alt="Unbalanced lever and closed switch" /></a>
</p>

<p>
  The short circuit burned a fuse made out of steel wool.
</p>
<p>
<a href="http://www.flickr.com/photos/unavoidablegrain/4314615971/" title="Fuse burning by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4071/4314615971_bceb0b2e13.jpg" width="500" height="334" alt="Fuse burning" /></a>
</p>

<p>
  The burning fuse cut a piece of fishing line tied to the top of a steel rod inside a guide tube made from PVC.
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4314614223/" title="Spike stopper by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4011/4314614223_795b91611b.jpg" width="334" height="500" alt="Spike stopper" /></a>
</p>
<p>
 The steel rod fell down through the egg, piercing it with an attached soldering iron tip.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4314611475/" title="Final spike position and egg holder by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4003/4314611475_fe5e470e68.jpg" width="402" height="500" alt="Final spike position and egg holder" /></a>
  </p>
<p>
  The pierced egg dripped through the whole in its plastic seat into the jar below.
</p>

<p>
  We built the device inside of this very oil derrick-looking superstructure that Morgen put together from wood slats. Hence the name: There Will Be Yolk, a play on There Will Be Blood by Paul Thomas Anderson:
</p>
<object width="384" height="241"><param name="movie" value="http://www.youtube.com/v/ml2Ae2SIXac&hl=en_US&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ml2Ae2SIXac&hl=en_US&fs=1" type="application/x-shockwave-flash" width="384" height="241" allowscriptaccess="always" allowfullscreen="true"></embed></object>
]]>
        
    </content>
</entry>

<entry>
    <title>Mouth Helmet</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/03/mouth_helmet.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19766</id>

    <published>2010-03-23T05:54:03Z</published>
    <updated>2010-03-23T06:53:10Z</updated>

    <summary> For my fourth and final 4-in-4 project, I built something I&apos;ve been planning to make for a long time. A number of years ago, I got this image stuck in my head of what the world would look like...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="4in4" label="4-in-4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="helmet" label="helmet" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mouth" label="mouth" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perspective" label="perspective" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  For my fourth and final <a href="http://4-in-4.com">4-in-4</a> project, I built something I've been planning to make for a long time. A number of years ago, I got this image stuck in my head of what the world would look like if your eyes were on your uvula instead of your face. 
</p>
<p>
  <img src="http://upload.wikimedia.org/wikipedia/commons/8/81/Tonsils_diagram.jpg" />
</p>
<p>
  What would the world be like if you looked out at if from inside your body rather than the external, nearly detached, viewpoint which our eyes actually inhabit?
</p>
<p>
  Throughout western culture, vision is privileged above the four other senses. It's the sense we identify with intelligence, perspective, and the soul. It's also the only sense that we work so hard to detach from the body by extending its reach with cameras, satellites, and ever more fine grained microscopes.
</p>
<p>
  So, I wanted to force vision back into the body. To make it look out from within the wet sloshing meatbags we truly are. To drag it down to the level of the other senses by literally forcing it inside of their associated organs.
</p>

<p>
  I decided to start with the mouth.
</p>
<p>
  I bought a plastic model of dentally perfect teeth from an orthodontic supply website and a rubbery tongue from a Halloween gag shop.  
</p>
<p>
  In my first experiments, I used a projector to place fuzzy imagery keyed to the color of outdoor light in the background.
</p>
<p>  
  <a href="http://www.flickr.com/photos/unavoidablegrain/443289334/" title="In-mouth 2 by atduskgreg, on Flickr"><img src="http://farm1.static.flickr.com/191/443289334_77b06542f8.jpg" width="450" alt="In-mouth 2" /></a>
</p>
<p>
  <em>(In that image above, I also manage to photograph the mouth upside-down, as I quickly learned due to a correction from <a href="http://www.flickr.com/photos/unavoidablegrain/443289334/comment72157600049952908/">a dental surgeon who happened across the picture on Flickr</a>)</em>
</p>
<p>
  Having made these first images, I wanted a way to make this aesthetic experience more immersive; I wanted a helmet that you could wear that would force you into this position of seeing in the physical world.
</p>
<p>
  This is what I set out to make for day 4 of the 4-in-4 last week.
</p>
<p>I started by gathering supplies. In addition to my long-ago acquired dental model and Halloween tongue, I bought a baseball helmet from Kmart and some plaster cloth from Blick.</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4455853257/" title="Mouth helmet supplies by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4017/4455853257_21b059c766.jpg" width="450" alt="Mouth helmet supplies" /></a>
</p>
<p>
  I attached each half of the dental model to the grill of the helmet with pieces of wood to support them and position them so they'd be realistically in place.
</p>
<p>
<a href="http://www.flickr.com/photos/unavoidablegrain/4455855005/" title="Lower jaw attached by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2694/4455855005_2a3254bd0f.jpg" width="450" alt="Lower jaw attached" /></a>
</p>
<p>
 <a href="http://www.flickr.com/photos/unavoidablegrain/4455855799/" title="teeth attached to the helmet by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4041/4455855799_3a85f76094.jpg" width="450" alt="teeth attached to the helmet" /></a>
</p>
<p>
  Already at this stage you could start to see how the composition of the final piece would take shape, what it would look like from inside.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4456636722/" title="View from the un-plastered mouth helmet by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4068/4456636722_4881a77a0f.jpg" width="500" height="335" alt="View from the un-plastered mouth helmet" /></a>
</p>
<p>
  Once I had the teeth in place, I used the plaster cloth to close-up the helmet around the teeth, laying it over the mouth guard supports and up to the helmet's brim.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4456637830/" title="Plastered but unpainted mouth helmet upside down by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2791/4456637830_a7b4d444b8.jpg" width="335" height="500" alt="Plastered but unpainted mouth helmet upside down" /></a>
</p>
<p>
  Once the helmet dried, I tried it on. I found that the view inside was nearly exactly what I'd been hoping for (like stepping into the photograph I'd taken with the projector) except slightly too light. That problem, combined with the emerging aesthetics of the white plaster on the black helmet lead me to decide to paint the plaster black and to finish it with a high gloss acrylic medium so it would match the industrial shine of the helmet.
</p>
<p>
  At this stage, I started having other curious people in the shop try the helmet on as well. One outcome I wasn't expecting was how striking people look while wearing the helmet. It's an image that makes me laugh with a shiver of aesthetic delight every time I see it.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4455861763/" title="Shh... by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2790/4455861763_83fbca5cdc.jpg" width="450" alt="Shh..." /></a>
</p>
<p>
  Another unexpected effect I discovered when watching other people put the helmet on was that it turned them into performers, acting out various ideas they have of what it would mean to be fully identified with their own mouths.
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4455862175/" title="Asli wearing the unpainted mouth helmet by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2494/4455862175_344ac59ff8.jpg" width="376" height="500" alt="Asli wearing the unpainted mouth helmet" /></a>
</p>
<p>
  I finished the helmet by painting the plaster black and giving its outside a coat of glossy gel medium (not shown here, but you get the effect since the black paint was still drying when this photo was taken).
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4456641722/" title="Painted mouth helmet 3/4 view by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2767/4456641722_bc10a6aae5.jpg" width="450" alt="Painted mouth helmet 3/4 view" /></a>
</p>
<p>
  The result was something that, on the outside, looked like a costume from a low-rent recreation of Alien, but on the inside looked a lot like you were occupying the back of a giant's mouth:
</p>
<p>
  <object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&photo_secret=9ca0444806&photo_id=4452127303"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&photo_secret=9ca0444806&photo_id=4452127303" height="300" width="400"></embed></object>
</p>
<p>
 <em>(This video was shot by simply wedging my iphone into the helmet and carrying it around the shop awkwardly. Eventually, I'd like to install handles on the side of the helmet and a hinged tripod mount inside of it so that it would be easier to shoot with a real video camera mounted inside.)</em>
</p>
<p>
  Finishing this project makes me want to build other helmets that push you into the other sense organs: one that would force you to look out from an ear or a nose. In addition to the qualities of the mouth helmet, those would be even more disorienting as they'd have to use periscope-style reflection to angle your vision down (in the case of the nose) or to the side (for the ear). And once I had the whole ensemble together they'd make for great film-making or performance props.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Atari ET Cartridge 3D Model: my first Blender project</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/03/atari_et_cartridge_3d_model_my.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19754</id>

    <published>2010-03-17T03:23:21Z</published>
    <updated>2010-03-17T03:26:35Z</updated>

    <summary> For day 3 of the 4-in-4, I made a Blender model of an Atari cartridge, specifically, &quot;ET: The Extra-Terrestrial&quot; from 1983. This model is the first step on a large project I&apos;m undertaking: a diorama depicting a hoard of...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="3d" label="3d" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="4in4" label="4-in-4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="atari" label="atari" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="history" label="history" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="itp" label="itp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="modeling" label="modeling" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="videogame" label="video game" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
  For day 3 of the <a href="http://4-in-4.com/">4-in-4</a>, I made a Blender model of an Atari cartridge, specifically, "ET: The Extra-Terrestrial" from 1983. This model is the first step on a large project I'm undertaking: a diorama depicting a hoard of millions of ET cartridges buried in a dump outside of Alamogordo, NM.
</p>
<p>
  When Atari undertook the design of the game, they expected wild commercial success. The whirlwind development process was designed to capitalize on the incredible popularity of Steven Spielberg's movie. Unfortunately, it also lead to an extremely poor level of quality in the final game, which was boring, confusing, and featured abominable graphics:
  </p>
  <p>
    <object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/r-pzdPLfy9Y&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/r-pzdPLfy9Y&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
  </p>
  <p>
  The result was millions of unsold cartridges that the company had no way to dispose of. Eventually, the hit on the solution of burying the cartridges in a dump outside of Alamogordo, New Mexico.
</p>
<p>
  <img src="http://farm4.static.flickr.com/3070/3081864418_b7e5da916a_o.jpg" width="450px" />
</p>
<p>
   I first heard of the dumping from Nick Montfort's excellent history of the Atari 2600, <a href="http://www.amazon.com/Racing-Beam-Computer-Platform-Studies/dp/026201257X">Racing the Beam</a>. For more on the topic, see the <a href="http://en.wikipedia.org/wiki/E.T._the_Extra-Terrestrial_(video_game)#Atari_video_game_burial">Wikipedia</a> and <a href="http://www.snopes.com/business/market/atari.asp">Snopes</a> articles on the topic.
</p>
<p>
  This 3D modeling project is the first step towards building a diorama depicting the full dump with millions of cartridges, the concrete slab that covers it, and the New Mexico dessert and sunset above.
</p>
<p>
  To start out, I searched out high quality scans of the Atari cartridge online. I ended up finding them on <a href="http://www.atariage.com">Atari Age</a>. Here, for example, is the front of the cartridge:
</p>
<p>
  I used these high resolution scans and some other research to figure out the dimensions of the cartridge and set about building a basic rectangular solid that matched these dimensions. 
</p>
<p>
  <img src="http://www.atariage.com/2600/carts/c_ET_Silver_front.jpg" />
</p>
<p>
  I used <a href="http://www.blender.org/">Blender</a> as my 3D modeling tool of choice on the recommendation of <a href="http://39forks.com/">Scott Wayne Indiana</a>. With lots of help from Scott, I managed to get going with the basics in Blender and, eventually, I had a rectangular solid with the right proportions:
</p>
<p>
<a href="http://www.flickr.com/photos/unavoidablegrain/4439937434/" title="ET Cartridge 3D Model slab by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2679/4439937434_9536339803.jpg" width="439" height="488" alt="ET Cartridge 3D Model slab" /></a>
</p>
<p>
  (Note, both Scott and I found <a href="http://nystic.com/blender.php">Super3boy</a>'s Blender tutorials to be incredibly useful in the process of getting started with this complicated program. It's both humbling and really helpful to learn by listening to a bunch of tutorials narrated by a kid who sounds like he's about 7.)
</p>
<p>
  After I had that down, I started working on adding the cutaways for the stickers on the top and front. Using Blender's "add difference marker" functionality, I was able to use separate rectangles to carve those out from the original slab. Then, finally, I added a bevel to the edge of the cartridge to simulate the roundness of the original:
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4439160883/" title="ET Cartridge 3D Model with insets by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2700/4439160883_38147fb961.jpg" width="488" height="488" alt="ET Cartridge 3D Model with insets" /></a>
</p>
<p>
  Writing down this process in a few simple sentences makes it sound linear and straightforward. It was actually difficult and somewhat challenging. Without Scott's help, the entire endeavor would have taken significantly longer.
</p>
<p>
  Once I had the basic shape of the cartridge worked out, it was time to try to add the graphic stickers to the top and side. After an initial attempt to navigate Blender's nest of menus (aided by <a href="http://www.packtpub.com/article/textures-in-blender">this tutorial on textures in Blender</a>) I eventually managed to map the image all over my entire object:
</p>
<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4439160851/" title="ET Cartridge 3D Model with misapplied graphic by atduskgreg, on Flickr"><img src="http://farm3.static.flickr.com/2729/4439160851_a3dd511b94_o.jpg" width="382" height="417" alt="ET Cartridge 3D Model with misapplied graphic" /></a>
</p>
<p>
  This was not quite what I wanted, but it was exciting to see an image actually appear for the first time. Eventually, I found the <a href="http://wiki.blender.org/index.php/Doc:Manual/Materials/Multiple_Materials">Blender wiki tutorial on multiple materials</a> which explained how I could apply an image to just one specific surface of my object. This also made the Blender menu system start to make sense to me for the first time (by explaining the way selections made in certain menus modified the options available to you in others.) The result was a cartridge that was really starting to look right:
</p>

<p>
  <a href="http://www.flickr.com/photos/unavoidablegrain/4439160821/" title="ET Cartridge 3D Model with correctly applied graphic by atduskgreg, on Flickr"><img src="http://farm5.static.flickr.com/4015/4439160821_db59874656_o.jpg" width="359" height="454" alt="ET Cartridge 3D Model with correctly applied graphic" /></a>
</p>
<p>
  The end cap should have <a href="http://www.atariage.com/2600/carts/c_ET_Silver_end.jpg">the ET logo image</a> on it &mdash; which isn't working for some reason I don't understand &mdash; but otherwise this is really starting to be what I was aiming for. I even added an additional gnarled black texture to emulate the molded plastic of the non-sticker part of the cartridge. I'll probably include that texture in the final print, but I'm not showing it here because it made it very hard to see the details of my 3D modeling in Blender's preview images. 
</p>
<p>
  There are two next steps forward for me on this project. One of them is to get a 3D print made of this cartridge, mainly to gain experience with 3D printing. The second step is to make a model of the <a href="http://www.atariage.com/box_page.html?SystemID=2600&SoftwareID=998&BoxStyleID=3&ItemTypeID=BOX">ET box</a> and start combining multiples of that box and this cartridge into the limitless pile that sits under the Alamogordo sand.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>An He Built A Crooked House: A probabilistic 8-bit composition</title>
    <link rel="alternate" type="text/html" href="http://www.urbanhonking.com/ideasfordozens/2010/03/an_he_built_a_crooked_house_a.html" />
    <id>tag:www.urbanhonking.com,2010:/ideasfordozens//44.19750</id>

    <published>2010-03-15T18:24:26Z</published>
    <updated>2010-03-15T20:07:00Z</updated>

    <summary> Yesterday, for the second day of the 4-in-4, I made a semi-randomly generated 8-bit song. Way back during orientation week, a few of us were talking about music, as you do when you&apos;re just getting to know a new...</summary>
    <author>
        <name></name>
        
    </author>
    
    <category term="4in4" label="4-in-4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="8bit" label="8bit" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="aphextwin" label="aphex twin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bloopsaphone" label="bloopsaphone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="music" label="music" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.urbanhonking.com/ideasfordozens/">
        <![CDATA[<p>
Yesterday, for the second day of the <a href="http://4-in-4.com/">4-in-4</a>, I made a semi-randomly generated 8-bit song.
</p>
<p>
   Way back during orientation week, a few of us were talking about music, as you do when you're just getting to know a new group of people. Specifically, <a href="http://www.markomanriquez.com">Marko Manriquez</a> and I shared our enthusiasm for Aphex Twin. We talked about the incredible variation and detail that shows up in the drum programming in pieces such as <a href="http://www.urbanhonking.com/ideasfordozens/songs/09%20Girl_Boy%20Song.mp3">Girl/Boy Song</a> and wondered whether such intricately constructed music could possibly have just been made by hand or whether some kind of algorithm helped out.
</p>
<p>
  I speculated that you could accomplish something like that style of non-repeating linear invention by using probability. You would just declare a set of allowed pitches and metric values to be assigned to each instrument and then allow the computer to randomly choose between those over-and-over to compose the piece. That would allow you to shape the aesthetics of the output without having to go in and make all the tiny micro decisions required to through-compose something with as much mind-boggling detail as the drums in Girl/Boy Song. (For the record, I don't believe that this is actually how Aphex Twin works; I think he actually writes all of that stuff by hand.)
</p>

<p>
  Having had this idea, I sat down during the Tisch Convocation and wrote <a href="http://github.com/atduskgreg/Whoops">Whoops</a>, a Ruby library that uses probability to generate scores for <a href="http://github.com/mental/bloopsaphone">bloopsaphone</a>, _why the lucky stiff's 8-bit music generator. Bloopsaphone uses a very simple text-based score system where, for exaple, "4C" would mean "play a quarter note on C", etc., which made it very easy to implement this idea in an environment where I could get instant feedback in the form of listenable music.
</p>
<p>
  This was all back in late August of last year. I haven't touched Whoops since.
  
  </p>
  <p>So, yesterday, for 4-in-4 I decided to actually use Whoops to create a piece of music. I started by defining a bunch of bloopsaphone sounds: hi-hat, snare, bass drum, lead melody, and bass. Next, I started using Whoops to define what I wanted the drums to do.
  </p>

<script src="http://gist.github.com/333088.js?file=and_he_built_a_crooked_house_generator.rb"></script>
<p>
  If you look at lines 53-57 of that ruby script, you can see the Whoops commands that generated the drums. I'm always having them play C since they're a percussive instrument anyway and their pitch doesn't matter. For the bass drum and hi-hat, I mostly want quarter notes (this is Aphex-inspired IDM, after all) so I give "4" as the most common value in the duration array. I want the snare to feel like it's largely on the 2 and 4 so I mostly give it half notes in its duration array. And then, I added one more sequence for the hi-hat, "hat_detail", that plays spastically on small duration increments (16,32, and even 18 and 9 for 16th and 8th note triplets). I gave that sequence mostly rests (the empty string) as its pitches so that it would only play occasionally; I wanted it to be decorative, not totally take over.
</p>

<p>
    Once I had the drums starting to sound how I wanted, I figured out a chord progression for the melody and bass to follow and wrote down sets of notes that they should be playing for each chord. Then, I followed the bloopsaphone API to play the resulting music and also made sure that my script would spit out the actual notes generated for each instrument. That way, each time I ran the script, I'd get a different musical result and if I liked one, I could copy and paste the score for it so I could reproduce it and even modify and improve it if I wanted to.
</p>
<p>
  After lots of runs, I had a few versions of things that I liked. The melody was the weakest. Some runs would have bits of compelling melody in the patterns that happened to come out but it was rare also not to have bits of weird dissonance or just melodic incoherence. So, I went in and edited the melodies I liked best to tweak them into a more compelling shape through classic melodic rules such as repeating patterns that were already there or adding sequence and series. The results sounded like this, for example: <a href="http://itp.nyu.edu/~gab305/whoops_demo_2.mp3">whoops_demo_2.mp3</a>.
</p>
<p>
  Here's the score for that fragment:
</p>

<script src="http://gist.github.com/333085.js?file=and_he_built_a_crooked_house_verse.rb"></script>
<p>
  Once I had a couple of bits that I liked, I outputted the instruments one at a time to AIFFs using Soundflower and GarageBand and then brought the resulting files into Logic to mix. I was surprised at how easy and fun it was to mix these 8-bit sounds. I wasn't sure how well they'd take reverb, compression, and the other normal tools of music mixing, but I ended up pretty happy with the sounds that I got.
</p>
<p>
  I didn't have time to put together a long-scale composition, but I did finish a sketch for a song. I'm calling it "And He Built A Crooked House". Listen to it here: <a href="http://itp.nyu.edu/~gab305/music/and_he_built_a_crooked_house.mp3">And He Built A Crooked House</a>.
</p>]]>
        
    </content>
</entry>

</feed>
