<?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>Ben Turner&#039;s Blog</title>
	<atom:link href="http://blog.benturner.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.benturner.com</link>
	<description>finding identity, and building a life worth remembering</description>
	<lastBuildDate>Wed, 22 Feb 2012 18:51:37 +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>Nature of Code Week #4: Particle Systems</title>
		<link>http://blog.benturner.com/2012/02/22/nature-of-code-week-4-particle-systems/</link>
		<comments>http://blog.benturner.com/2012/02/22/nature-of-code-week-4-particle-systems/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 01:05:17 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Nature of Code]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1919</guid>
		<description><![CDATA[Nature of Code continues to be fascinating.  Professor Shiffman&#8217;s notes are incredibly well-done and very easy to understand as he explains pretty dense physics problems sequentially &#8212; the forthcoming kickstarted Nature of Code book will be well worth its price. This week we covered particle systems, inheritance, and polymorphism.  The particle systems go hand in [...]]]></description>
			<content:encoded><![CDATA[<p>Nature of Code continues to be fascinating.  Professor Shiffman&#8217;s notes are incredibly well-done and very easy to understand as he explains pretty dense physics problems sequentially &#8212; <a href="http://www.kickstarter.com/projects/shiffman/the-nature-of-code-book-project" onclick="pageTracker._trackPageview('/outgoing/www.kickstarter.com/projects/shiffman/the-nature-of-code-book-project?referer=');">the forthcoming kickstarted Nature of Code book</a> will be well worth its price.</p>
<p>This week we covered particle systems, inheritance, and polymorphism.  The particle systems go hand in hand with repelling forces, which were built upon applying forces to other objects, which was built upon vector movement.  I&#8217;ve been having to re-read the notes for each chapter several times each week to make sure I understand it.</p>
<p>Our homework:</p>
<p>&#8220;At this point we&#8217;re a bit deeper in the semester and approaching the midterm project. Feel free to simply start on a midterm idea or continue something you&#8217;ve been working on previously. If you would like to try an exercise related to particle systems, here are some suggestions:</p>
<ul>
<li>Use a particle system in the design of a &#8220;Mover&#8221; object. In other words take, say, one of our earlier examples and instead of rendering a Mover object as a simple circle, emit particles from the mover&#8217;s location. Consider using the <a href="http://www.shiffman.net/2011/02/13/asteroids-spaceship/" rel="nofollow" onclick="pageTracker._trackPageview('/outgoing/www.shiffman.net/2011/02/13/asteroids-spaceship/?referer=');">Asteroids</a> example and emit particles from the ship when a thrust force is applied.</li>
<li>Create a particle system where the particles respond to each other via forces. For example, what if you connect the particles with spring forces? Or an attraction / repulsion force?</li>
<li>Model a specific visual effect using a particle system &#8212; fire, smoke, explosion, waterfall, etc.</li>
<li>Create a simulation of an object shattering into many pieces. How can you turn one large shape into thousands of small particles?</li>
<li>Create a particle system in which each particle responds to every other particle. (Note we’ll be doing this in detail in Week 6.)&#8221;</li>
</ul>
<div>
<p>&nbsp;</p>
<p>I immediately started playing with creating systems of systems of particles, using Prof. Shiffman&#8217;s example code.  I turned down the particle size, increased the constrained force distance, and also increased the number of repelling objects to 60.  I had some particle systems randomly placed upon sketch startup, but also made it so you could add more systems upon mousePressed().  I tweaked the color and background to look more like fading embers or fire, then made the repeller objects very faint.  The particles gradually fade away until they die, using opacity as a measure of life strength, so that when opacity reaches 0, the particle dies.  This helps to preserve framerate.</p>
<p>The result is that the system ends up looking like Dorsey-ish flows of traffic, or seeing dynamic internet traffic as it passes through the world&#8217;s backbones at night.  Feedback in class suggested that I try to add repeller forces as geometrical shapes, to guide the particles instead of having random patterns generated.</p>
<pre class="brush: java;">Particle(PVector l) {
    acceleration = new PVector(0,0);
    velocity = new PVector(random(-.3,0.3),random(-.1,.1));
    location = l.get();
    lifespan = 200.0;
    randColor = color(int(random(150,230)),int(random(90,130)),int(random(25, 90)));
}</pre>
<p>and</p>
<pre class="brush: java;">for (ParticleSystem2 psX: systems) {
    psX.run();
    psX.addParticle();
    for (int i = 0; i &lt; repellers.length; i++) {
      psX.applyRepeller(repellers[i]);
    }
}</pre>
<p>A video:</p>
</div>
<p><a href="http://blog.benturner.com/2012/02/22/nature-of-code-week-4-particle-systems/"><em>Click here to view the embedded video.</em></a></p>
<p>Code at <a href="https://github.com/Xeus/Nature-of-Code-Homework/tree/master/wk4" onclick="pageTracker._trackPageview('/outgoing/github.com/Xeus/Nature-of-Code-Homework/tree/master/wk4?referer=');">Github</a> &amp; <a href="http://www.openprocessing.org/visuals/?visualID=53198" onclick="pageTracker._trackPageview('/outgoing/www.openprocessing.org/visuals/?visualID=53198&amp;referer=');">OpenProcessing.org</a>.</p>
<p>What I&#8217;m thinking now is that, for my NoC midterm and final, I can adapt my final from Intro to Computational Media last semester so that all my objects are essentially particles exerting forces on each other.</p>
<p>For a recap of my project, read <a href="http://blog.benturner.com/2011/12/08/genetic-crossings-icm-final-project-presentation/">this long blog post</a>.  Simply put, the project was a simulation incorporating the traits of people, nations, and religions, creating offspring who are summations of their genetics and environments.</p>
<p>I might try to make the text labels for each person orbit the particles, but this might result in a massive drop in framerate.  Here&#8217;s a screenshot of what my final project looked like.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2011/12/whole.jpg"><img class="alignnone  wp-image-500" title="whole" src="http://blog.benturner.com/wp-content/uploads/2011/12/whole-1024x594.jpg" alt="" width="1024" height="594" /></a></p>
<p>What&#8217;s good is that I didn&#8217;t attempt movement last semester, since I didn&#8217;t really know how to dynamically and smoothly move the &#8220;people&#8221; using vectors.  I am a little worried I&#8217;ll have to re-write some deep parts of the code in order to get this to work, but it&#8217;s a worthy project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/22/nature-of-code-week-4-particle-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Web Dev Week #4 Homework: Karaoke Flow</title>
		<link>http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/</link>
		<comments>http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 22:56:20 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[Dynamic Web Dev]]></category>
		<category><![CDATA[ITP]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1911</guid>
		<description><![CDATA[My Karaoke Flow project has now been moved over to Node.js Express.  What a joy!  Express is like a beautiful JavaScripty version of Sinatra for Ruby.  And then installing the node module nodemon is a perfect substitute for shotgun on Sinatra.  This stuff makes webdev exciting again! I upped the new code to github, which [...]]]></description>
			<content:encoded><![CDATA[<p>My Karaoke Flow project has now been moved over to Node.js <a href="http://expressjs.com/" onclick="pageTracker._trackPageview('/outgoing/expressjs.com/?referer=');">Express</a>.  What a joy!  Express is like a beautiful JavaScripty version of Sinatra for Ruby.  And then installing the node module <a href="https://github.com/remy/nodemon" onclick="pageTracker._trackPageview('/outgoing/github.com/remy/nodemon?referer=');">nodemon</a> is a perfect substitute for shotgun on Sinatra.  This stuff makes webdev exciting again!</p>
<p><a href="https://github.com/Xeus/Karaoke-Flow" onclick="pageTracker._trackPageview('/outgoing/github.com/Xeus/Karaoke-Flow?referer=');">I upped the new code to github</a>, which is using a few views to display the (so far minimal) code and templated structure.  I&#8217;ve also deployed the app to heroku; you can see it at <a href="http://karaokeflow.herokuapp.com/" onclick="pageTracker._trackPageview('/outgoing/karaokeflow.herokuapp.com/?referer=');">http://karaokeflow.herokuapp.com/</a> but nothing&#8217;s really working there yet since we haven&#8217;t learned how to hook into MongoDB yet.</p>
<p>Here&#8217;s some screens of the app now:</p>

<a href='http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/kf1/' title='kf1'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/kf1-150x150.jpg" class="attachment-thumbnail" alt="kf1" title="kf1" /></a>
<a href='http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/kf2/' title='kf2'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/kf2-150x150.jpg" class="attachment-thumbnail" alt="kf2" title="kf2" /></a>
<a href='http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/kf3/' title='kf3'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/kf3-150x150.jpg" class="attachment-thumbnail" alt="kf3" title="kf3" /></a>
<a href='http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/node/' title='node'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/node-150x150.jpg" class="attachment-thumbnail" alt="node" title="node" /></a>

<p>Next steps: set up the MongoDB structure, hook into it, and figure out a way to implement a timer that starts once someone creates a flow.  Then people need to be able to join that flow and everyone needs to be on the same timer.  I&#8217;m not sure how this will work &#8212; maybe I&#8217;ll just scale it back for now.  I&#8217;d also like to have random hiphop beats playing while people come up with their flows.  The production side, once someone starts performing &#8212; this will have to come at the late stages, if it&#8217;s possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/20/dynamic-web-dev-week-4-homework-karaoke-flow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Web: Week #3 Homework</title>
		<link>http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/</link>
		<comments>http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 05:38:26 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Mobile Web]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1888</guid>
		<description><![CDATA[For the homework, we were supposed to go through some JavaScript exercises in the browser console to play with the Document Object Model and with events.  We were also supposed to post some screenshots of the first pages made for our mobile apps.  To avoid spamming my blog, the rest of the post is below [...]]]></description>
			<content:encoded><![CDATA[<p>For the homework, we were supposed to go through some JavaScript exercises in the browser console to play with the Document Object Model and with events.  We were also supposed to post some screenshots of the first pages made for our mobile apps.  To avoid spamming my blog, the rest of the post is below the jump:</p>
<p><span id="more-1888"></span></p>
<p>Screenshot Gallery of both the mobile app and the homework exercises:</p>

<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/app2-2/' title='app2'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/app21-150x150.jpg" class="attachment-thumbnail" alt="app2" title="app2" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/app3/' title='app3'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/app3-150x150.jpg" class="attachment-thumbnail" alt="app3" title="app3" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/app2/' title='app2'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/app2-150x150.jpg" class="attachment-thumbnail" alt="app2" title="app2" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/app1/' title='app1'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/app1-150x150.jpg" class="attachment-thumbnail" alt="app1" title="app1" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console7/' title='console7'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console7-150x150.jpg" class="attachment-thumbnail" alt="console7" title="console7" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console6/' title='console6'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console6-150x150.jpg" class="attachment-thumbnail" alt="console6" title="console6" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console5/' title='console5'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console5-150x150.jpg" class="attachment-thumbnail" alt="console5" title="console5" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console4/' title='console4'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console4-150x150.jpg" class="attachment-thumbnail" alt="console4" title="console4" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console3/' title='console3'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console3-150x150.jpg" class="attachment-thumbnail" alt="console3" title="console3" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console2/' title='console2'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console2-150x150.jpg" class="attachment-thumbnail" alt="console2" title="console2" /></a>
<a href='http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/console1/' title='console1'><img width="150" height="150" src="http://blog.benturner.com/wp-content/uploads/2012/02/console1-150x150.jpg" class="attachment-thumbnail" alt="console1" title="console1" /></a>

<pre class="brush: java;">var main = document.getElementById("main");
main.className = "RedBackground";
mainkids = main.childNodes;
mainkids[0];
mainkids[1];
mainkids[0].textContent = "happy";
mainkids[1].style.display = "none";
mainkids[1].style.display = "inline";
mainkids[1].style.fontSize = "40pt";
mainkids[1].innerHTML = "&lt;button&gt;HI GUYS&lt;/button&gt;";
function buttonClick() {
  var answer = confirm("woot woot!");
  if (answer) {
    alert("nice!");
  }
  else {
    alert("whatevs...");
  }
}</pre>
<p>I made some concept images for the mobile app Phil and I are working on.  They were made primarily with jQuery Mobile and jQuery/UI.  The web version looks a lot better than the mobile version, but we didn&#8217;t really discover this till we loaded up the pages we made (broadcaster.html, viewer.html, and beacon.html) in our Android emulator, and then when I loaded up the app through Eclipse and PhoneGap onto my Samsung Galaxy Nexus ICS 4.0.2 phone.  So obviously our next minor task is to clean up the UI a bit (and further refine which buttons we need and which are redundant).  But mostly, it&#8217;s adjusting to more limited real estate on the screen, so there&#8217;s no room for columns.</p>
<p>Primarily our main problems so far have been figuring out exactly how the user will flow through the app from page to page.  We&#8217;ve assumed that we probably won&#8217;t work on a web client explicitly for this project (to direct viewers towards a phone broadcaster), just so we get more practice coding for a mobile app.  The format of HTML, JS, etc. though lends itself towards easily working on two separate client versions of the same content.  We are most worried about being able to interface with a phone&#8217;s GPS, its database (for images and video), and its camera (we know we won&#8217;t be able to do livestreaming via video at this point).</p>
<p>You can see the web mockups at this very early stage at <a href="http://benturner.com/streeteyes/" onclick="pageTracker._trackPageview('/outgoing/benturner.com/streeteyes/?referer=');">http://benturner.com/streeteyes/</a>.  Phil wrote up a post as part of our homework on <a href="http://philgroman.com/blog/2012/02/16/livebeam-mobile-web-project/" onclick="pageTracker._trackPageview('/outgoing/philgroman.com/blog/2012/02/16/livebeam-mobile-web-project/?referer=');">his blog</a>.</p>
<p>The screenshots of our mobile app:</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/app1.jpg"><img class="alignnone size-medium wp-image-1899" title="app1" src="http://blog.benturner.com/wp-content/uploads/2012/02/app1-300x269.jpg" alt="" width="300" height="269" /></a></p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/app21.jpg"><img class="alignnone size-medium wp-image-1902" title="app2" src="http://blog.benturner.com/wp-content/uploads/2012/02/app21-300x273.jpg" alt="" width="300" height="273" /></a></p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/app3.jpg"><img class="alignnone size-medium wp-image-1901" title="app3" src="http://blog.benturner.com/wp-content/uploads/2012/02/app3-300x267.jpg" alt="" width="300" height="267" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/15/mobile-web-week-3-homework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mobile Web: Homework and Project Proposal</title>
		<link>http://blog.benturner.com/2012/02/09/mobile-web-homework-and-project-proposal/</link>
		<comments>http://blog.benturner.com/2012/02/09/mobile-web-homework-and-project-proposal/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 19:30:50 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Mobile Web]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1870</guid>
		<description><![CDATA[For this week&#8217;s mobile web homework, we were to open the default PhoneGap app project within Eclipse and then mess with the underlying HTML and CSS within the JavaScript developer console.  I did some simple selections, creating a variable &#8220;test&#8221; to store the object of HTML containing all the &#8220;H1&#8243; elements, using &#8220;document.getElementsByTagName&#8221;.  After that, [...]]]></description>
			<content:encoded><![CDATA[<p>For this week&#8217;s mobile web homework, we were to open the default PhoneGap app project within Eclipse and then mess with the underlying HTML and CSS within the JavaScript developer console.  I did some simple selections, creating a variable &#8220;test&#8221; to store the object of HTML containing all the &#8220;H1&#8243; elements, using &#8220;document.getElementsByTagName&#8221;.  After that, I changed the innerHTML, style.color, and style.background to demonstrate how anything in the DOM can be manipulated using the console.</p>
<p>Screenshots:</p>
<div id="attachment_1871" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.benturner.com/wp-content/uploads/2012/02/pg1.jpg"><img class="size-medium wp-image-1871" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="pg1" src="http://blog.benturner.com/wp-content/uploads/2012/02/pg1-300x263.jpg" alt="" width="300" height="263" /></a><p class="wp-caption-text">HTML source</p></div>
<div id="attachment_1872" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.benturner.com/wp-content/uploads/2012/02/pg2.jpg"><img class="size-medium wp-image-1872" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="pg2" src="http://blog.benturner.com/wp-content/uploads/2012/02/pg2-300x232.jpg" alt="" width="300" height="232" /></a><p class="wp-caption-text">changing some H1 tags to black background</p></div>
<div id="attachment_1874" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.benturner.com/wp-content/uploads/2012/02/pg31.jpg"><img class="size-medium wp-image-1874" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="pg3" src="http://blog.benturner.com/wp-content/uploads/2012/02/pg31-300x234.jpg" alt="" width="300" height="234" /></a><p class="wp-caption-text">changing some H1 tags to red text</p></div>
<p>We also for our homework had to work on our final project proposals.  Me and Phil are working together on LiveBeam.  We have some pencil wireframe photos below, and they will be converted into the front end next week.  The plan is below.  We entered LiveBeam into the NYU ITP Pitch Fest, as well.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/IMG_20120208_164607.jpg"><img class="alignnone size-medium wp-image-1884" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="IMG_20120208_164607" src="http://blog.benturner.com/wp-content/uploads/2012/02/IMG_20120208_164607-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/IMG_20120209_155114.jpg"><img class="alignnone size-medium wp-image-1885" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="IMG_20120209_155114" src="http://blog.benturner.com/wp-content/uploads/2012/02/IMG_20120209_155114-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/IMG_20120209_155123.jpg"><img class="alignnone size-medium wp-image-1886" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="IMG_20120209_155123" src="http://blog.benturner.com/wp-content/uploads/2012/02/IMG_20120209_155123-225x300.jpg" alt="" width="225" height="300" /></a></p>
<div>
<p><strong><strong>Project: </strong></strong>LiveBeam</p>
<p><strong>Team:</strong></p>
<p>Phil Groman, Ben Turner</p>
<p><strong>Summary:</strong></p>
<p>LiveBeam is your eyes on the ground.  It coordinates people who want to see images or updates or video from a remote location, together with people with mobile phones who can provide that on-the-ground real-time information.</p>
<p><strong>Core Functionality:</strong></p>
<ol>
<li>There is a dynamic interface with a map locating active Broadcasters worldwide.  A “viewer” sees a “broadcaster” at a certain location on a digital map in his browser.  Broadcasters can update their profiles concerning events/ situations happening around them.</li>
<li>The viewer clicks on the broadcaster and requests multimedia from the broadcaster by way of sending a message through LiveBeam.</li>
<li>The broadcaster can accept the request and can look at the requesting viewer’s profile, captures the multimedia, and shares it via LiveBeam.</li>
<li>The viewer can chat with the broadcaster to direct the information, and leaves feedback and rates the quality and relevance of the video feed.</li>
<li>Levels of openness and privacy can be controlled by the broadcasters to only allow video requests from certain contact groups or individuals.</li>
<li>The viewer confirms receipt of the multimedia, ending the transaction and registering appropriate credit to both parties automatically.</li>
</ol>
<p>&nbsp;</p>
<p><strong><strong>Potential Use Cases:</strong></strong></p>
<ol>
<li>Check conditions at specific locations (traffic / weather / waves / lines at restaurants)</li>
<li>Share live sports / music events</li>
<li>Watch / broadcast breaking news as it happens</li>
<li>Stalk / spy on people</li>
<li>Idle travel to interesting locations</li>
<li>Live pornography</li>
<li>News organisations can access a global network of amateur video journalists</li>
<li>Friends can offer a request-based video feed in Facebook status updates &#8212; “Beautiful sunset over the East River &#8212; Join Me at LiveBeam”</li>
<li>Allows anyone to become a Broadcaster and to build a live audience</li>
</ol>
<p>&nbsp;</p>
<p><strong><strong>Potential Revenue Streams:</strong></strong></p>
<ol>
<li>Advertising &#8212; banners and pre-rolls</li>
<li>Subscription services &#8212; premium accounts with more viewing and broadcasting privileges and functionality</li>
<li>Partnership with a news agency</li>
<li>Sales of branded mobile handsets, optimized for broadcasting</li>
<li>Promotion of top curators and broadcasters, having them pay a fee for premium (see #2) but share revenue with them like YouTube does</li>
</ol>
<div></div>
<p>&nbsp;</p>
<p><strong><strong>Stage 1: Wireframing and Proposal (Due: 09 Feb 12)<br />
Show wireframes of what various screens may look like.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Convert meeting notes into proposal and project plan</li>
<li>Make wireframes showing mockups of main screens used by broadcasters and viewers</li>
<li>Documentation for class</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>Are we staying focused on our core functionality to get that working first?</li>
<li>Will we have enough time to build core functionality within the course’s 7-week timeframe?</li>
</ul>
<li>Resources:</li>
<ul>
<li>Adobe Photoshop, meetings, Google Docs</li>
</ul>
</ul>
<p>&nbsp;</p>
<p><strong><strong>Stage 2: Front-End Design (Due: 16 Feb 12)<br />
Convert wireframes to a front-end with dynamic interface, using jQuery Mobile, jQuery, CSS, JavaScript.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Make main user interfaces for broadcasters and viewers</li>
<li>Decide on buttons and layout</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>Avoid making the interface too complex with too many features or buttons</li>
</ul>
<li>Resources:</li>
<ul>
<li>jQuery Mobile, jQuery, CSS, JavaScript, virtual web host, PhoneGap</li>
</ul>
</ul>
<p>&nbsp;</p>
<p><strong><strong>Stage 3: Back-End Design (Due: 23 Feb 12)<br />
Add a back-end database to save data, change front-end so it can interface with the database.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Link up database with appropriate search and data entry queries via PHP/MySQL</li>
<li>Add in privacy settings (Google+ circles possibly, or just add individuals)</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>May not know exactly how we want to structure our data or db interfaces</li>
</ul>
<li>Resources:</li>
<ul>
<li>PHP, MySQL, HTML</li>
</ul>
</ul>
<p>&nbsp;</p>
<p><strong><strong>Stage 4: User Handshaking (Due: 23 Feb 12)<br />
Test and strengthen robustness of handshaking and connection between viewer and broadcaster.  Add in GPS/geolocation/triangulation/manual location entry.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Test with dummy accounts the basic interactions between viewers and broadcasters</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>Keep the interactions simple, work iteratively so as to avoid deep-rooted bugs</li>
<li>Will we need a user authentication system or can we use fake accounts for a demo?</li>
</ul>
<li>Resources:</li>
<ul>
<li>Other students, PHP, MySQL, PHP code breakpoint and use case testing</li>
</ul>
</ul>
<p>&nbsp;</p>
<p><strong><strong>Stage 5: Multimedia Input and Sharing (Due: 01 Mar 12)<br />
Add in video streaming or use external source.  Share video, photos, audio, text through LiveBeam after evaluating best options for each.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Add in GPS or other geolocational sharing</li>
<li>Allow broadcaster to send or share video and images</li>
<li>Allow viewer to see chat, video, etc. in viewer’s window</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>How accurate can we rely on the geolocation to be, or do we need to work around it?</li>
<li>Can we capture video or photos into PhoneGap?</li>
<li>Can we share video and photos through the app or will we rely on third-parties?</li>
<li>Will we need to link up with other services’ APIs?</li>
<li>Will we need to provide links to other services to show multimedia?</li>
</ul>
<li>Resources:</li>
<ul>
<li>PhoneGap, virtual web server, data hosting</li>
</ul>
</ul>
<p>&nbsp;</p>
<p><strong><strong>Stage 6: Use Cases and User Testing (Due: 01 Mar 12)<br />
Test with multiple users and pre-populated testing accounts.  Conduct actual tests within Manhattan.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Test core functionality with other ITP students</li>
<li>Fix bugs and add in redundancy for potential failpoints</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>Will need a lot of time to conduct proper user testing</li>
</ul>
<li>Resources:</li>
<ul>
<li>Other ITP students, extensive note-taking, video recording, screen capturing?</li>
</ul>
</ul>
<p>&nbsp;</p>
<p><strong><strong>Stage 7: Build a Presentation (Due: 08 Mar 12)<br />
Prepare a slide presentation including research, explanation of core functionalities, potential use cases.</strong></strong></p>
<ul>
<li>Tasks:</li>
<ul>
<li>Make slidedecks for presentations, both technical and business</li>
<li>Competitor research</li>
<li>Market research</li>
<li>Results of user testing</li>
<li>Explanation of core functionalities</li>
<li>Explanation of potential use cases</li>
</ul>
<li>Questions / Pitfalls:</li>
<ul>
<li>May need to conduct this stage throughout in order to stay on track</li>
<li>May need to wait to build business until after successful user adoption</li>
</ul>
<li>Resources:</li>
<ul>
<li>Meet with entrepreneurship mentors and Stern folks for advice</li>
</ul>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/09/mobile-web-homework-and-project-proposal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Redial: Playing with Asterisk &amp; Voicemail</title>
		<link>http://blog.benturner.com/2012/02/08/redial-playing-with-asterisk-voicemail/</link>
		<comments>http://blog.benturner.com/2012/02/08/redial-playing-with-asterisk-voicemail/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 16:03:50 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Redial]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1864</guid>
		<description><![CDATA[For Redial this week, I&#8217;m supposed to give a short presentation &#8212; I chose my topic to be dealing with phone security, operational security, basic cellphone theory, and the burners used in The Wire.  Should be fun.  I didn&#8217;t prepare any notes or make a slide presentation. This week&#8217;s homework for Redial involved building a [...]]]></description>
			<content:encoded><![CDATA[<p>For Redial this week, I&#8217;m supposed to give a short presentation &#8212; I chose my topic to be dealing with phone security, operational security, basic cellphone theory, and the burners used in The Wire.  Should be fun.  I didn&#8217;t prepare any notes or make a slide presentation.</p>
<p>This week&#8217;s homework for Redial involved building a simple voicemail dialplan.  Here&#8217;s mine:</p>
<p><code>[vt520_week2hw]<br />
;exten =&gt; s,1,Wait(1)<br />
;exten =&gt; s,n,SayDigits(${CALLERID(num)})<br />
; same =&gt; n,Playback(vm-num-i-have)<br />
; same =&gt; n,SayDigits(9725107983)<br />
; use Archer's joke voicemail sound<br />
;exten =&gt; s,n,Playback(demo-echotest)<br />
;exten =&gt; s,n,Echo()<br />
;exten =&gt; s,n,Playback(demo-echodone)<br />
;exten =&gt; s,n,Hangup()</code></p>
<p><code>[vt520]<br />
exten =&gt; s,1,Wait(1)<br />
;exten =&gt; s,n,Playback(tt-weasels)<br />
exten =&gt; s,n,Playback(/home/vt520/asterisk_sounds/archer_voicemail)<br />
exten =&gt; s,n,Goto(vt520-vm,s,1)</code></p>
<p><code>[vt520-vm]<br />
; vm-review: Press 1 to accept this recording. Press 2 to listen to it. Press 3 to re-record your message.<br />
exten =&gt; s,1,Voicemail(112@vt520_voicemail, u)<br />
;exten =&gt; s,n,Record(asterisk-recording%d:ulaw)<br />
exten =&gt; s,n,Playback(vm-review)<br />
;exten =&gt; s,n,Festival('Press 1 to continue or 2 to change your message')<br />
exten =&gt; s,n,WaitExten(10)<br />
exten =&gt; s,n,Hangup()<br />
;voicemail will go the a extension if * is hit during voicemail app<br />
exten =&gt; a,1,VoiceMailMain(112@vt520_voicemail)<br />
exten =&gt; a,n,Hangup()</code></p>
<p><code>exten =&gt; 1,1,Playback(queue-quantity1)<br />
exten =&gt; 1,n,SayNumber(18)<br />
exten =&gt; 1,n,Playback(queue-quantity2)<br />
exten =&gt; 1,n,Hangup()</code></p>
<p><code>exten =&gt; 2,1,Playback(${RECORDED_FILE})<br />
exten =&gt; 2,n,Playback(vm-review)<br />
exten =&gt; 2,n,WaitExten(10)<br />
exten =&gt; 2,n,Goto(vt520-vm,s,1)</code></p>
<p>Basically what is going on here is that when you dial in to my extension, it first plays back Sterling Archer&#8217;s elaborate voicemail hoax, as I&#8217;m not available to take the call:</p>
<p><iframe src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F35958755&amp;show_artwork=true" frameborder="no" scrolling="no" width="100%" height="166"></iframe></p>
<p>I recorded the audio off a copy of the Archer episode using fraps, then exported it to WAV via Adobe Premiere after trimming down the sound clip.  Then I had to convert the WAV to a .sln file using the command:</p>
<p><code>sox archer_voicemail.wav -t raw -r 8000 -s -w -c 1 archer_voicemail.sln</code></p>
<p>&#8230;which I learned about through <a href="http://www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk" onclick="pageTracker._trackPageview('/outgoing/www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk?referer=');">voip-info.org&#8217;s helpful wav conversion page</a>.</p>
<p>I also found <a href="http://www.voip-info.org/wiki/view/Asterisk+sound+files" onclick="pageTracker._trackPageview('/outgoing/www.voip-info.org/wiki/view/Asterisk+sound+files?referer=');">voip-info.org&#8217;s list of audio files and descriptions</a> to be very useful for locating exactly which pre-recorded sound file would be appropriate.</p>
<p>Once the voicemail message plays, the system prompts the caller to record a message.  I wasn&#8217;t able to get recording to work, though I did in other experiments manage to get it to try to record and then email me with the voicemail details.  But this dialplan WILL allow you to confirm the message you left and will then move to another &#8220;extension&#8221; via a menu, before eventually hanging up.</p>
<p>I used a Goto function between the initial voicemail message and the rest of the dialplan so that later I could make it loop back to recording the message again if necessary.</p>
<p>Shout-out to Archer and the Archer show crew and cast for the voicemail.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/archer.jpg"><img class="alignnone size-full wp-image-1866" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="archer" src="http://blog.benturner.com/wp-content/uploads/2012/02/archer.jpg" alt="" width="396" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/08/redial-playing-with-asterisk-voicemail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nature of Code: Forces &amp; Physics</title>
		<link>http://blog.benturner.com/2012/02/08/nature-of-code-forces-physics/</link>
		<comments>http://blog.benturner.com/2012/02/08/nature-of-code-forces-physics/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 15:28:38 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Nature of Code]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1860</guid>
		<description><![CDATA[Our homework this week was pretty wild, after going over some pretty epic notes on forces, physics, Newton&#8217;s laws, etc.  Here were the suggested exercises for homework: Rework your motion sketch from week 1 using PVector. Try incorporating the concept of forces into the environment by affecting only the acceleration. Create a formula for calculating a dynamic acceleration, one that [...]]]></description>
			<content:encoded><![CDATA[<p>Our homework this week was pretty wild, after going over some pretty epic notes on forces, physics, Newton&#8217;s laws, etc.  Here were the suggested exercises for homework:</p>
<ul>
<li>Rework your motion sketch from week 1 using PVector. Try incorporating the concept of <em>forces</em> into the environment by affecting <em>only</em> the acceleration. Create a formula for calculating a dynamic acceleration, one that changes over time based on any number of factors. What happens if you make more than one object via an array.</li>
<li>Using forces, simulate a helium-filled balloon floating upward (and bouncing off the top of a window). Can you add a wind force which changes over time, perhaps according to Perlin noise?</li>
<li>Create an example where instead of objects bouncing off the edge of the wall, an invisible force pushes back on the objects to keep them in the window. Can you weight the force according to how far the object is from an edge, i.e. the closer it is, the stronger the force?</li>
<li>Create pockets of air resistance / friction in a Processing sketch. Try using circles instead of rectangles, i.e. pockets of mud (or ice). What if you vary the strength (drag / friction coefficient) of each circle? What if you make some of them the opposite of drag—i.e., when you enter a given pocket you actually speed up instead of slow down?</li>
<li>Can you create an example where all of the Mover objects are attracted to the mouse, but repel each other? Think about how you need to balance the relative strength of the forces and how to most effectively use distance in your force calculations.</li>
<li>Research a force not covered in class and implement it as a vector.</li>
<li>Use the concept of forces to visualize some input (could be data, literal example would be get windspeed online and translate to a wind force in Processing, but feel free to think more abstractly)</li>
<li>Build a sketch that has both &#8220;Movers&#8221; and &#8220;Attractors&#8221;. What if you make the Attractors invisible? Can you create a pattern / design from the trails of objects moving around attractors? See the <a href="http://processing.org/exhibition/works/metropop/" rel="nofollow" onclick="pageTracker._trackPageview('/outgoing/processing.org/exhibition/works/metropop/?referer=');">Metropop Denim project by Clayton Cubitt and Tom Carden</a> for an example.</li>
</ul>
<p>&nbsp;</p>
<p>The above link is pretty cool.  It shows the possibilities for working with forces, attractors, and particles, combined with the more organic, natural shapes and motions that we&#8217;re learning in Nature of Code.  I think I want to start incorporating something like this into my 2D designs.</p>
<p><a href="http://processing.org/exhibition/works/metropop/claytoncubitt_mp09.jpg" onclick="pageTracker._trackPageview('/outgoing/processing.org/exhibition/works/metropop/claytoncubitt_mp09.jpg?referer=');"><img class="alignnone" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" src="http://processing.org/exhibition/works/metropop/claytoncubitt_mp09.jpg" alt="" width="708" height="458" /></a></p>
<p>Prof. Shiffman&#8217;s notes from his upcoming <a href="http://www.shiffman.net/teaching/nature/" onclick="pageTracker._trackPageview('/outgoing/www.shiffman.net/teaching/nature/?referer=');">Nature of Code book</a> are outstanding.  We&#8217;re currently learning how to affect objects using added forces which affect location, acceleration, and velocity with vectors.  So, just this type of code starts to create a more realistic physical environment: [code clipped for brevity]</p>
<pre class="brush: java;">PVector wind = new PVector(0.001,0);
PVector gravity = new PVector(0,0.1);
m.applyForce(wind);

void applyForce(PVector force) {
  PVector f = PVector.div(force,mass);
  acceleration.add(f);
}</pre>
<p>I had already converted my first homework assignment into an array of objects and added some extra forces and reactions for the penguins.  But I also wanted to try some other forces, without delving into some of the homework suggestions that seemed a little too complex right now for me (still need to play with orbits, motion in liquid, etc.).  The sketch I made is just a simple balloon with a random walk floating up, bouncing off the top of the screen.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/balloons.jpg"><img class="alignnone size-full wp-image-1861" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="balloons" src="http://blog.benturner.com/wp-content/uploads/2012/02/balloons.jpg" alt="" width="499" height="199" /></a></p>
<p><a href="http://www.openprocessing.org/visuals/?visualID=51626" onclick="pageTracker._trackPageview('/outgoing/www.openprocessing.org/visuals/?visualID=51626&amp;referer=');">Sketch is running at OpenProcessing.org</a>, and code is <a href="https://github.com/Xeus/Balloon" onclick="pageTracker._trackPageview('/outgoing/github.com/Xeus/Balloon?referer=');">at Github</a> and below the jump:</p>
<p><span id="more-1860"></span></p>
<pre class="brush: java;">// Ben Turner
// Nature of Code

// Experimenting with forces and physics.

Mover[] m = new Mover[5];

int numLoops = 0;
float ceilBumpTimeDecay = 0;
float ceilBumpVar = 0.0;
PImage park;

void setup() {
  size(500, 200);
  smooth();
  park = loadImage("park.jpg");
  for (int i=0; i &lt; m.length; i++) {
    m[i] = new Mover();
  }
}

void draw() {
  noStroke();
  fill(255, 200);
  //rect(0, 0, width, height);
  background(park);
  PVector wind = new PVector(0.01, 0);
  PVector gravity = new PVector(0, 0);
  PVector helium = new PVector(0, -0.002);

  for (int i=0; i &lt; m.length; i++) {
     if (m[i].timeLoops != 0) {
       ceilBumpVar = m[i].timeLoops;
       ceilBumpTimeDecay = (ceilBumpVar * 0.001);
       m[i].timeLoops--;
     }
     else {
       ceilBumpTimeDecay = 0.0;
     }
     PVector ceilingBump = new PVector(0, ceilBumpTimeDecay);
     if (mousePressed) {
       m[i].applyForce(wind);
     }
     m[i].display();
     m[i].applyForce(gravity);
     m[i].applyForce(helium);
     m[i].update();
     m[i].checkEdges();
     m[i].timeLoops = m[i].ceilingCollision();
     if (m[i].timeLoops &gt; 0) {
      m[i].applyForce(ceilingBump);
      m[i].timeLoops--;
    }
  }

  if (numLoops &gt; 500) {
    numLoops = 0;
  }
  else {
    numLoops++;
  }
}
class Mover {

  PVector location;
  PVector velocity;
  PVector acceleration;
  float mass;
  float xoff;
  int timeLoops;
  float maxSpeed;
  int r,g,b;
  float randomNoise;

  Mover() {
    location = new PVector(random(width), height-20);
    velocity = new PVector(0,random(0,0.01));
    acceleration = new PVector(0,random(0,0.3));
    mass = 1;
    xoff = 0.0;
    timeLoops = 0;
    maxSpeed = 8;
    randomNoise = random(0.0,0.5);
    r = round(random(255));
    g = round(random(255));
    b = round(random(255));
  }

  void applyForce(PVector force) {
    PVector f = PVector.div(force,mass);
    acceleration.add(f);
  }

  void update() {
    velocity.add(acceleration);
    velocity.limit(maxSpeed);
    location.add(velocity);
    acceleration.mult(0);
  }

  void display() {
    stroke(0);
    fill(r,g,b);
    xoff = xoff + .01;
    float x = location.x + noise(xoff+randomNoise) * 100;
    ellipse(x,location.y,12,19);
    line(x,location.y+10,x+3,location.y+18);
  }

  void checkEdges() {

    if (location.x &gt; width) {
      // location.x = 0;
      velocity.x = velocity.x * -1;
    } else if (location.x &lt; 0) {
       // location.x = width;
       velocity.x = velocity.x * -1;
    }
    if (location.y &gt; height) {
      velocity.y *= -1;
      location.y = height;
    }

    if (location.y &lt; 0) {
      velocity.y *= -.5;
      location.y = 0;
    }

  }

  int ceilingCollision() {
    if (location.y &lt; 0) {
      return timeLoops = 4;
    }
    else {
      return timeLoops = 0;
    }
  }

}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/08/nature-of-code-forces-physics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DWD: Karaoke Flow</title>
		<link>http://blog.benturner.com/2012/02/07/dwd-karaoke-flow/</link>
		<comments>http://blog.benturner.com/2012/02/07/dwd-karaoke-flow/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 02:54:41 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[Dynamic Web Dev]]></category>
		<category><![CDATA[ITP]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1853</guid>
		<description><![CDATA[For my week #2 homework in Dynamic Web Dev, my assignment was to play a bit with JavaScript and CSS in forms, to basically build a front-end prototype for a project for class. I decided to use this as an opportunity to do a simpler project (at least initially), called Karaoke Flow.  It could also [...]]]></description>
			<content:encoded><![CDATA[<p>For my week #2 homework in Dynamic Web Dev, my assignment was to play a bit with JavaScript and CSS in forms, to basically build a front-end prototype for a project for class.</p>
<p>I decided to use this as an opportunity to do a simpler project (at least initially), called Karaoke Flow.  It could also be called Rap Libs (like Mad Libs, <a href="http://www.nytimes.com/2011/06/10/arts/television/leonard-b-stern-creator-of-mad-libs-dies-at-88.html" onclick="pageTracker._trackPageview('/outgoing/www.nytimes.com/2011/06/10/arts/television/leonard-b-stern-creator-of-mad-libs-dies-at-88.html?referer=');">RIP the creator of Mad Libs <img src='http://blog.benturner.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </a> ), as suggested by one of my classmates.</p>
<p>Basically what Karaoke Flow is is a chance for me to use puns and wordplay (in the tradition of my Turner family and my dad&#8217;s poetry expertise) to create dope rhymes.  I also wanted to create a cool music project and learn how to DJ and make digital music possibly while at ITP.</p>
<p>Karaoke Flow is a party game.  Everyone gets a certain amount of time to create 2-4 lines of rap lyrics based on randomized prompts for two topics.  So each person will write some lyrics on something like &#8220;basketball&#8221; and &#8220;women&#8221;.  After, say, 5 minutes, the rhyme creation is over.  Then whoever&#8217;s got the mic next will get up and perform the randomly selected lyrics.</p>
<p>The emcee gets a mic, a random beat, and the random lyrics.  That&#8217;s it.  It&#8217;s his or her job to create the flow, matching lyrics to the beat, and possibly freestyling if confident enough.  It can be recorded, it can be based on just one set of two topics, or it could just be all sorts of randoms.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/karaokeflow.jpg"><img class="alignnone size-full wp-image-1854" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="karaokeflow" src="http://blog.benturner.com/wp-content/uploads/2012/02/karaokeflow.jpg" alt="" width="500" height="248" /></a></p>
<p>I was inspired by this on my long runs where I&#8217;d listen to Drake, Lil&#8217; Wayne, and Kanye.  Check out some of their winners:</p>
<p>Drake, &#8220;Fancy&#8221;:</p>
<blockquote>
<p style="padding-left: 30px;"><em>Jason had this girl Tammy with a purple Bentley</em><br />
<em>How she got it I ain&#8217;t never get to ask</em><br />
<em>I just knew that she was fine like a ticket on the dash</em></p>
</blockquote>
<p>Kanye West, &#8220;Hell of a Life&#8221;:</p>
<blockquote style="padding-left: 30px;"><p><em>One day I’m gon’ marry a porn star</em><br />
<em>We’ll have a big ass crib and a long yard</em><br />
<em>We’ll have a mansion and some fly maids</em><br />
<em>Nothin’ to hide, we both screwed the bridesmaid</em><br />
<em>She wanna role play, ‘til I roll over</em><br />
<em>I’mma need a whole day, at least rolled doja</em><br />
<em>What party is we goin’ to on Oscar day</em><br />
<em>‘Specially if she can’t get that dress from Oscar de</em><br />
<em>La Renta, they wouldn’t rent her, they couldn’t take the shame</em><br />
<em>Snatched the dress off her back and told her, “Get away.”</em><br />
<em>How could you say they live they life wrong?</em><br />
<em>When you never fuck with the lights on</em></p></blockquote>
<p>Kelly Rowland, Lil&#8217; Wayne, &#8220;Motivation&#8221;:</p>
<blockquote>
<p style="padding-left: 30px;"><em>Uh, girl I turn that thing into a rainforest</em><br />
<em>Rain on my head, call that brainstorming</em></p>
</blockquote>
<p>By the way, <a href="http://rapgenius.com/" onclick="pageTracker._trackPageview('/outgoing/rapgenius.com/?referer=');">rapgenius</a> is a great site.  It has highlighted lyrics with popups that explain all the references within each line of the song.  Helps you appreciate just how much cleverness goes into rap lyrics.</p>
<p>Right now the JS functionality is basically limited to a click() event for submitting, and a click() event for a popup for instructions and one for adding new text input boxes for more rap lyrics.</p>
<p>I&#8217;m assuming I can use this front-end to interact with node.js, which will sync clients with the server and end a timer clock at a sync&#8217;d time.  I&#8217;m also hoping to use MongoDB to save the lyrics and to add more lyrics from current rap songs.</p>
<p>Other features I&#8217;d like to have: ability to record and playback peoples&#8217; performances, remixing like Reggie Watts does on the fly.</p>
<p><a href="http://blog.benturner.com/2012/02/07/dwd-karaoke-flow/"><em>Click here to view the embedded video.</em></a></p>
<p>There&#8217;s not much at Karaoke Flow yet, but <a href="http://benturner.com/karaokeflow/" onclick="pageTracker._trackPageview('/outgoing/benturner.com/karaokeflow/?referer=');">you can already go visit the site</a> to see the interface.</p>
<p>I am maintaining <a href="https://github.com/Xeus/Karaoke-Flow" onclick="pageTracker._trackPageview('/outgoing/github.com/Xeus/Karaoke-Flow?referer=');">the code publicly on github</a>. And <a href="http://jsfiddle.net/xeus/teCMq/" onclick="pageTracker._trackPageview('/outgoing/jsfiddle.net/xeus/teCMq/?referer=');">here&#8217;s the JSFiddle</a>:</p>
<p><iframe style="width: 100%; height: 300px;" src="http://jsfiddle.net/xeus/teCMq/embedded/" frameborder="0" width="320" height="240"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/07/dwd-karaoke-flow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stunting a Renaissance</title>
		<link>http://blog.benturner.com/2012/02/04/stunting-a-renaissance/</link>
		<comments>http://blog.benturner.com/2012/02/04/stunting-a-renaissance/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 06:09:57 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[Communications]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[Economics]]></category>
		<category><![CDATA[Government]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Policy]]></category>
		<category><![CDATA[Social Change]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1846</guid>
		<description><![CDATA[An underlying theme in my projects at school has been thinking about potential versus actual.  And one common question that people ask when my classmates introduce their project ideas is, &#8220;Will this be illegal?&#8221; How well is our society fulfilling its potential right now?  Is it under-performing based on its many inputs?  Is it being [...]]]></description>
			<content:encoded><![CDATA[<p>An underlying theme in my projects at school has been thinking about potential versus actual.  And one common question that people ask when my classmates introduce their project ideas is, &#8220;Will this be illegal?&#8221;</p>
<p>How well is our society fulfilling its potential right now?  Is it under-performing based on its many inputs?  Is it being constrained by the law, policy, culture, tradition, taboos?  Or are we doing okay right now, from a broader perspective at a wider time-horizon?</p>
<p>I wonder if we could be having a Renaissance right now.  Something along the lines of <a href="http://en.wikipedia.org/wiki/Renaissance" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Renaissance?referer=');">the Italian Renaissance</a> itself.  Or <a href="http://en.wikipedia.org/wiki/Harlem_Renaissance" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Harlem_Renaissance?referer=');">the Harlem Renaissance</a>. Or the American medical revolution during <a href="http://www.amazon.com/Great-Influenza-Deadliest-Plague-History/dp/0670894737" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Great-Influenza-Deadliest-Plague-History/dp/0670894737?referer=');">the Great Influenza</a> when the US adopted scientific method instead of quackery for medical treatment.  I feel like we should be having a Renaissance of, say, Universal Freedom:  a major push towards tech/information/communications freedom, <a href="http://en.wikipedia.org/wiki/Universal_Declaration_of_Human_Rights" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Universal_Declaration_of_Human_Rights?referer=');">the Universal Declaration of Human Rights</a>, energy and information independence.</p>
<p>These particular moments seem to arise when all the restraints and boundaries are cast off in necessity or after great struggle or strain.  What held them back was partly health-related (Black Plague, Great Influenza), societal readiness (Civil Rights), fit of technology (post WW2), etc., but I bet it had mostly to do with tradition, culture, and policy.  Such factors can be massive force multipliers &#8212; for good and bad.</p>
<p>So my classmates, obsessed with coming up with new ideas, startups, expressions, reinterpretations of old media, mashing up, etc., are haunted by questions of copyright, legality, restraints foisted upon them by a highly litigious entertainment culture which has spread to other industries and cultural spheres.  Right now our chief societal constraints are shitty policy, over-privatization, and domination by lawyers (lawyers and CIOs, the banes of any innovative team or division).</p>
<p>Entertainment&#8217;s the big one.  It can be hard to employ fair use for remixing and sharing music and videos and movies and art.  Are you in as much disbelief as I am that Spotify hasn&#8217;t been shut down yet?  The MPAA and other consortiums perhaps pushed too hard on PIPA and SOPA recently, but until governments and politicians see those consortiums as parasitic, detrimental to the public good, but still a necessary middleman in the industry (e.g. they&#8217;re seen as one of many competing interests), they will continue to ask for the whole pie in the form of favorable legislation and court rulings.</p>
<p>But look where the public good has been battered back for the last few decades: agricultural patents for rice and genetically modified food, privatization of water and other public services, control and monitoring and censorship of communications networks worldwide, normal functioning of public-good-protecting agencies like the EPA and public health policies like contraceptives vs. abstinence, copyrighting and patenting of software.  It&#8217;s no longer just a game, involving pirating just movies and music.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/LXLjx.jpg"><img class="size-medium wp-image-1882 alignright" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid; margin: 5px;" title="LXLjx" src="http://blog.benturner.com/wp-content/uploads/2012/02/LXLjx-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>I guess this isn&#8217;t really big news, but I see an overarching trend that&#8217;s, for most citizens, just really exhausting and debilitating to keep identifying, organizing, and fighting against.</p>
<p>The restraints being placed on societal advancement are now affecting core human needs (water, food) and basic human rights (rendition, warrantless wiretapping, freedom of assembly, and voting representation).  As a result of my <a href="http://courses.georgetown.edu/?CourseID=GOVT-564" onclick="pageTracker._trackPageview('/outgoing/courses.georgetown.edu/?CourseID=GOVT-564&amp;referer=');">comparative democratization class</a> at Georgetown, I came to see the internet in more of a political and cultural dimension, where it serves as a gathering place for dissenters from the status quo.  Having a gathering place for dissent outside of the mainstream or government&#8217;s absolute control is crucial towards any free society, or the progress towards citizens&#8217; freedom.  In Latin America and Eastern Europe, the Catholic Church often stood as a place where people could organize and discuss higher ideals for their restrictive societies.  The same often exists for Muslims, as mosques and weekly juma&#8217;a are where potentialities and dissent are tested, refined, and propagated.  Hence from this way of looking at things you can see just how volatile it is for American security forces to invade mosques and to, in New York&#8217;s and other cities&#8217; cases, actively infiltrate them.  The threat of removing the internet as a public sphere for free expression is one of the greatest we&#8217;ll probably have to deal with in our lifetimes, even if it&#8217;s not as immediately threatening as nuclear apocalypse or global societal collapse from disease, war, etc.</p>
<p>What I&#8217;m really waiting for is the eventual breakdown of corporate advantage in lobbying Washington, and a return to more balance of public interests vs. private interests.  Certainly as an entrepreneurial sort, I would not want to see a society overly zealous with a public interest at the expense of private startups and innovative ideas, but it&#8217;s far too unequal right now toward the other direction.</p>
<p>What will make the difference in the next couple decades will be the emergence of meshnets, darknets, and long-distance wireless.  When individuals, citizens, and free speech organizations can set their routers to repeat and mesh up with each other, to transmit data over large swaths of physical territory without having to use the networks, which are already well-infiltrated by the NSA, local police, FBI, crackers, anyone with the knowhow to get in, then we can perhaps live up to the principles of free speech that we were raised to believe in in America.  When politicians realize that free speech in a genuine definition is worth protecting again, the two factors combined could lead to a remarkable tech renaissance which has long been promised but never delivered.  Right now, though, any emerging technology or idea is treated as inherently infringing upon something else that&#8217;s already established.  The war is being fought out on the edges, and the rest has just stopped because of chilling effects of judicial threats and adherence to law.  Certainly the freedoms of anonymity and encryption that should exist also affect the ability of law enforcement and security to track terrorist cells, murderers, etc.  But strict warrants, empowered intelligence analysts, and flattened intel bureaucracy have been and should continue to be sufficient without impacting the majority of people who would benefit from having their freedom of speech lionized.</p>
<p>Where is WiMAX?  It is supposed to be able to broadcast wifi at higher speeds than we have now, with better transmission through building materials, from distances up to Baltimore to DC.  If not WiMAX, why not something else?  What is the hold up?  Can you imagine the impact our being able to share wifi across entire cities would have for communications companies which try to enforce one internet hookup per residence or occupancy?  They will get drowned when this internet capability is fully unleashed, so predictably you would expect that there&#8217;ll be tons of attempts to stop long distance wifi.  But it comes as a massive hit to the public good to protect cable companies.  What is worth more to us, as a society and as a species?</p>
<p>I&#8217;m still encouraged.  Hacker hardware is coming &#8212; Arduino and open source and circuit diagramming is now more available to the masses, and I&#8217;m hoping that breakthroughs in building meshnets will spread like wildfire.</p>
<p>Not only that, open source software is booming.  I used to want to know three or four spoken languages when I was younger, but I could never hack it &#8212; I was never talented enough to just pick them up automatically, and I never took the chance to immerse myself in a foreign country for long enough.  So I ended up not knowing very much about any particular language, but knowing a little bit here and there.  Arabic I know the most about, but even that is pretty weak.</p>
<p>I see a lot of discussion about linguistics focus on these spoken languages &#8212; linguistics seem highly insular to spoken languages.  But as I&#8217;ve gotten more technologically-inclined, I&#8217;ve drifted towards the languages that are truly growing and forking: computer languages.  How come linguists never talk about these?  Is it because there&#8217;s such a massive divide between computers/coding and traditional academic tracks?</p>
<p>Software is fascinating right now.  Windows dominated my youth, but now most all students use OS X (particularly in ITP, but for a different reason &#8212; we drop down into Darwin and Linux quite a bit, and OS X makes that super-easy).  Github is by far <a href="http://www.readwriteweb.com/archives/github_a_social_network_for_programmers.php" onclick="pageTracker._trackPageview('/outgoing/www.readwriteweb.com/archives/github_a_social_network_for_programmers.php?referer=');">the most intriguing social network right now</a>.  It&#8217;s so actively engaging in that you upload and maintain versioning of your code there, and you actively follow interesting projects and coders on it.  There isn&#8217;t too much interaction through it, but it&#8217;s producing real content: software that anyone can download and use.  The emergence of node (and reemergence of JavaScript), Python, Ruby, PHP, etc., using open stacks of software and libraries, that anyone can download and install onto, say, a fresh Ubuntu box, using package installation software, is far different than the past, where this shit used to just plain suck to work with.  A lot of the stuff you can simply &#8220;git clone&#8221;, or it&#8217;s already installed on your system!  It&#8217;s a software insurgency.</p>
<p>The degree of self-organization and self-correction among open source coders is high enough that it can create software far more useful than corporations, save perhaps for the heavyweights, could ever do with their best talent.</p>
<p>Looking forward, I just have a sneaking suspicion that something great will come about, somewhat subtly and under the radar, out of the open source movement and breakthroughs in open technology.  It&#8217;s not quite there yet, but it may offer hope for our other massive, systemic societal problems.  At the same time, I think the public&#8217;s been somewhat invigorated by Obama&#8217;s election (the apathy of loss of hope is now gone, if not replaced in many peoples&#8217; hearts by bitterness or wonder at Obama&#8217;s post-election behavior).  I think the public is far more aware of the large systemic issues than it was just a few years ago, and this may lead to breakthroughs in organizing movements against concerted lobbying efforts by wealthy individuals and powerful private interests.</p>
<p>I&#8217;m encouraged, and hopeful.  I would love to see the walls come down, to see innovation be something we can act upon and not just dream about, to see the pie get bigger for all of us, to see peoples&#8217; hearts warmed by the possibility of ideas that could work.  I am hopeful we will see a uniquely 21st century Renaissance we can call our own, within our lifetime.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/04/stunting-a-renaissance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nature of Code: Random Walks</title>
		<link>http://blog.benturner.com/2012/02/01/nature-of-code-random-walks/</link>
		<comments>http://blog.benturner.com/2012/02/01/nature-of-code-random-walks/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 05:56:25 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Nature of Code]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1839</guid>
		<description><![CDATA[For my first homework assignment in Nature of Code, I had to create a random walk of my choosing.  I found Mark Kleback&#8217;s self-avoiding walk code (github) to be helpful for having a good example of a clean, easy-to-view walker. I wanted to practice using the classes and constructors for the movers, so I created my [...]]]></description>
			<content:encoded><![CDATA[<p>For my first homework assignment in <a href="http://itp.nyu.edu/varwiki/Syllabus/Nature-of-Code-S12" onclick="pageTracker._trackPageview('/outgoing/itp.nyu.edu/varwiki/Syllabus/Nature-of-Code-S12?referer=');">Nature of Code</a>, I had to create a random walk of my choosing.  I found <a href="http://stu.itp.nyu.edu/~mk3981/blog/?p=1204" onclick="pageTracker._trackPageview('/outgoing/stu.itp.nyu.edu/_mk3981/blog/?p=1204&amp;referer=');">Mark Kleback&#8217;s self-avoiding walk code</a> (<a href="https://github.com/markkleeb/Random-Walk" onclick="pageTracker._trackPageview('/outgoing/github.com/markkleeb/Random-Walk?referer=');">github</a>) to be helpful for having a good example of a clean, easy-to-view walker.</p>
<p>I wanted to practice using the classes and constructors for the movers, so I created my own, using Prof. Shiffman&#8217;s examples as guidance.  I also wanted to create multiple movers, so I put them into an array of Mover objects.  For my Movers, I decided to use <a href="http://www.quickmeme.com/Socially-Awkward-Penguin/" onclick="pageTracker._trackPageview('/outgoing/www.quickmeme.com/Socially-Awkward-Penguin/?referer=');">the Socially-Awkward Penguin</a> from meme-lore.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/02/penguin_big.jpg"><img class="alignnone size-full wp-image-1840" title="penguin_big" src="http://blog.benturner.com/wp-content/uploads/2012/02/penguin_big.jpg" alt="" width="310" height="310" /></a></p>
<p>The thing about SAP is that it lives out all of our insecurities and attempts to avoid looking silly, stupid, or foolish in front of others, often making us resort to ridiculously absurd avoidances of interaction.  So I wanted to see if I could recreate this social awkwardness as part of my Movers.</p>
<p>I think I partly succeeded, though I can tell there&#8217;s bugginess in the avoidOthers() function of the constructor because sometimes the penguins get trapped along the sides (probably their velocities have them collide against the walls at a greater speed than they&#8217;re pushing off the wall, or something).  I also don&#8217;t think the penguins perfectly avoid each other in order to get to the most distant space from each other.  They just reverse their direction whenever they get too close to other penguins.  Still I think the effect worked.</p>
<p><a href="http://blog.benturner.com/2012/02/01/nature-of-code-random-walks/"><em>Click here to view the embedded video.</em></a></p>
<p><a href="http://www.openprocessing.org/visuals/?visualID=50753" onclick="pageTracker._trackPageview('/outgoing/www.openprocessing.org/visuals/?visualID=50753&amp;referer=');">Code and demo at OpenProcessing</a> and code at <a href="https://github.com/Xeus/Socially-Awkward-Penguins" onclick="pageTracker._trackPageview('/outgoing/github.com/Xeus/Socially-Awkward-Penguins?referer=');">github</a>, as well as posted below the jump:</p>
<p><span id="more-1839"></span></p>
<pre class="brush: java;">/*
 * Ben Turner
 * Nature of Code, NYU-ITP
 * Daniel Shiffman
 * Homework #1:  Random Walk
 * Social-Awkward Penguins avoiding each other!
 */

Mover[] movers = new Mover[4];

void setup() {
  size(800,600);
  smooth();

  for (int i=0;i &lt; movers.length; i++) {
    movers[i] = new Mover();
  }

}

void draw() {
  background(255,10);
  rect(0,0,width,height);
  for (int i=0; i &lt; movers.length; i++) {
    movers[i].update();
    movers[i].avoidOthers();
    movers[i].checkEdges();
    movers[i].display();
  }
}

PImage penguin;

class Mover {
  PVector location;
  PVector acceleration;
  PVector velocity;
  float fleeMaxSpeed;
  int penguinSize;

  Mover() {
    location = new PVector(random(width), random(height));
    velocity = new PVector(random(-3, 3), random(-3, 3));
    acceleration = new PVector(random(-0.1,0.1),random(-0.1,0.1));
    fleeMaxSpeed = 11;
    penguinSize = 100;
  }

  void display() {
    penguin = loadImage("penguin.jpg");
    image(penguin, location.x-(round(penguinSize/2)), location.y-(round(penguinSize/2)), penguinSize, penguinSize);
  }

  void update() {
    velocity.add(acceleration);
    velocity.limit(fleeMaxSpeed);
    location.add(velocity);
  }

  void checkEdges() {
    if ((location.x &gt; width) || (location.x &lt; 0)) {
      velocity.x = velocity.x * -1;
    }

    if ((location.y &gt; height) || (location.y &lt; 0)) {
      velocity.y = velocity.y * -1;
    }
  }

  void avoidOthers() {
    PVector thisVector = new PVector(location.x, location.y, 0);
    for (int i=0; i &lt; movers.length; i++) {
      PVector testVector = new PVector(movers[i].location.x, movers[i].location.y, 0);
      float d = PVector.dist(thisVector, testVector);
      if (d &lt; 100) {
        movers[i].velocity.x = movers[i].velocity.x * -1;
        movers[i].velocity.y = movers[i].velocity.y * -1;
        velocity.x = velocity.x * -1;
        velocity.y = velocity.y * -1;
      }
    }
  }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/02/01/nature-of-code-random-walks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Web Dev &amp; Mobile Web: Final Project Proposals?</title>
		<link>http://blog.benturner.com/2012/01/30/dynamic-web-dev-mobile-web-final-project-proposals/</link>
		<comments>http://blog.benturner.com/2012/01/30/dynamic-web-dev-mobile-web-final-project-proposals/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 22:33:51 +0000</pubDate>
		<dc:creator>Xeus</dc:creator>
				<category><![CDATA[Dynamic Web Dev]]></category>
		<category><![CDATA[ITP]]></category>
		<category><![CDATA[Mobile Web]]></category>

		<guid isPermaLink="false">http://blog.benturner.com/?p=1817</guid>
		<description><![CDATA[For my Dynamic Web Development class (DWD) (syllabus), my first homework assignment was to lay out a proposal for a final project.  Here is the class description: &#8220;The class will cover server-side and client-side web development topics using JavaScript. On the client-side, we will cover traditional JavaScript and the jQuery library to manipulate browser content, [...]]]></description>
			<content:encoded><![CDATA[<p>For my Dynamic Web Development class (DWD) (<a href="http://itpwebclass.herokuapp.com/" onclick="pageTracker._trackPageview('/outgoing/itpwebclass.herokuapp.com/?referer=');">syllabus</a>), my first homework assignment was to lay out a proposal for a final project.  Here is the class description:</p>
<blockquote>
<p style="padding-left: 30px;"><em>&#8220;The class will cover server-side and client-side web development topics using JavaScript. On the client-side, we will cover traditional JavaScript and the jQuery library to manipulate browser content, create and trigger page events and make AJAX data requests. Developing with NodeJS on the server-side, we will explore receiving input from a user then querying and saving that data to a database, and finally, returning the appropriate content to the client, i.e. HTML or JSON. The websites we use today are rarely on a single database, we will focus on consuming data APIs from websites like Foursquare (for location information), Facebook (for social graph) and Twilio (for SMS and telephony). Going further, we will create custom data APIs for use at ITP and open to the public.&#8221;</em></p>
</blockquote>
<p>I&#8217;m looking forward to using node and also <a href="http://www.twilio.com/" onclick="pageTracker._trackPageview('/outgoing/www.twilio.com/?referer=');">Twilio</a> (I&#8217;ve dabbled a bit in both).  I think Twilio interaction may overlap a bit with my Redial class, which uses <a href="http://www.asterisk.org/" onclick="pageTracker._trackPageview('/outgoing/www.asterisk.org/?referer=');">the open-source phone comms software Asterisk</a>.</p>
<p>I&#8217;ve been working through some <a href="http://www.codecademy.com/" onclick="pageTracker._trackPageview('/outgoing/www.codecademy.com/?referer=');">codecademy</a> exercises, as instructed on the homework assignment.</p>
<p><a href="http://blog.benturner.com/wp-content/uploads/2012/01/codecademy.jpg"><img class="alignnone size-full wp-image-1837" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="codecademy" src="http://blog.benturner.com/wp-content/uploads/2012/01/codecademy.jpg" alt="" width="400" height="208" /></a></p>
<p>I think this class will also dovetail nicely with the mobile web class I&#8217;m taking.</p>
<p>For these reasons, I wasn&#8217;t entirely sure which idea I wanted to do for my final project just yet.  It could be that I build the back-end for an app for my DWD class but then do a front-end for an Android phone in mobile web class.</p>
<h2>Final Project Ideas</h2>
<p><strong>Moment Quests:</strong></p>
<p><strong></strong>Part scavenger hunt, part walking tour, part questing/geocaching.  Say you send your girlfriend on a moment quest by sending an invite to her on her mobile phone or browser.  She can accept the quest or delay it or do another quest instead.  Rewards are important &#8212; you might not want to do a quest if the payoff is too low!  An instruction will tell her what to do next, where to go, etc.  Once she&#8217;s there, she has to offer proof that she&#8217;s completed the step: a photo of a receipt, a photo of a landmark, a description of a sign at the exact point, etc.  Then the next stage is unlocked, either automatically or manually by you upon verification.Once she completes all the necessary steps in the quest, a reward is unlocked, or the final step in the quest takes her to her award (e.g. you&#8217;re waiting there for her, a gift is given by someone at the location, a secret GPS coordinate is unlocked, etc.).</p>
<p>What&#8217;s great is that the infrastructure is flexible &#8212; it would just require some GPS checks or a way to approve submitted proof of completing tasks.  You could also make public moment quests.  Companies or promotional events could do one-day quests which pit people against each other to be the first ones to finish, or to find something.Part of what inspired me to do this was <a href="http://www.amazon.com/Daemon-Daniel-Suarez/dp/B003L1ZXCU/" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Daemon-Daniel-Suarez/dp/B003L1ZXCU/?referer=');">Daniel Suarez&#8217;s book Daemon</a>, in which the AI software chooses its chief real-world henchman, Loki, after he completes its quest: he&#8217;s an avid Wolfenstein gamer who comes across a unique server with an original map which is nearly impossible to beat.  Loki figures out how to beat it though, and then he is initiated into the AI&#8217;s recruiting process, where he has to drive out into the middle of nowhere and find his way into an unmarked building.  Once he passes these stages, he&#8217;s given a meshnet of killer motorbike drones and other special equipment.  Pretty wicked.</p>
<p>The app will probably require a mobile component, which might use the internal GPS as well as the camera for verification.  A backend will have to be built to store details about the moment quests and what stage of completion a person is through them.  Personal details will need to be saved as well to save info on awards, unlocks, communications between the quester and the dungeonmaster, etc.</p>
<p><strong>ProbablyGonna:</strong></p>
<p><strong></strong>I worked on <a href="http://blog.benturner.com/2011/12/19/comm-lab-web-probablygonna-2/">probablyGonna</a> last semester for my comm lab web class, writing it in Ruby/Sinatra. I still need to make it more robust and useful, so it could be a good project for DWD.  It involves the idea that you may know you want to go out dancing Saturday night, but you don&#8217;t know who else wants to go or who else is already going.  So you put out an general invite and see if anyone else wants to go.  Or say you&#8217;re at school and you&#8217;re heading out for lunch; you put out an immediate alert for anyone who&#8217;s hungry to come join you at this or that place, and so it facilitates future event planning on the fly, unlike Google Calendar which is fairly regimented, or FourSquare, which only seems to capture peoples&#8217; presences at locations after they&#8217;re about ready to leave that place.</p>
<p><strong>LiveBeam</strong>:</p>
<p>Another classmate of mine, Phil, had the idea to create an app that lets an online social media curator tap into a network of available cell phone reporters.  So say there&#8217;s a breaking news event occurring at Zuccotti Park, and a web journalist looks at a location map of nearby reporters who could go to the site and film it or record it.  LiveBeam would allow the curator to ping a reporter and see if he could head over and cover the event.</p>
<p>What follows is my interpretation of his idea &#8212; he may have something different in mind!</p>
<p>The reporter would be selected based on proximity to the event, the reporter&#8217;s reputation for producing a certain type of content (liberal, conservative, streaming video, professional photos, etc.), and availability.  I found that, in my previous job doing social media emergency management, sometimes reporters didn&#8217;t know where the action was, or maybe the reporters were screaming at their editors or bosses that the action would be here instead of over there.  Sometimes the best information on something like a remote-area wildfire in New Mexico or a passport fraud bust in Anchorage would never make it to the mainstream news, or maybe one or two regular joes or local reporters would cover the news.  You can&#8217;t always rely on the &#8220;best&#8221; news sources to deliver all the news and information promptly, particularly if a client is looking for more specific, targeted news that the broader outlets ignore.</p>
<p>There is often information asymmetry in emerging crises, and sometimes the best journalist will not be at the proper location, so there needs to be a way to reallocate reporters to proper sites, or signal the best reporter for a given scenario as the one to follow.  You see this on Twitter during a crisis when the top journos tell everyone to Twitter-follow certain people who seem to be producing the best content possible.</p>
<p>People who continuously deliver the best content after being pinged on LiveBeam could have a higher reputation on a site and would become the people who&#8217;d be pushed to head on-site.  But there&#8217;d still be other options for redirecting traffic towards the best-positioned journo/reporter in any given crisis.  The other part of this is that there is not really enough recognition online for the role of the curator, whose job it is to filter through all of the noise generated on the internet every day and pick only the most important or under-covered stories, adding his or her own editorial take on why the issue is important relative to others.</p>
<p>LiveBeam is likely to need, at the least, backend storage of how to link the curator to the reporter, and GPS capability to place the reporter on a map so s/he can be notified of directions by the curator.  S/he will also probably want the ability to request a curator turn his eye of Mordor onto another event if that event is deemed more important by a reporter.  Or perhaps votes can be tallied by the top emergency management people to raise awareness of an issue.</p>
<h2>Mobile Web Homework</h2>
<p>Finally, for mobile web we had to create a quick initial app using some buttons, images, and text.  Below&#8217;s a screenshot from the Android emulator (running 2.2):</p>
<p style="text-align: center;"><a href="http://blog.benturner.com/wp-content/uploads/2012/01/hipster.jpg"><img class=" wp-image-1827 aligncenter" style="border-image: initial; border-width: 1px; border-color: black; border-style: solid;" title="hipster" src="http://blog.benturner.com/wp-content/uploads/2012/01/hipster.jpg" alt="" width="683" height="616" /></a></p>
<p style="text-align: left;">We&#8217;re going to be using some PhoneGap for this class, and I added in some jQuery Mobile to play with what they have to offer.  <a href="http://benturner.com/code/mobileweb/PhoneGapMin01.zip" onclick="pageTracker._trackPageview('/outgoing/benturner.com/code/mobileweb/PhoneGapMin01.zip?referer=');">Download the .zip source.</a> Source of assets/www/index.html below:</p>
<p><iframe style="width: 100%; height: 300px;" src="http://jsfiddle.net/qX6cF/embedded/html,js,css,result/" frameborder="0" width="320" height="240"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.benturner.com/2012/01/30/dynamic-web-dev-mobile-web-final-project-proposals/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

