<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aaron Uhrmacher | Aaron Uhrmacher</title>
	<atom:link href="http://aaronuhrmacher.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aaronuhrmacher.com</link>
	<description></description>
	<lastBuildDate>Wed, 22 Feb 2012 02:59:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>TEDx Talk: Digital Death, Online Afterlife</title>
		<link>http://aaronuhrmacher.com/video/tedx-talk-digital-death-online-afterlife/</link>
		<comments>http://aaronuhrmacher.com/video/tedx-talk-digital-death-online-afterlife/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 12:13:05 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[digital death]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[online death]]></category>
		<category><![CDATA[personal archiving]]></category>
		<category><![CDATA[TEDx]]></category>
		<category><![CDATA[telestory]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1480</guid>
		<description><![CDATA[Video of my TEDx Talk titled, "Digital Death, Online Afterlife"]]></description>
			<content:encoded><![CDATA[<p><center><iframe width="560" height="345" src="http://www.youtube.com/embed/GNNoeIWFeoE?rel=0" frameborder="0" allowfullscreen></iframe></center></p>
<p>Hello, my name is Aaron Uhrmacher, and I’ve always been interested in how we remember people. Today, I specifically want to look at how our digital tools are changing the way that we remember and memorialize people as well as some of these tools that are helping us to do that better. Let’s start by taking a look at how we live.</p>
<p>What’s astounding to me is that without even thinking about it, we’re creating a rich, online archive of our real lives. Now it can be debated as to the extent that our online sharing represents who we are, but the numbers are astounding. I took a look at the average user of several services just to represent an average output for a user on any of these services in a given year. If you multiply that over ten years, or twenty or thirty, you start to see that we are putting a lot of our lives online. And even though the motivation for all of this sharing may be to connect with people today, it’s becomes this valuable record that we can look back on.</p>
<p>There are a few sites out there that prompt you to remember moments from you own life. Here’s a tool that was created by the site Photojojo geared towards photo enthusiasts. When a user signs up, the <a href="http://photojojo.com/timecapsule/" target="_blank">Photojojo Time Capsule</a> accesses the user&#8217;s Flickr account and twice a month sends emails to the user with images they took a year ago.</p>
<p><a href="http://4squareand7yearsago.com/" target="_blank">4square and 7 years ago</a> is another brilliant tool built by fans that allows Foursquare users to receive emails every day with reminders about the places they checked in on the service a year previously. Both these tools are in place to help the user remember and reflect on moments in their own lives.</p>
<p>And while all these services are fun, in the end we’re just adding to this incredible amount of clutter to our digital inboxes. There’s no way to tell which social media updates are important, and it’s difficult to imagine how a family member or descendent might take all this data from multiple sites with differing data structures and organize it to create a meaningful representation of the individual. It will happen one day, but we’re not there yet.</p>
<p>This collective memory is a big part of our culture. We’ve always collected the papers and correspondence of famous writers, authors, statesmen and performers. The practice implies that by examining all of their “stuff,” we will gain a better insight into the life and times in which they lived. These individuals simply pass boxes of their papers and other memorabilia off to a museum or university staff who spend thousands of hours organizing and making sense of the collection to facilitate an easy way for researchers and other interested parties to access it. We don’t have the same tools yet for our social media. Yet.</p>
<p>My friend Lisa passed away a little over a year ago, and I still think about her often. Sometimes I’ll see someone that resembles her and think about her. Or sometimes someone will laugh in a way that reminds me of her. I think that’s pretty natural. But then there are sometimes that I think about her because technology won’t let me forget. For example, I have her listed three times in my iPhone because of the way that Facebook, GMail and the iPhone sync differently on my phone. And each entry has different pictures of her and information about her culled from these networks we both shared. But I can’t seem to bring myself to remove her name from my address book, so every couple of weeks I’ll skim past her name and the memory of her is triggered once more.</p>
<h2 class="pullquote">What’s interesting is that in the absence of formal services that address our digital afterlife, we leverage existing services in new ways.</h2>
<p> Lisa’s Facebook page is one destination where people go and leave messages both for Lisa, her friends and her memory. And every year around her birthday, I get a little reminder from Facebook which can be both welcome and off-putting.</p>
<p>It seems that (rightly so) most major social networks are focused on their living customers and not those who have passed away. However, the digital afterlife service Entrustet estimates that over 375,000 US Facebook users will die this year. That’s approximately 3 per minute! So we can’t ignore this element of our social lives any longer.</p>
<p>As far as social networks go, Facebook offers users the opportunity to transform a user’s profile into a memorial page once provided with their death certificate. The same goes for LinkedIn. But what about the others? Well, the Terms of Service vary greatly by company, and it becomes more of a legal issue than anything else. With no iron, Google requires a death certificate and other documents mailed to them. Like a letter with a postal stamp! Or you can fax them. Flickr will delete the content. YouTube will pass on the content to next of kin (but they have to know about the sites in the first place).</p>
<p>All of this requires that those who survive us are knowledgeable enough about our online lives to preserve our content, and unfortunately that’s just not the case.</p>
<p>Luckily, the emerging digital preservation industry is more concerned with finding ways to pass on passwords and usernames. And it’s kind of a legal grey area right now. Companies like <a href="http://blog.legacylocker.com/who-controls-your-memories-data-online-391/" target="_blank">Legacy Locker</a>, <a href="https://www.entrustet.com/" target="_blank">Entrustet</a> and <a href="http://www.datainherit.com/en/home.html" target="_blank">Data Inherit</a> allow users to create a secure repository for usernames and passwords to send to beneficiaries in the result of your death.</p>
<p>Another service, <a href="http://memolane.com/site/" target="_blank">Memolane</a>, is a web aggregator of sorts. Once you grant the site access to your social media profiles, you can see all of your social media updates laid out together on a timeline.</p>
<p>I created a project, titled <a href="http://aaronuhrmacher.com/portfolio/all-my-life/" title="All My Life">All My Life</a>, last Fall as I started to think about my own digital media. This piece essentially pulls in all of my status updates from the 30 or so sites that I update regularly and creates a way non-linear way to browse them.</p>
<p>There are a few companies that are trying to formalize the personal archival process. <a href="http://storycorps.org" target="_blank">StoryCorps</a> is an oral history project that allows anyone to visit one of the non-profits booths or mobile units and record a 45-minute interview to be saved in the Library of Congress. Although the production and archival process is completely professional, it’s still just one story.</p>
<p>When it comes to archiving a life story to pass on to future generations, <a href="http://1000memories.com" target="_blank">1000memories</a> is one of the start-ups that tries to provide an online destination for memories as well as community mourning. Users can visit the site and share photos, text, videos and all sorts of digital ephemera. And the combination of all this media contributed by the people that knew the memorialized one best provides a rich resource for future generations.</p>
<p>So now that we’ve looked at what’s going on in the middle, let’s take a quick glimpse at the fringe. We’ll start with the analog. This is from the New York based graphic designer Nick Felton. Each year, he creates a <a href="http://feltron.com/ar10_01.html" target="_blank">beautiful infographic</a> representing incredibly detailed statistics about his behavior during the course of a year. Since his father passed away last year, the 2010 report was dedicated to him, and all of the data therein was culled from the postcards, letters, ticket stubs and other analog “stuff” he left behind. It was a lot of work, I’m sure, but the resulting book of a man’s life summed up by the ephemera he collected over his lifetime is tremendous.</p>
<p>What if what you wanted to leave behind was not the stuff that represented you, but an actual copy of yourself instead? You can. Here’s a service called <a href="http://virtualeternity.com/" target="_blank">Virtual Eternity</a>, where you can train an avatar to answer questions as if it were, well, you. Rather than try and explain, I thought I’d give you a quick demo.</p>
<p>Before I conclude, I want to tell you about how all of this research has prompted me to consider my own mortality. I thought about all of this data I’m creating and how it might someday have to be sorted by my children or their children, and although I have no problem burdening them with my legacy, I thought there might be a better way. My project, <a href="http://telestory.org" target="_blank">Telestory</a>, aims to fill in the gaps between services like 1000memories and StoryCorps. When a user signs up for the service, they can determine when they want to be called (for example, once a month, only on their birthday, or twice a year). At the appointed time, the user automatically receives a call from the service and they are prompted to answer a question from one of the categories they’ve selected. The stories are then saved in a time capsule format for 25 years before they become publicly available. In this way, I hope to build a format for preserving the stories that matter and passing them from one generation to the next.</p>
<p>So there we are. Benjamin Franklin once said that nothing in this world is certain besides death and taxes. I might disagree. While we can’t yet live forever, our voices now can. Thank you very much. <span class="story-end">*</span></p>
<p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/presentations/speaking-at-tedx/' rel='bookmark' title='Speaking at TEDx'>Speaking at TEDx</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/video/tedx-talk-digital-death-online-afterlife/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Play Pop N Scream at Geekdown TONIGHT in NYC</title>
		<link>http://aaronuhrmacher.com/art/play-pop-n-scream-at-geekdown-tonight-in-nyc/</link>
		<comments>http://aaronuhrmacher.com/art/play-pop-n-scream-at-geekdown-tonight-in-nyc/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 14:17:11 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1472</guid>
		<description><![CDATA[Visit Geekdown 2011 on August 13, 2011 to play Pop N Scream]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/27634449?portrait=0&amp;color=ffffff" width="580" height="326" frameborder="0"></iframe></p>
<p>If you&#8217;re in NYC tonight, come down to the 92Y in Tribeca to play <a href="http://geekdown.com/#1802600/Aaron-Uhrmacher-and-Steve-Aquillano-Pop-N-Scream" target="_blank">Pop &#8216;N Scream</a>, the game developed by <a href="http://blog.steveaquillano.com/" target="_blank">Steve Aquillano</a> and myself using <a href="http://www.megaphonelabs.com/" target="_blank">MegaPhone Labs</a> technology.<br />
<br />
Doors open at 8.<br />
Tickets are $10/each.<br />
<a href="http://geekdown.com" target="_blank">Geekdown Website</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/art/play-pop-n-scream-at-geekdown-tonight-in-nyc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pop N Scream</title>
		<link>http://aaronuhrmacher.com/redial/pop-n-scream/</link>
		<comments>http://aaronuhrmacher.com/redial/pop-n-scream/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 16:37:21 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Redial]]></category>
		<category><![CDATA[interactive games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[megaphone labs]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1462</guid>
		<description><![CDATA[Pop N Scream is a physical carnival like game where two players compete using their mobile phones to keep their respective balloons from getting popped.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/26926135?portrait=0&amp;color=ff0179" width="580" height="326" frameborder="0"></iframe></p>
<p>Built by Aaron Uhrmacher and <a href="http://blog.steveaquillano.com/" target="_blank">Steve Aquillano</a></p>
<h3>Synopsis</h3>
<p>Pop N Scream is a fun circus like game where participants use their mobile phones to pop balloons.</p>
<h3>Description</h3>
<p>It&#8217;s loud! It&#8217;s fun! In Pop N Scream, users compete against each other by making sounds into their phones to keep their respective balloons from popping on the ceiling. As the players attempt to match the volume pattern generated by the computer, observers watch the balloons rise and fall in a virtual tug-of-war, until one player&#8217;s balloon finally POPS!</p>
<h3>User Scenario</h3>
<ul>
<li> Two users step up and dial the respective numbers on the Pop N Scream display. </li>
<li> Once connected, each player can watch how his/her voice reacts to the light meter.</li>
<li> When the game starts, players try to match the volume of their voice to the middle light bar, which is generated by the computer.</li>
<li> The computer checks to see how many seconds each user has hit the correct volume level. Whoever is correct the most times in a given period will see their balloon move downward while their competitor&#8217;s balloon rises towards the ceiling.</li>
<li> The object of the game is to keep the balloon from rising too high and getting popped.</li>
</ul>
<h3>Implementation</h3>
<ul>
<li>Pop N Scream is built using java as well as proprietary interactive phone service software developed and graciously shared by MegaPhone Labs.</li>
</ul>
<h3>Exhibitions</h3>
<ul>
<li> <a href="http://itp.nyu.edu/shows/spring2011/2011/04/25/pop-n-scream/" target="_blank">ITP Spring Show</a> &#8211; NYU, 2011</li>
<li> <a href="http://geekdown.com/#1802600/Aaron-Uhrmacher-and-Steve-Aquillano-Pop-N-Scream" target="_blank">Geekdown</a> &#8211; 92Y Tribeca, 2011</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/redial/pop-n-scream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Telestory Thesis Presentation</title>
		<link>http://aaronuhrmacher.com/presentations/telestory-thesis-presentation/</link>
		<comments>http://aaronuhrmacher.com/presentations/telestory-thesis-presentation/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 17:16:49 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[interaction design]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[storytelling]]></category>
		<category><![CDATA[thesis]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1457</guid>
		<description><![CDATA[Video documentation of my ITP thesis presentation of Telestory in May, 2011.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/27008640?portrait=0&amp;color=ffffff" width="580" height="326" frameborder="0"></iframe>
<p><a href="http://vimeo.com/27008640">Telestory Thesis Presentation</a> from <a href="http://vimeo.com/uhrmacher">Aaron</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Video documentation of the presentation I gave in May 2011 for my ITP thesis project, <a href="http://aaronuhrmacher.com/telestory">Telestory</a>.</p>
<p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/thesis/presenting-my-thesis-today/' rel='bookmark' title='Presenting My Thesis Today!'>Presenting My Thesis Today!</a></li>
<li><a href='http://aaronuhrmacher.com/presentations/speaking-at-tedx/' rel='bookmark' title='Speaking at TEDx'>Speaking at TEDx</a></li>
<li><a href='http://aaronuhrmacher.com/python/upcoming-poetry-performance/' rel='bookmark' title='Upcoming Poetry Performance'>Upcoming Poetry Performance</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/presentations/telestory-thesis-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gotham Guide Included in MOMA&#8217;s &#8220;Talk To Me&#8221; Exhibit</title>
		<link>http://aaronuhrmacher.com/projects/gotham-guide-included-in-momas-talk-to-me-exhibit/</link>
		<comments>http://aaronuhrmacher.com/projects/gotham-guide-included-in-momas-talk-to-me-exhibit/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 16:16:56 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[gotham guide]]></category>
		<category><![CDATA[MoMa]]></category>
		<category><![CDATA[QR codes]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1439</guid>
		<description><![CDATA[I am honored to announce that my project, Gotham Guide, is included in the new exhibition that starts this week at MoMA titled, &#8220;Talk to Me&#8221;. Related posts: Introducing Gotham Guide]]></description>
			<content:encoded><![CDATA[<p><img alt="MOMA Talk To Me" src="http://t2.gstatic.com/images?q=tbn:ANd9GcTF_WRYDlLA0yn4dPaTZYnfxFnFn5Q7i7uH7qiwPezCsM1wIeZId_40keuYKw" title="MOMA Talk To Me" class="alignright" width="197" height="255" />I am honored to announce that my project, <a href="http://gothamguide.com">Gotham Guide</a>, is included in the new exhibition that starts this week at MoMA titled, &#8220;<a href="http://moma.org/interactives/exhibitions/2011/talktome/objects/140009/">Talk to Me&#8221;</a>.</p>
<p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/1-2-10/introducing-gotham-guide/' rel='bookmark' title='Introducing Gotham Guide'>Introducing Gotham Guide</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/projects/gotham-guide-included-in-momas-talk-to-me-exhibit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mad Lips</title>
		<link>http://aaronuhrmacher.com/computational-cameras/mad-lips/</link>
		<comments>http://aaronuhrmacher.com/computational-cameras/mad-lips/#comments</comments>
		<pubDate>Sat, 14 May 2011 03:00:54 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Computational Cameras]]></category>
		<category><![CDATA[face detection]]></category>
		<category><![CDATA[openCV]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1341</guid>
		<description><![CDATA[I recreated the Mad Libs from my youth for the video age, which I titled Mad Lips. Mad Lips works like this: The application starts up and asks the user a question, such as &#8220;what do you do if your waitress brings the wrong order?&#8221; The program then prompts you to answer the question and records your reply. Once your response is recorded, the program plays a famous movie scene and, at the appropriate time, substitutes your lips reciting your response to the question with a key actor during the crucial moment in the scene. The final version looks something like this: and like this: Technically, here&#8217;s what&#8217;s happening: The program uses the Minim library to record the audio and the native Processing MovieMaker&#8230;]]></description>
			<content:encoded><![CDATA[<p>I recreated the <a href="http://www.madlibs.com/">Mad Libs</a> from my youth for the video age, which I titled Mad Lips.</p>
<p>Mad Lips works like this:</p>
<ul>
<li>The application starts up and asks the user a question, such as &#8220;what do you do if your waitress brings the wrong order?&#8221; </li>
<li>The program then prompts you to answer the question and records your reply.</li>
<li>Once your response is recorded, the program plays a famous movie scene and, at the appropriate time, substitutes your lips reciting your response to the question with a key actor during the crucial moment in the scene.</li>
</ul>
<p>The final version looks something like this:</p>
<p><iframe src="http://player.vimeo.com/video/23710914?byline=0&amp;portrait=0&amp;color=834A81" width="480" height="360" frameborder="0"></iframe></p>
<p>and like this:</p>
<p><iframe src="http://player.vimeo.com/video/23710921?byline=0&amp;portrait=0&amp;color=834A81" width="480" height="360" frameborder="0"></iframe></p>
<p>Technically, here&#8217;s what&#8217;s happening: </p>
<p>The program uses the Minim library to record the audio and the native Processing MovieMaker library to record the video. I&#8217;m also calling the OpenCV library to calculate face detection and then approximating the location of the mouth using some basic math, which is the only part of the video that&#8217;s recorded. Once the audio and video are recorded, it uses the GStreamer library to playback the movie clip and then inserts the recently recorded video in the middle, substituting the user&#8217;s lips for the actor&#8217;s at a pivotal scene.</p>
<p>Here&#8217;s the Processing code: </p>
<pre class="brush: java">
// Comp Cameras Final Project
// Aaron Uhrmacher
// May 2011

import codeanticode.gsvideo.*;
import hypermedia.video.*;
import processing.video.*;
import java.awt.Rectangle;
import ddf.minim.*;

// AUDIO
Minim minim;
AudioInput in;
AudioRecorder recorder;
AudioPlayer player;

// VIDEO
GSMovie movie;
GSMovie movie2;
OpenCV opencv;
Rectangle bestRect = new Rectangle(0, 0, 0, 0);

// VARIABLES
boolean playBack = false;
boolean recordingLoaded = false;
PImage baby;
int state = 5;
PFont font;
int startingTime;
boolean movieNotStarted = true;

// recording movie: objects and variables
MovieMaker mm;
boolean readyToRecord = false;
boolean recordingStarted = false;
String title = &quot;Baby&quot;;
int m, h;
int newFrame = 0;
int newFrame2 = 0;

void setup() {
  size(640, 352);
  baby =  loadImage(&quot;baby.png&quot;);
  opencv = new OpenCV( this );
  opencv.capture( 320, 240 );                   // open video stream
  opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&gt; front face detection : &quot;haarcascade_frontalface_alt.xml&quot;

  font = loadFont(&quot;Apollo.vlw&quot;);
  textFont(font); 

  // VIDEO RECORDING VARIABLES
  m = minute();
  h = hour();
  println(&quot;Press &#039;E&#039; to enable recording&quot;);

  // AUDIO
  minim = new Minim(this);
  in = minim.getLineIn(Minim.STEREO, 2048);
  recorder = minim.createRecorder(in, &quot;data/myrecording.wav&quot;, true);

  movie = new GSMovie(this, &quot;baby.mov&quot;);
  startingTime = millis() - 1000;
}

void movieEvent(GSMovie movie) {
  movie.read();
}

public void stop() {
  opencv.stop();
  in.close();
  if ( player != null ) {
    player.close();
  }
  minim.stop();
  super.stop();
}

void draw() {

  if (state == 0 &amp;&amp; movieNotStarted) {
    movie.play();
    movieNotStarted = false;
  }

  else if (state == 5) {
    background (0);
    fill (255);
    text (&quot;Mad Lips&quot;, 20, 50);
    text(&quot;What&#039;s your favorite&quot;, 20, 120);
    text(&quot;bumper sticker slogan?&quot;, 20, 150);
    text (&quot;Press &#039;A&#039; To Record Your Answer&quot;, 20, 250);
    if (key == &#039;a&#039;) {
      state = 1;
      println(state);
    }
  }

  else if (state == 0) {
    if (1 &lt; movie.width &amp;&amp; 1 &lt; movie.height) {
      if (newFrame != movie.frame()) {

        if (movie.time() &gt;=15.5) { // BEGIN MOVIE PLAYING
          movie.pause();
          movie.jump(457);
          playBack =true;
          state = 6;
          println(&quot;NEW STATE: &quot; + state);
        }
      }
      image(movie, 0, 0, width, height);
    }
  }

  else if (state == 1) {
    if (!playBack) {
      opencv.read();
      // proceed detection
      Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );
      // display the image
      PImage frame = opencv.image(); // get the video
      if (faces.length &gt; 0) {
        float lower_3 = (faces[0].height / 3) *2;
        float x_offset = (faces[0].width * 0.25);
        // the mouth PImage comes from the video, so it is essentially a mask
        PImage mouth = frame.get((int)(faces[0].x + x_offset), (int)(faces[0].y + lower_3), (int)(faces[0].width - x_offset), (int)(faces[0].height /3));
        mouth.resize(110, 47); // resize the mouth video
        image(mouth, 240, 205);  // place the mouth under the png image
      }

      image(baby, 0, 0);
    }
  }

  else if (state == 3 ) {
    if (movie.available()) {
      //movie.pause();
      // movie.jump(294);
      //movie.read();
      movie.play();
      println(&quot;playing movie&quot;);
    }
    image(movie, 0, 0, width, height);
  }

  if (readyToRecord == true) {
    mm.addFrame();
  }

  if (state == 6) {
    if (playBack) {
      if (!recordingLoaded) {
        //  println(&quot;loading movie&quot;);
        movie2 = new GSMovie(this, &quot;Jack.mov&quot;);
        player = minim.loadFile(&quot;data/myrecording.wav&quot;, 2048);
        recordingLoaded = true;
        movie2.play();
        player.play();
      }
      if (1 &lt; movie2.width &amp;&amp; 1 &lt; movie2.height) {
        if (newFrame2 != movie2.frame()) {
          // println(&quot;ready to playback&quot;);
          // movie2.play();
          image(movie2, 0, 0, width, height);
          if (!movie2.isPlaying()) {
            state = 3;
            println(&quot;NEW STATE: &quot; + state);
          }
        }
      }
    }
  }
}

void keyPressed() {
  if (key == &#039;s&#039;) {        // start or stop the record head when the ’s’ is pressed
    if ( recordingStarted == true ) {
      if ( readyToRecord == true ) {
        readyToRecord = false;
        recorder.endRecord();
        minim.stop();
        println( &quot;Cut&quot; );
      }

      else if ( readyToRecord == false ) {
        readyToRecord = true;
        recorder.beginRecord();
        println( &quot;Rolling&quot; );
      }
    }
    else {
      println( &quot;Press &#039;E&#039; to enable recording&quot; );
    }
  }
  if ( key == &#039;e&#039; ) {          // create new movie for saving
    if ( recordingStarted == false ) {
      recordingStarted = true;
      // compression and frame rate options
      mm = new MovieMaker( this, width, height, &quot;data/&quot;+title+&quot;.mov&quot;, 15, MovieMaker.ANIMATION, MovieMaker.HIGH );
      println();
      println( &quot;Press &#039;S&#039; to start and stop the record head&quot; );
      println( &quot;Press &#039;X&#039; to save the movie and exit the sketch&quot; );
    }
  }
  if (key == &#039;x&#039;) {                      // Finish the movie if the ‘x’ is pressed
    if (recordingStarted == true) {
      mm.finish();
      player = recorder.save();
      if (readyToRecord == true) {

        println(&quot;Cut&quot;);
      }
      println(&quot;Print!&quot;);
      state = 0;
    }
  }
  if (key == &#039;p&#039;) {
    playBack = true;
  }
}
</pre>
<p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/computational-cameras/opencv-face-tracking/' rel='bookmark' title='OpenCV Face Tracking'>OpenCV Face Tracking</a></li>
<li><a href='http://aaronuhrmacher.com/computational-cameras/10-face-tracking-examples/' rel='bookmark' title='10 Face Tracking Examples'>10 Face Tracking Examples</a></li>
<li><a href='http://aaronuhrmacher.com/computational-cameras/kinect-portraits/' rel='bookmark' title='Kinect Portraits'>Kinect Portraits</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/computational-cameras/mad-lips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Showetry</title>
		<link>http://aaronuhrmacher.com/python/showetry/</link>
		<comments>http://aaronuhrmacher.com/python/showetry/#comments</comments>
		<pubDate>Mon, 09 May 2011 20:25:16 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reading and Writing Electronic Text]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1310</guid>
		<description><![CDATA[Chris and I collaborated on our final presentation for Reading and Writing with Electronic Text, which we titled, &#8220;Showetry.&#8221; There were two parts to the performance. For the first, we programmatically searched the movie &#8220;Revenge of the Nerds&#8221; using the subtitle text file to find any referenced to &#8216;nerd&#8217; or &#8216;nerds.&#8217; Then, using a combination of Popcorn.js and HTML5, we essentially created a real time clip reel of each instance and played it sequentially (video coming soon). Since the titled of the evening&#8217;s performance was &#8220;Hello Word,&#8221; we also changed the text from &#8216;nerd&#8217; to &#8216;word&#8217; in all of the subtitles as they appeared. The second component of our performance were a series of poems that we read. Our Python script generated these poems&#8230;]]></description>
			<content:encoded><![CDATA[<div class='page columnize'><p>Chris and I collaborated on our final presentation for Reading and Writing with Electronic Text, which we titled, &#8220;Showetry.&#8221; </p>
<p>There were two parts to the performance. For the first, we programmatically searched the movie &#8220;Revenge of the Nerds&#8221; using the subtitle text file to find any referenced to &#8216;nerd&#8217; or &#8216;nerds.&#8217; Then, using a combination of Popcorn.js and HTML5, we essentially created a real time clip reel of each instance and played it sequentially (video coming soon). Since the titled of the evening&#8217;s performance was &#8220;Hello Word,&#8221; we also changed the text from &#8216;nerd&#8217; to &#8216;word&#8217; in all of the subtitles as they appeared.</p>
<p>The second component of our performance were a series of poems that we read.<br />
<h2 class="pullquote">Our Python script generated these poems automatically by analyzing the subtitles of 50 YouTube videos based on the keywords that we provided.</h2>
<p> When it found the word or phrase, it returned the line in the closed captioning from where it was found. What I love about these programs, in addition to the randomness achieved through pulling the same words from videos in a range of contexts, is the imperfections of the transcriptions themselves. Here are the texts of the two poems that I read:</p>
<p><strong>I NEED</strong></p>
<p>I need you to survive.<br />
And I&#8217;m like, &#8220;Oh UGH! Why did I need coffee now?&#8221;<br />
That way to I can actually go<br />
ahead and carve out that area that I need.<br />
Since I need this to kind of come up in an angle<br />
I&#8217;m going to start at an angle.<br />
I&#8217;m fall and then I&#8217;m going to see where I need<br />
to adjust my line. I&#8217;m not going to use any.<br />
I realized I had a lot of very difficult memories<br />
that I need to let go of.<br />
Is what I need to do right now while listening<br />
to good music. You don&#8217;t even wanna see.<br />
I love you, I need you, yeah.<br />
I love you, I need you, oh, babe.<br />
And I need you like a heart needs a beat.<br />
That&#8217;s why I need to search for you.<br />
I need a new car.<br />
Charles Please marry me, Fiona.<br />
I want you, I need you, I love you.<br />
I need you.<br />
I&#8217;ll lend an ear.<br />
To find out what I need to repair.</p>
<p>======================</p>
<p><strong>I THINK</strong></p>
<p>I think in this economy these voters.<br />
I think maybe those are the fastest guys we got.<br />
WTF? I think I&#8217;m having an stroke,<br />
Suffering a white guy overload.<br />
Speed of light in a vacuum, and actually,<br />
now that i think about it.<br />
And I think maybe I should faint. But I don&#8217;t. NO.<br />
And I think maybe I should faint. But I don&#8217;t. NO.<br />
Making juice at home a pain.<br />
Well I think that&#8217;s why the Easy Go Juicer&#8230;<br />
I think Iraq will be a dominant<br />
issue. It is the issue of our era.<br />
Ron Paul: Well, I think the party has lost<br />
its way, because the conservative wing&#8230;<br />
Ron Paul: Well, the lower the taxes the better,<br />
and I think cutting taxes would be beneficial.<br />
No I think the&#8230;<br />
Yeah I&#8230;<br />
Yes, I think so.<br />
Guys without the capital.<br />
I think this guy in the dark so it&#8217;s pretty good<br />
they came too,<br />
Well kid that&#8217;s my analysis.<br />
And I think that that&#8217;s&#8230;<br />
I mean I-I think that that&#8217;s I think that<br />
now that the show is over,<br />
I think we can put our differences behind us&#8230;<br />
Arsenio: I think you were his inspiration.<br />
Ali: Do I think??<br />
He&#8230;I think he likes it.<br />
Hank, I thin that&#8217;s why, in the end, all<br />
we can really do is be kind to each other.<br />
Joe the plumber,<br />
I think he&#8217;s really shiny.<br />
I think this is an ignoramus statement.<br />
Umm, I was even a person who thought&#8230;<br />
I think we should grow<br />
That&#8217;s&#8230;No, but I think<br />
that&#8217;s exactly the problem.<br />
I think that goes against<br />
the idea of American exceptionalism.<br />
Actually, Liz, I think you<br />
wanna jump up to Robert.<br />
yeah if I had you, ya, ya, ya you, ya, ya, ya,<br />
you, ya, ya (I think he&#8217;s having a seizure)<br />
I think I am going to leave now.<br />
Wait, aren&#8217;t you going to try to<br />
scheme?<br />
I think a lot of people just hope these people will die.<br />
I think you&#8217;re right. -But, you know, worst case scenario<br />
It provides a very important<br />
distraction.<br />
I think talking about you don&#8217;t need God for<br />
existence? I think it is too audacious a remark.<br />
I think I&#8217;ll press the iBlend button.<br />
Nah dude, I think this is clear enough.<br />
It&#8217;s been really fun to watch, a this point,<br />
I think I ought to clarify a few things. First<br />
I think I have to puke again.</p>
<p>The audio of the performance is here: </p>
<p><object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F14969553&amp;show_comments=false&amp;auto_play=false&amp;color=460bb8"></param><param name="allowscriptaccess" value="always"></param> <embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F14969553&amp;show_comments=false&amp;auto_play=false&amp;color=460bb8" type="application/x-shockwave-flash" width="100%"></embed></object>   <span><a href="http://soundcloud.com/aaronu/final-performance">Final Performance</a> by <a href="http://soundcloud.com/aaronu">aaronu</a></span></p>
</div><p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/python/upcoming-poetry-performance/' rel='bookmark' title='Upcoming Poetry Performance'>Upcoming Poetry Performance</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/python/showetry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acrostic Poetry</title>
		<link>http://aaronuhrmacher.com/python/acrostic-poetry/</link>
		<comments>http://aaronuhrmacher.com/python/acrostic-poetry/#comments</comments>
		<pubDate>Mon, 09 May 2011 19:57:57 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Reading and Writing Electronic Text]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1309</guid>
		<description><![CDATA[I re-wrote the midterm Chris and I presented using three functions to generate acrostic poems similar to those we presented at the midterm.]]></description>
			<content:encoded><![CDATA[<div class='page columnize'><p>I re-wrote the midterm Chris and I presented using functions to generate acrostic poems similar to those we presented at the midterm. </p>
<p>The first function (split_lines) splits the source text into a list of lines and attempts to clean up the punctuation to make the poem flow more smoothly. The second function (get_poem) uses a dictionary and a list to create a poem. It first creates a dictionary keyed by the first letter of each line and then adds it to an empty list. The important part of this function is that is makes sure that every poem generated does not use the same lines as its source. The third function (jumble_lines) mixes up the words of each line in the poem with increasing frequency. It&#8217;s not perfect, but it basically tries to mix up 2% of the first line, 4% of the second line, etc. However, the first word of the line is not touched to help preserve the acrostic component of the final piece.</p>
<p>Here&#8217;s the code:</p>
<pre class="brush: python">
def split_lines(text):
   #Splits input text into list of lines

    text = text.replace(&#039;\r\n&#039;, &#039;\n&#039;)
    text = text.replace(&#039;\n\n&#039;, &#039;&lt; $brk$&gt;&#039;)
    text = text.replace(&#039;\n&#039;, &#039; &#039;)
    text = text.replace(&#039;. &#039;, &#039;.&lt; $brk$&gt;&#039;)
    text = text.replace(&#039;? &#039;, &#039;?&lt; $brk$&gt;&#039;)
    text = text.replace(&#039;! &#039;, &#039;!&lt; $brk$&gt;&#039;)

    lines = text.split(&#039;&lt; $brk$&gt;&#039;)                   # split the text at the marker, get list of lines
    lines = [line.strip() for line in lines]        # strip leading and trailing spaces of all lines
    lines = filter(None, lines)                     # filter out empty lines

    return lines

def get_poem(poem_word, lines):

    import string
    from collections import defaultdict
    import random

    lines_starting_with = defaultdict(list)

    # Create the dictionary
    for line in lines:
        ch = line[0].upper()
        if ch in string.ascii_uppercase:
            lines_starting_with[ch].append(line)

    poem = []
    for ch in poem_word.upper():
            line = random.choice(lines_starting_with[ch])
            poem.append(line)
    return poem

def _shuffled_word(word):
    from random import shuffle

    listword = list(word[1:])
    shuffle(listword)
    return &#039;&#039;.join([word[0]]+listword)

def jumble_lines(poem_lines, jumble_extra = False):

    import random

    step_size = 2
    if jumble_extra:
        step_size = round(100.0/len(poem_lines))

    new_lines = []
    for i, line in enumerate(poem_lines):
        words = line.split()
        pct = step_size*(i+1)/100.0
        n = int(round(pct*len(words)))
        n = min(n, len(words)-1)

        new_words = words[:]
        if len(words) &gt; 2:
            for j in range(n):
                k = random.randint(1, len(new_words)-1)
                word = new_words.pop(k)
                # Character shuffling
                new_words.insert(random.randint(1, len(new_words)-1), word)

        assert len(new_words) == len(words) and new_words[0][0] == line[0], (new_words, line)
        new_lines.append(&#039; &#039;.join(new_words))
    return new_lines

def main():
    import sys
    with open(sys.argv[2]) as in_file:
        text = in_file.read()

    lines = split_lines(text)
    poem = get_poem(sys.argv[1], lines)
    jumbled_poem = jumble_lines(poem, jumble_extra=True)
    print &#039;\n&#039;.join(jumbled_poem)

if __name__ == &#039;__main__&#039;:
    main()
</pre>
<p>And here&#8217;s a sample poem for &#8216;Jameson&#8217; generated using James Joyce&#8217;s <a href="http://www.gutenberg.org/cache/epub/4300/pg4300.txt">ULYSSES</a>:</p>
<p><strong>J</strong>ewels flash diamonds better.<br />
<strong>A</strong>nd of the major, partial to old his drop spirits.<br />
<strong>M</strong>uscular christian.<br />
<strong>E</strong>.<br />
<strong>S</strong>trange feeling would it be.<br />
<strong>O</strong>, shall I expire!<br />
<strong>N</strong>ever mind.</p>
<p>And here&#8217;s a sample poem using the wine &#8216;Alicante&#8217; generated from the text of <a href="http://www.gutenberg.org/ebooks/1184">THE COUNT OF MONTE CRISTO</a>, where the alcohol is referenced:</p>
<p><strong>A</strong>s for the more count, had he could not gulf have been overwhelmed if a thunderbolt fallen at his feet and opened an immense before him.<br />
<strong>L</strong>ean a little the left.<br />
<strong>I</strong>t useless search at night, to delayed investigation Dantes therefore all and was until the morning.<br />
<strong>C</strong>onsider my that fully believed I at had accomplished the end and of success, undertaking, for termination also which hopes I from had exactly husbanded my my the it just hold I to of upon strength my enterprise.<br />
<strong>A</strong>li present was that table, himself alone wait at admirably, and acquitted so the guest to complimented his host thereupon.<br />
<strong>N</strong>ow, in not to M. presume be to this, have, and if also inviting beforehand I of agreeable with you, order them, to on thought<br />
<strong>T</strong>he was cry his Noirtier&#8217;s terror of on start seemed to lips, which from stopped eyes.<br />
<strong>E</strong>ugenie coldly count, to M. to Cristo and earnest first connection became moment two with escape conversation the of her Monte the study, whence very that cheerful noisy and to occasional voices being piano heard soon to notes availed Danglars of the that bowed of in Mademoiselle to herself preferred assured his the society when and</p>
</div><p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/python/al-pacinos-munged-monologues/' rel='bookmark' title='Al Pacino&#8217;s Munged Monologues'>Al Pacino&#8217;s Munged Monologues</a></li>
<li><a href='http://aaronuhrmacher.com/python/lebowski-poetics-with-python/' rel='bookmark' title='Lebowski Poetics With Python'>Lebowski Poetics With Python</a></li>
<li><a href='http://aaronuhrmacher.com/python/acrostic-poetry-generated-in-python/' rel='bookmark' title='Acrostic Poetry Generated in Python'>Acrostic Poetry Generated in Python</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/python/acrostic-poetry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acrostic Poetry Generated in Python</title>
		<link>http://aaronuhrmacher.com/python/acrostic-poetry-generated-in-python/</link>
		<comments>http://aaronuhrmacher.com/python/acrostic-poetry-generated-in-python/#comments</comments>
		<pubDate>Mon, 09 May 2011 19:00:17 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Reading and Writing Electronic Text]]></category>
		<category><![CDATA[midterm]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1308</guid>
		<description><![CDATA[Chris and I created a Python script that generates acrostic poems using Twitter as the source text.]]></description>
			<content:encoded><![CDATA[<div class='page columnize'><p>For the midterm, Chris and I created a Python script that generates acrostic poems using Twitter as the source text. More specifically, we wanted to create drunken poetry that spelled out the name of an alcohol while mixing up the text as if the reader were getting inebriated.</p>
<p>Here are the rules by which the poetry is generated:</p>
<ul>
<li>We wanted to generate acrostic poems. These are poems where the first letter of each line spells out a word. </li>
<li>These poems are meant to be read aloud, so we wanted our script to progressively jumble the text to make the listener think that the reader is getting progressively drunk. </li>
<li>We needed a relevant source text. For this we pulled tweets that referenced &#8216;drinking&#8217;,'#drunk&#8217; , &#8216;wasted&#8217;, or &#8216;#wasted&#8217; and tried to specifically find tweets published from the same region as where the alcohol originated.</li>
</ul>
<p>You can read more about the technical process and see the code <a href="http://itp.nyu.edu/~cpa234/?p=381">here</a>.</p>
</div><p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/python/lebowski-poetics-with-python/' rel='bookmark' title='Lebowski Poetics With Python'>Lebowski Poetics With Python</a></li>
<li><a href='http://aaronuhrmacher.com/python/upcoming-poetry-performance/' rel='bookmark' title='Upcoming Poetry Performance'>Upcoming Poetry Performance</a></li>
<li><a href='http://aaronuhrmacher.com/python/al-pacinos-munged-monologues/' rel='bookmark' title='Al Pacino&#8217;s Munged Monologues'>Al Pacino&#8217;s Munged Monologues</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/python/acrostic-poetry-generated-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Poetry Performance</title>
		<link>http://aaronuhrmacher.com/python/upcoming-poetry-performance/</link>
		<comments>http://aaronuhrmacher.com/python/upcoming-poetry-performance/#comments</comments>
		<pubDate>Tue, 03 May 2011 10:49:59 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reading and Writing Electronic Text]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://aaronuhrmacher.com/?p=1288</guid>
		<description><![CDATA[This is the final project for my Reading and Writing Electronic Text class, where we have explored new ways of generating poetry using the Python programming language.]]></description>
			<content:encoded><![CDATA[<div class='page columnize'><p>Together with my Reading and Writing with Electronic Text class, I&#8217;m excited to invite you to an upcoming experimental poetry reading titled, &#8220;Hello Word!&#8221;</p>
<p>Friday, May 6th 2011<br />
7pm<br />
721 Broadway, New York, NY<br />
Ground floor (Common room)<br />
FREE</p>
<p>This is the final project for a group of us who have spent the semester exploring new forms of creative expression and generative poetry using the Python programming language.</p>
<p>Adam Parrish has more information as well as links to previous class work <a href="http://www.decontextualize.com/2011/04/hello-word-reading-and-writing-electronic-text-final-performance/">here</a>.</p>
<p><a href="http://www.flickr.com/photos/lateplate/5670685873/in/photostream/">This is an example of the type of performance Chris and I intend to present.</a></p>
<p>Hope to see you there!</p>
</div><p>Related posts:<ol>
<li><a href='http://aaronuhrmacher.com/python/lebowski-poetics-with-python/' rel='bookmark' title='Lebowski Poetics With Python'>Lebowski Poetics With Python</a></li>
<li><a href='http://aaronuhrmacher.com/python/al-pacinos-munged-monologues/' rel='bookmark' title='Al Pacino&#8217;s Munged Monologues'>Al Pacino&#8217;s Munged Monologues</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://aaronuhrmacher.com/python/upcoming-poetry-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

