<?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>emergent forms • matthew compeau • blog</title>
	<atom:link href="http://www.emergentforms.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emergentforms.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 30 Apr 2012 16:09:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Ceiling Grid Randomization</title>
		<link>http://www.emergentforms.com/blog/2012/04/30/ceiling-grid-randomization/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ceiling-grid-randomization</link>
		<comments>http://www.emergentforms.com/blog/2012/04/30/ceiling-grid-randomization/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 16:09:25 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=496</guid>
		<description><![CDATA[Recently a client tasked me with designing the ceiling for a renovation at a large university. They wanted to construct the ceiling out of wooden baffles using a layout that appeared random. The big catch was that the budget didn&#8217;t allow for the custom fabrication of several thousand square feet of ceiling space. Consequently the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/PanelTransition.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/PanelTransition-536x215.jpg" alt="Ceiling Baffle Design" title="CeilingBaffleTransition" width="536" height="215" class="alignnone size-large wp-image-497" /></a></p>
<p>Recently a client tasked me with designing the ceiling for a renovation at a large university. They wanted to construct the ceiling out of wooden baffles using a layout that appeared random. The big catch was that the budget didn&#8217;t allow for the custom fabrication of several thousand square feet of ceiling space. Consequently the challenge was to build the entire ceiling by repeating a single 2&#8242; x 8&#8242; panel that would hold 6 wooden baffles.</p>
<p>Although I was constrained to the use of just one panel I was able to customize the panel arrangement across the ceiling area. In order to avoid large sections of repetitive panel layouts I wrote a small program that laid out each panel in linear rows and then offset each row at random 2 foot increments.</p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/GridTransition.png"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/GridTransition-536x131.png" alt="Ceiling Grid Layout" title="Ceiling Grid Layout" width="536" height="131" class="alignnone size-large wp-image-529" /></a></p>
<p>The final step was to design the actual panel. Normally this work is constrained to professional CAD and visualization tools. I thought it would be fun to write a simple web based tool that captured all the salient features of the problem. You can play with it below:</p>
<p><a href="http://emergentforms.com/Proj-FauxRandomCeiling.html#ClngPnlTool"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/SketchLaunch-536x520.png" alt="Launch Ceiling Panel Tool" title="Launch Ceiling Panel Tool" width="536" height="520" class="alignnone size-large wp-image-532" /></a></p>
<p>The web tool is fun because it allows project stakeholders to engage with the design process without the massive burden of learning a professional toolset.</p>
<p>Finally to complete the project I produced physical samples of the finalized design to verify that they actual maintain the visual cohesion that appears on the screen:</p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/IMG_5202.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/IMG_5202-536x402.jpg" alt="3D Printed Ceiling Baffle" title="3D Printed Ceiling Baffle" width="536" height="402" class="alignnone size-large wp-image-537" /></a></p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/IMG_5204.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/IMG_5204-536x402.jpg" alt="3D Printed Ceiling Baffle System" title="3D Printed Ceiling Baffle System" width="536" height="402" class="alignnone size-large wp-image-538" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/04/30/ceiling-grid-randomization/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Making a Note Here: Huge Success!</title>
		<link>http://www.emergentforms.com/blog/2012/04/04/im-making-a-note-here-huge-success/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=im-making-a-note-here-huge-success</link>
		<comments>http://www.emergentforms.com/blog/2012/04/04/im-making-a-note-here-huge-success/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 02:08:17 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=383</guid>
		<description><![CDATA[After the initial set-up and a lot of tinkering I&#8217;m starting to get some awesome results from the 3D printer. I made these two complex figures to better understand the limits of what the machine can do. As you can see below the results are already pretty impressive: One of the benefits of 3D printing [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo01a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo01a1-536x402.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="402" class="alignnone size-large wp-image-385" /></a><br />
<br/></p>
<p>After the initial set-up and a lot of tinkering I&#8217;m starting to get some awesome results from the 3D printer. I made these two complex figures to better understand the limits of what the machine can do. As you can see below the results are already pretty impressive:</p>
<p><br/><br />
<a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo02a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo02a1-536x402.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="402" class="alignnone size-large wp-image-386" /></a></p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo03a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo03a1-536x402.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="402" class="alignnone size-large wp-image-387" /></a><br />
<br/></p>
<p>One of the benefits of 3D printing is that you can achieve forms that aren&#8217;t always possible with traditional manufacturing techniques, this makes for some novel photo opportunities.</p>
<p>Both objects were printed with ABS plastic. Surprisingly the black ABS makes the manufacturing process a lot more evident. The specular highlights strongly reveal the striation as the plastic is printed layer by layer. This results in a really interesting &#8220;velvety&#8221; texture across the surface of the object.</p>
<p><br/><br />
<a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo04a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo04a1-536x705.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="705" class="alignnone size-large wp-image-388" /></a></p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo05a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo05a1-536x714.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="714" class="alignnone size-large wp-image-389" /></a></p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo06a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo06a1-536x347.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="347" class="alignnone size-large wp-image-390" /></a><br />
<br/></p>
<p>I was also very impressed with the resolution of the prints. I was using a layer thickness of about 0.27mm, as you can see in the photo below this makes for a pattern that is slightly denser than a human fingerprint.</p>
<p><br/><br />
<a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo07a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo07a1-536x386.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="386" class="alignnone size-large wp-image-391" /></a></p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo08a1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo08a1-536x660.jpg" alt="3D Printing Parametric Sculptures with MakerBot Replicator" title="3D Printing Parametric Sculptures with MakerBot Replicator" width="536" height="660" class="alignnone size-large wp-image-392" /></a></p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/19/current-state-of-consumer-3d-printing/" title="Current State of Consumer 3D Printing">Current State of Consumer 3D Printing</a></li>
<li><a href="http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/" title="OH MAH GAWD! Makerbot Replicator Arrives">OH MAH GAWD! Makerbot Replicator Arrives</a></ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/04/04/im-making-a-note-here-huge-success/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>OH MAH GAWD! Makerbot Replicator Arrives</title>
		<link>http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oh-mah-gawd-makerbot-replicator-arrives</link>
		<comments>http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 23:09:04 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=348</guid>
		<description><![CDATA[The long wait is finally over&#8230; that 3D printer I won’t shut-up about? It has finally arrived! Watch as the gripping tale of me opening a box and removing something is retold with a vivid photo montage: To all my friends who have to endure me endlessly rambling on about this thing, I ensure you&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>The long wait is finally over&#8230; that 3D printer I won’t shut-up about? It has finally arrived! Watch as the gripping tale of me opening a box and removing something is retold with a vivid photo montage:</p>
<p><div id="attachment_349" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo01a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo01a-536x551.jpg" alt="The Box" title="MakerBot Replicator Unboxing - The Box" width="536" height="551" class="size-large wp-image-349" /></a><p class="wp-caption-text">The Box</p></div><br />
<br/></p>
<p><div id="attachment_350" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo02a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo02a-536x402.jpg" alt="MakerBot Replicator Unboxing - Box Open" title="MakerBot Replicator Unboxing - Box Open" width="536" height="402" class="size-large wp-image-350" /></a><p class="wp-caption-text">No time for reading I have unpacking to do...</p></div><br />
<br/></p>
<p><div id="attachment_351" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo03a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo03a-536x402.jpg" alt="MakerBot Replicator Unboxing - Box Open 2" title="MakerBot Replicator Unboxing - Box Open 2" width="536" height="402" class="size-large wp-image-351" /></a><p class="wp-caption-text">oh...</p></div><br />
<br/></p>
<p><div id="attachment_352" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo04a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo04a-536x756.jpg" alt="MakerBot Replicator Unboxing - Removing from Box" title="Photo04a" width="536" height="756" class="size-large wp-image-352" /></a><p class="wp-caption-text">Mah...</p></div><br />
<br/></p>
<p><div id="attachment_353" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo05a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo05a-536x402.jpg" alt="MakerBot Replicator Unboxing - Out of box" title="MakerBot Replicator Unboxing - Out of box" width="536" height="402" class="size-large wp-image-353" /></a><p class="wp-caption-text">GAWD!!!!111oneoneone</p></div><br />
<br/></p>
<p><div id="attachment_354" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo06a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo06a-536x402.jpg" alt="MakerBot Replicator Unboxing - Extruder Bubble Wrap" title="MakerBot Replicator Unboxing - Extruder Bubble Wrap" width="536" height="402" class="size-large wp-image-354" /></a><p class="wp-caption-text">Yay bubble paper!</p></div><br />
<br/></p>
<p><div id="attachment_355" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo07a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo07a-536x402.jpg" alt="MakerBot Replicator Unboxing - Extruder" title="MakerBot Replicator Unboxing - Extruder" width="536" height="402" class="size-large wp-image-355" /></a><p class="wp-caption-text">Sensitive parts...</p></div><br />
<br/></p>
<p><div id="attachment_356" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo08a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo08a-536x402.jpg" alt="MakerBot Replicator Unboxing - Assembly" title="MakerBot Replicator Unboxing - Assembly" width="536" height="402" class="size-large wp-image-356" /></a><p class="wp-caption-text">Assembling shit.</p></div><br />
<br/></p>
<p><div id="attachment_357" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo09a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo09a-536x527.jpg" alt="MakerBot Replicator Unboxing - Backside" title="MakerBot Replicator Unboxing - Backside" width="536" height="527" class="size-large wp-image-357" /></a><p class="wp-caption-text">So much plastic.</p></div><br />
<br/></p>
<p><div id="attachment_358" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo10a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo10a-536x477.jpg" alt="MakerBot Replicator Unboxing - First Run" title="MakerBot Replicator Unboxing - First Run" width="536" height="477" class="size-large wp-image-358" /></a><p class="wp-caption-text">Turning it on...</p></div><br />
<br/></p>
<p><div id="attachment_359" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo11a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo11a-536x402.jpg" alt="MakerBot Replicator Unboxing - Its Alive!" title="MakerBot Replicator Unboxing - Its Alive!" width="536" height="402" class="size-large wp-image-359" /></a><p class="wp-caption-text">Its Alive!</p></div><br />
<br/></p>
<p><div id="attachment_360" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo12a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo12a-536x444.jpg" alt="MakerBot Replicator Unboxing - Setup" title="MakerBot Replicator Unboxing - Setup" width="536" height="444" class="size-large wp-image-360" /></a><p class="wp-caption-text">Me doing something important.</p></div><br />
<br/></p>
<p><div id="attachment_361" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo13a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo13a-536x402.jpg" alt="MakerBot Replicator Unboxing - First Print" title="MakerBot Replicator Unboxing - First Print" width="536" height="402" class="size-large wp-image-361" /></a><p class="wp-caption-text">Crappy photo of my first ever print, what could it be?</p></div><br />
<br/></p>
<p><div id="attachment_362" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo14a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo14a-536x433.jpg" alt="MakerBot Replicator Unboxing - Calibration Cube" title="MakerBot Replicator Unboxing - Calibration Cube" width="536" height="433" class="size-large wp-image-362" /></a><p class="wp-caption-text">A calibration cube! How thrilling.</p></div><br />
<br/></p>
<p><div id="attachment_363" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo15a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo15a-536x402.jpg" alt="MakerBot Replicator Unboxing - Second Print" title="MakerBot Replicator Unboxing - Second Print" width="536" height="402" class="size-large wp-image-363" /></a><p class="wp-caption-text">Second run, more mysterious print....</p></div><br />
<br/></p>
<div id="attachment_364" class="wp-caption alignnone" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo16a.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/Photo16a-536x380.jpg" alt="MakerBot Replicator Unboxing - Necklace" title="MakerBot Replicator Unboxing - Necklace" width="536" height="380" class="size-large wp-image-364" /></a><p class="wp-caption-text">Its a necklace... The End.</p></div>
<p>To all my friends who have to endure me endlessly rambling on about this thing, I ensure you&#8230; the obsession has only just begun!</p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/02/16/makerbot-replicator-delayed/" title="MakerBot Replicator Delayed :(">MakerBot Replicator Delayed <img src='http://www.emergentforms.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </a></li>
<li><a href="http://www.emergentforms.com/blog/2012/01/19/current-state-of-consumer-3d-printing/" title="Current State of Consumer 3D Printing">Current State of Consumer 3D Printing</a></li>
</ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Visualizing New York City Traffic Data</title>
		<link>http://www.emergentforms.com/blog/2012/04/03/visualizing-new-york-city-traffic-data/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualizing-new-york-city-traffic-data</link>
		<comments>http://www.emergentforms.com/blog/2012/04/03/visualizing-new-york-city-traffic-data/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 19:08:02 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=259</guid>
		<description><![CDATA[As part of a submission to Bracket&#8217;s Latest Issue, my research partners and I decided to supplement our paper by visualizing traffic patterns in a dense urban environment. I decided this also provided a great opportunity to begin learning Python. Coming from a design background my programming knowledge is quite limited and therefore I was [...]]]></description>
			<content:encoded><![CDATA[<p>As part of a submission to <a title="bracket" href="http://www.brkt.org/">Bracket&#8217;s Latest Issue</a>, my research partners and I decided to supplement our paper by visualizing traffic patterns in a dense urban environment. I decided this also provided a great opportunity to begin learning Python.  Coming from a design background my programming knowledge is quite limited and therefore I was very much looking forward to the challenge of learning a modern language like Python.</p>
<p>Our specific goal was to map how traffic volume changes over a period of 24 hours in dense urban centers. We began the task by seeking a good data source. Surprisingly, hourly traffic data for major cities was fairly difficult to come by. After scouring various open data resources we eventually found the website for <ahref="https://www.dot.ny.gov/divisions/engineering/technical-services/highway-data-services/hdsb" title="New York State Department of Transportation">New York State&#8217;s Department of Transportation</a>. Their massive archives contained the kind of unadulterated raw data we were seeking. This provided us with enough source material to achieve a fine-grained analysis.</p>
<p>Naturally, the downside in dealing with raw data is that it comes in massive quantities, formatted in ways that are not necessarily easy to work with. The total dataset was about 500MB encoded as CSV files. Based on how they provided the data we were able to manually obtain a subset of about 60000 entries to work with. Clearly a programmatic approach would be needed to parse our subset into a suitable format for visualization.</p>
<p>For several months I had been dabbling in the <a href="http://processing.org/" title="Processing">Processing</a> programming language in order to create visualizations. Although I intended to use Processing once again to produce the final graphics for this project, it wasn&#8217;t the ideal candidate to parse the raw data into a usable form. Having wanted to learn Python for some time, I decided it was more appropriate for this part of the project.</p>
<p> My first step was to determine what data I actually needed for the final visualization. The primary element was obviously the actual hourly traffic counts provided in the Department of Transportation dataset, but I also needed to associate those with some spatial data in order to construct a graphical map. Our source data only had pieces of the necessary information which I would have to stitch together and cross reference with other sources using Python.</p>
<p>The raw traffic count data was composed of about 25000 lines that looked like this:</p>
<p><code>040004,12/13/2009 02:00,3,0,4109</code></p>
<p>The first number is a unique ID that is assigned to each road in New York State, what follows is the date and time of each entry and the the final number is the actual traffic count for each lane:</p>
<p><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/DataIDs01a.png" alt="New York State Traffic Count Data" title="New York State Traffic Count Data" width="264" height="69" class="alignnone size-full wp-image-282" /></p>
<p>At first glance the data seems pretty limited. This is because the ID number represents a particular road which can be determined by cross referencing the ID with a master header file. The header file contains about 36000 entries that look like this:</p>
<p><code>"710046","NY","  3",,"CORNELIA ST","244.87","PLATTSBURGH W CITY LN",<br/>"BROAD ST.","CLINTON","PLATTSBURGH","CITY","30","14"</code></p>
<p>The breakdown is as follows:</p>
<p><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/DataIDs01b.png" alt="New York State Traffic Data" title="New York State Traffic Data" width="474" height="193" class="alignnone size-full wp-image-290" /></p>
<p>This process was pretty simple even for a python noob like myself. Using Python&#8217;s built in CSV library I looped through the traffic count file, and each time I encountered a unique ID I would loop through the header file to find the corresponding line. I saved the cross referenced data to a new CSV in the following format:</p>
<p><code>041003,HUDSON ST,CHRISTOPHER ST,BETHUNE ST</code></p>
<p>This provided me with a much reduced dataset that included only the headers that were relevant to the area I was mapping. I saved the ID number, road name and the starting and ending intersections. I would use these later to determine the precise location of the traffic data.</p>
<p>After creating the reduced header file I took a closer look at the actual traffic count data. Originally, I had naively assumed that the data for each street would be recorded at consistent dates and times. In reality it was much more of a hodge-podge; various streets were monitored at differing time periods throughout the year, some had complete records, others were spotty. This presented a problem for us because obviously we wanted to map a comparable data set. Since this was still the best data source we could find, we settled on a compromise. We decided to only take complete records of a continuous 24hr period and where possible to ensure that the data was recorded on a Wednesday. In the cases where Wednesday was not available we would take records from the next closest day. Although this wasn&#8217;t the ideal situation for the project it did make for an interesting programming challenge. </p>
<p>I found this task more difficult than the first, but still manageable. I started by looking closely at Python&#8217;s datetime library. It took some tinkering and a lot of trial and error but eventually I was able to format the dates correctly and return an integer based on the day of the week using the <code>strftime()</code> and <code>strptime()</code> methods. I was then able to use this information to rank each set of entries based on their proximity to Wednesday. Checking if the set of records was complete for a given date, was just a matter of ensuring that it had the correct number of entries. I outputted this information to a consolidated traffic count file.</p>
<p>At this point, the Department of Transportation data was in manageable form, though crucially I was still missing location data. The only information I had to work with were the road name and start and end intersections which I had previously saved in the consolidated header file. This part definitely provided the most exciting challenge. My goal was to get the latitudes and longitudes for these intersections in order to construct a map. I was aware of the existence of several geolocation services, but I was uncertain as to how robust they would be in terms of parsing my search queries. I also had never written any code that interfaced with external APIs or web services. </p>
<p>The first service I tried was <a href="http://geocoder.us/" title="geocoder.us">geocoder.us</a>. Working with their service was pretty straight forward. I simply had to craft a URL with my search query and then parse the information that geocoder.us returned. Once again, Python&#8217;s standard libraries made this process fairly simple. I was able to craft the URL by using my compiled header file with some string concatenation and replace. I then passed it to <code>urllib</code> which would return the data from the geocoder service. Geocoder.us allows you to specify the return format in a number of different ways, I chose CSV since I was already pretty familiar with it at this point. The downside to their service was that its interpretation of my intersection names was not very robust and the service only allows one query every 15 seconds. Ultimately I was only able to retrieve latitude and longitudes for a small part of my data set using this service.</p>
<p>Since geocoder.us was not up to the task, I set out in search of a new geocoding service. Eventually, I found <a href="http://developer.yahoo.com/geo/geoplanet/" title="Yahoo! GeoPlanet">Yahoo! GeoPlanet</a> which turned out to be fantastic. Its search was much more robust and didn&#8217;t have a rate limit. It did have a couple added complications in that I had to have an API key and the data would always be returned in XML format. Getting the API key was a painless process, I just had to go through a fairly standard online signup process then append the key to my queries and working with the XML data wasn&#8217;t too much more difficult than working with the CSVs after I found the appropriate libraries. Ultimately, I was able to obtain good latitude and longitude information for the majority of my dataset using Yahoo&#8217;s service. </p>
<p>Now that I had all the necessary information to complete the visualization I created a nice clean CSV file that associated the traffic counts with the appropriate latitude and longitude. I was able able to easily read this into Processing in order to generate the necessary graphics. Some of the raw output from Processing can be seen below:</p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/TransitDemand.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/04/TransitDemand-536x689.jpg" alt="New York City Traffic Volume" title="New York City Traffic Volume" width="536" height="689" class="alignnone size-large wp-image-302" /></a></p>
<p>Even without placing the visualization over an existing street map you can make out the rough outline of lower manhattan fairly easily. We were later able to use this material to create animated and interactive versions of the data as well as visualize it in 3D.</p>
<p>For me, this project was tremendously rewarding. Most of the work I did was quite basic, but it was very empowering to be able to retrieve and integrate large amounts of data from the web in useful ways; it’s definitely a skill I’m looking forward to implementing in other projects in the future. I won’t embarrass myself by posting the mess of spaghetti code I wrote to get this all done; certainly there were more elegant and concise approaches to the problem. Despite this I was able to achieve all the things I had hoped to do and managed to learn a lot of basic Python features in the process.</p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/23/growth-vs-robustness/" title="Visualizing Growth vs. Robustness">Visualizing Growth vs. Robustness</a></li>
</ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/04/03/visualizing-new-york-city-traffic-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MakerBot Replicator Delayed :(</title>
		<link>http://www.emergentforms.com/blog/2012/02/16/makerbot-replicator-delayed/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=makerbot-replicator-delayed</link>
		<comments>http://www.emergentforms.com/blog/2012/02/16/makerbot-replicator-delayed/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 19:15:30 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=231</guid>
		<description><![CDATA[I received word today from MakerBot, that my order for their new product, the Replicator, is delayed. Although the e-mail I received refers specifically to my order, I believe this likely applies to all Replicator orders, as my order was placed just after the original product announcement. This isn&#8217;t entirely unexpected, as MakerBot is a [...]]]></description>
			<content:encoded><![CDATA[<p>I received word today from <a href="http://www.makerbot.com/" title="MakerBot Industries">MakerBot</a>, that my order for their new product, the <a href="http://store.makerbot.com/replicator-404.html" title="MakerBot Replicator">Replicator</a>, is delayed. Although the e-mail I received refers specifically to my order, I believe this likely applies to all Replicator orders, as my order was placed just after the original product announcement. This isn&#8217;t entirely unexpected, as MakerBot is a young company, with a new and experimental product. Nonetheless, I am still a little disappointed, maybe because I&#8217;ll have to hang on to my excitement a little longer&#8230; or maybe because they decided to take cash up front. Their e-mail didn&#8217;t include a new estimate for an updated lead time, I&#8217;m hoping MakerBot Support gets back to me on that soon. In the meantime their website is now showing an 8 week lead-time instead of 6 for new orders. Here is the full text of the original e-mail:</p>
<p><strong>Update 1:</strong> According to MakerBot support &#8220;worst case scenario&#8221; is an additional two week wait.<br />
<strong>Update 2:</strong> It took awhile but <a href="http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/" title="OH MAH GAWD! Makerbot Replicator Arrives">my Replicator has finally arrived</a>.</p>
<p><br/></p>
<blockquote>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/02/mb-logo.gif"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/02/mb-logo.gif" alt="MakerBot Industries" title="MakerBot Logo" width="213" height="72" class="alignnone size-full wp-image-236" /></a></p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/02/Botcave_with_Replicators1.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/02/Botcave_with_Replicators1-300x168.jpg" alt="" title="Botcave_with_Replicators" width="300" height="168" class="alignnone size-medium wp-image-245" /></a></p>
<p>Hello from MakerBot Industries!</p>
<p>We’re running late with your order for a MakerBot Replicator. We’ve put together a testing program for each MakerBot so that they’ll leave the Botcave in tiptop shape and it turns out that doing things right takes time. In this case, it’s taking a little more time than we expected.</p>
<p>We’ve added a swing shift to deal with the increased demand and we’ve implemented additional Quality Assurance processes to ensure that your Replicator will work as intended when you receive it.  Instead of rushing orders that may not be ready out the door, we’re testing these first Replicators with special care.  </p>
<p>We thank you for your patience with us during this process.  We know it’s tough to wait, but we know you’ll be glad that you did. </p>
<p>Thanks for giving us a little more time with your order.</p>
<p>If you have questions or comments, we’ll be here to help at support@makerbot.com.</p>
<p>Thanks,</p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/02/MIp.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/02/MIp.jpg" alt="MakerBot Bre Pettis Signature" title="MakerBot Bre Sig" width="281" height="188" class="alignnone size-full wp-image-246" /></a></p>
<p>Bre Pettis<br />
CEO MakerBot Industries
</p></blockquote>
<p><br/></p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/19/current-state-of-consumer-3d-printing/" title="Current State of Consumer 3D Printing">Current State of Consumer 3D Printing</a></li>
<li><a href="http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/" title="OH MAH GAWD! Makerbot Replicator Arrives">OH MAH GAWD! Makerbot Replicator Arrives</a></ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/02/16/makerbot-replicator-delayed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Social Hardware Design</title>
		<link>http://www.emergentforms.com/blog/2012/02/02/social-hardware-design/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=social-hardware-design</link>
		<comments>http://www.emergentforms.com/blog/2012/02/02/social-hardware-design/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 21:42:05 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=210</guid>
		<description><![CDATA[Earlier this week, while attending an electronics class at hacklab.to, I had the pleasure of meeting Michael Woodworth, founder of Upverter. Upverter is a local Toronto startup, and Y-Combinator alumi company, that provides a platform for social hardware design. The core of their product is an online tool that allows users to collaboratively design schematic [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this week, while attending an electronics class at <a href="http://hacklab.to/" title="hacklab.to">hacklab.to</a>, I had the pleasure of meeting Michael Woodworth, founder of <a href="https://upverter.com/" title="Upverter">Upverter</a>. <a href="https://upverter.com/" title="Upverter">Upverter</a> is a local Toronto startup, and <a href="http://ycombinator.com/" title="Y Combinator">Y-Combinator</a> alumi company, that provides a platform for social hardware design. The core of their product is an online tool that allows users to collaboratively design schematic circuits for their projects. Instead of struggling to describe the details I recorded a short demonstration of my own:<br />
<br/><br />
<iframe width="536" height="302" src="http://www.youtube.com/embed/pn0R1xncQLM" frameborder="0" allowfullscreen></iframe><br />
<br/><br />
Here is the embedded schematic of the project in the video:<br />
<iframe title="Arduino + Sonar Range Finder" width="536" height="536" scrolling="no" frameborder="0" name="Arduino + Sonar Range Finder"             class="eda_tool" src="http://upverter.com/eda/embed/82b04b3676e58aee/"></iframe><br />
<br/><br />
Seeing software like this popping up is really cool for several reasons. First of all, the pace of innovation is greatly accelerated by saving all of our work in a common pool. Upverter, like many new web apps, makes everyone’s projects searchable. This means newcomers to the field immediately have a library of thousands of practical examples to learn from. Additionally projects can be accelerated by “forking” other people’s designs. This essentially allows you to use another user’s work as a base from which to create derivative works. Finally, because the entire app is ‘social,’ new techniques can become memes and spread quickly among the product’s users. Disseminating knowledge through this new medium allows the state of the art to advance much more rapidly when compared to traditional ways of spreading knowledge. All of these attributes are over and above the obvious benefits of working in a real-time collaborative editing environment with a live database connected to real parts and manufacturers.</p>
<p>Of course, the downside is that as we migrate more of our applications to the cloud, we begin to lose control of our infrastructure and critical tools. Right now Upverter is a small start-up run by idealistic hackers. You can easily download your work in common formats free of charge. But one must wonder, what happens as their company grows and maximizing profits becomes the dominate motivator? Will they still risk their users migrating to another platform by making your files too easy to retrieve? Will they stop supporting a feature that is crucial to your workflow midway through a project? Will the company go under leaving you without access to your entire library of work? These are just a few of the risks we face by allowing our software to reside in a centralized system far from our local machines.</p>
<p>After seeing projects like Upverter I’m highly enthusiastic about the future. Just as our workflows were revolutionized when we began migrating our tools from physical space onto computers, they will again be revolutionized when we migrate from local harddrives to the web. There is tremendous opportunity for discovering better ways of working but also new risks as we begin to lose control of the tools we rely on.</p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/25/arduino-lol-sheild-part-1/" title="Arduino LoL Sheild Part 1">Arduino LoL Sheild Part 1</a></li>
<li><a href="http://www.emergentforms.com/blog/2012/01/25/arduino-lol-sheild-part-2/" title="Arduino LoL Sheild Part 1">Arduino LoL Sheild Part 2</a></li>
</ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/02/02/social-hardware-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino LoL Sheild: Part 2</title>
		<link>http://www.emergentforms.com/blog/2012/01/28/arduino-lol-sheild-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=arduino-lol-sheild-part-2</link>
		<comments>http://www.emergentforms.com/blog/2012/01/28/arduino-lol-sheild-part-2/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 21:14:40 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=185</guid>
		<description><![CDATA[View Part 1: Here Related Posts: Visualizing Growth vs. Robustness]]></description>
			<content:encoded><![CDATA[<p><iframe width="536" height="393" src="http://www.youtube.com/embed/DLZ18ksbLXc" frameborder="0" allowfullscreen></iframe></p>
<p><strong>View Part 1: <a href="http://www.emergentforms.com/blog/2012/01/25/arduino-lol-sheild-part-1/" title="Arduino LoL Sheild: Part 1">Here</a></strong></p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/23/growth-vs-robustness/" title="Visualizing Growth vs. Robustness">Visualizing Growth vs. Robustness</a></li>
</ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/01/28/arduino-lol-sheild-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino LoL Sheild: Part 1</title>
		<link>http://www.emergentforms.com/blog/2012/01/25/arduino-lol-sheild-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=arduino-lol-sheild-part-1</link>
		<comments>http://www.emergentforms.com/blog/2012/01/25/arduino-lol-sheild-part-1/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 00:36:42 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=172</guid>
		<description><![CDATA[For awhile now I’ve been looking forward to starting an arduino based project. Having already done the very basics, like blinking LEDs, I thought I’d embark on a simple starter project. I picked-up the LoL (Lots of Lights) Shield from a local hackerspace. The kit comes with a PCB (Printed Circuit Board) and a crapload [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/Overview01a-Blog.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/Overview01a-Blog-536x573.jpg" alt="Arduino LoL Sheild Work in Progress" title="Arduino LoL Sheild Work in Progress" width="536" height="573" class="alignnone size-large wp-image-181" /></a></p>
<p>For awhile now I’ve been looking forward to starting an <a href="http://arduino.cc/" title="Arduino">arduino</a> based project. Having already done the very basics, like blinking LEDs, I thought I’d embark on a simple starter project. I picked-up the <a href="http://jimmieprodgers.com/kits/lolshield/" title="Lots of Lights (LoL) Arduino Sheild">LoL (Lots of Lights) Shield</a> from a local <a href="http://hacklab.to/" title="Hacklab Toronto Hacker Space">hackerspace</a>. The kit comes with a PCB (Printed Circuit Board) and a crapload of LEDs. Once fully assembled you can control each LED individually allowing you to display images, text, games or whatever else you can think of. As an introduction to electronics I certainly got more then I bargained for in terms of soldering practice:</p>
<p><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/VideoShots-Blog.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/VideoShots-Blog-536x2422.jpg" alt="Arduino LoL Sheild Assembly Progress Shots" title="Arduino LoL Sheild Assembly Progress Shots" width="536" height="2422" class="alignnone size-large wp-image-183" /></a></p>
<p><strong>View Part 2: <a href="http://www.emergentforms.com/blog/2012/01/28/arduino-lol-sheild-part-2/" title="Arduino LoL Sheild: Part 2">Here</a></strong></p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/11/what-is-architecture/" title="What is Architecture?">What is Architecture?</a></li>
</ul>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/01/25/arduino-lol-sheild-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing Growth vs. Robustness</title>
		<link>http://www.emergentforms.com/blog/2012/01/23/growth-vs-robustness/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=growth-vs-robustness</link>
		<comments>http://www.emergentforms.com/blog/2012/01/23/growth-vs-robustness/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 23:35:20 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=143</guid>
		<description><![CDATA[I’ve come to think that there exists an interesting dichotomy between growth and robustness in most systems. For the purposes of this post, growth means receiving a positive return on some investment of energy or resources, robustness refers to the ability of the system to sustain itself in a changing environment. At any given instant, [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve come to think that there exists an interesting dichotomy between growth and robustness in most systems. For the purposes of this post, growth means receiving a positive return on some investment of energy or resources, robustness refers to the ability of the system to sustain itself in a changing environment.</p>
<p>At any given instant, a system has a fixed amount of resources it can allocate to various tasks. Fundamentally, there are two options for how to use these resources: they can either be allocated into familiar areas that are already demonstrating growth, or they can be allocated into unexplored areas in hopes of finding new sources of growth.</p>
<p>A system that places the majority of its resources into known areas that are already yielding strong growth risks getting stuck on local maxima and additionally makes itself systemically vulnerable to contextual change. For instance, a society that invests most of its resources into developing a single energy source, like oil, stands to grow explosively for awhile but might collapse after this resource is depleted due to the underdevelopment of other energy sources.</p>
<p>On the other hand a system that distributes its resources widely, exploring many uncharted areas, will be stuck with anemic growth. This is because many times the exploratory outlay of resources will yield little or no return on investment at all. The upswing is that when resources are allocated in a highly distributed way the system is extremely robust when local regions fail or begin to yield lower rates of return because the system has many alternative sources of growth.</p>
<p>I’ve attempted to visualize this relationship below with an interactive demonstration:</p>
<p><script type="application/processing">
//BASIC GRAPHICS:
int winX = 538;
int winY = 538;
//FOODS:
boolean drawCircle = false;
int numFood = 10;
int curFood = 0;
float[][] food = new float[numFood][3];
//POINTS:
int numPop=1000;
int curPop=0;
float[][] pop = new float[numPop][4];

/*---------------------
SETUP
----------------------*/
void setup() {
  background(255,255,255);
  size(winX,winY);
  frameRate(600000);
  smooth();
 
  popInit();
}

/*---------------------
POP INITIALIZATION
----------------------*/
void popInit() {
  for (int i=0; i<numPop; i++) {
	pop[i][0]=winX/2;
	pop[i][1]=winY/2;
  }
}
 
 
//-----------------------------------------------------------MAIN LOOP-----------------------------------------------------------
/*---------------------
DRAW
----------------------*/
void draw() {
  //Fades previous screen
  pushStyle();
  fill(255,255,255,15);
  noStroke();
  rect(0,0,winX,winY);
  popStyle();
 
  //If mouse is pressed draws a circle whose radius is determined as the user drags the cursor
  if (drawCircle==true) {
	circleDrag();
  }
 
  foodDraw();
  popSelect();
  popTest();
  popDraw();
 
  if (curPop==(numPop-1)) {
  curPop=0;
  }
  else {
  curPop+=1;
  }
}

/*---------------------
FOOD DRAW
----------------------*/
void foodDraw() {
  pushStyle();
  stroke(255,240,0);
  noFill();
  for (int i=0; i<numFood; i++) {
 	ellipse(food[i][0],food[i][1],food[i][2],food[i][2]);
  }
  popStyle();
}

/*---------------------
POP SELECT
----------------------*/
void popSelect() {
  float randSelect=random(1);
  float totalFit=0;
  float tallyFit=0;
  int popSelect=-1;
 
  //Determines what fraction of the total fitness each member of the population has
  for (int i=0; i<numPop; i++) {
	totalFit+=pop[i][2];
  }
  for (int j=0; j<numPop; j++) {
	pop[j][3]=pop[j][2]/totalFit;
  }
  if (totalFit>0) {
	while(tallyFit<randSelect) {
  	popSelect+=1;
  	tallyFit+=pop[popSelect][3];
	}
  }
  else {
	popSelect=int(random(numPop));
  }
 
  popGen(pop[popSelect][0],pop[popSelect][1]);
}

/*---------------------
POP GENERATE
----------------------*/
void popGen(float x, float y) {
  //Scale of 1/x distribution
  float distScale=.1;
  float distScaleOffset=distScale/pow(distScale,2);
  //Random values for location of new point
  float angle=random(360);
  float magnitude=1/random(distScale);
 
  //Converts the angle and rotation to x. y coordinates and stores them in the 'pop' array
  pop[curPop][0]=x+((magnitude-distScaleOffset)*sin(angle*(PI/180)));
  pop[curPop][1]=y+((magnitude-distScaleOffset)*cos(angle*(PI/180)));
}

/*---------------------
POP TEST
----------------------*/
//***Tests only the current point, should consider one that tests all point to better adapt to changing context
void popTest() {
  pop[curPop][2]=0;
  for (int i=0; i<numFood; i++) {
	if (dist(pop[curPop][0],pop[curPop][1],food[i][0],food[i][1])/(food[i][2]/2)<=1) {
  	pop[curPop][2]+=1-(dist(pop[curPop][0],pop[curPop][1],food[i][0],food[i][1])/(food[i][2]/2));
  	//The following steps diminish the food:
  	if (food[i][2]>0) {
    	food[i][2]-=0.1*pop[curPop][2];
  	}
  	else{
    	food[i][2]=0;
  	}
	}
  }
}

/*---------------------
POP DRAW
----------------------*/
void popDraw() {
  pushStyle();
  noStroke();
  if (pop[curPop][2]==0) {
   fill(0,0,0);
  }
  else if (pop[curPop][2]<0 & pop[curPop][2]<=255) {
   fill(255*pop[curPop][2],153*pop[curPop][2],0);
  }
  else {
   fill(255,153,0);
  }
  ellipse(pop[curPop][0],pop[curPop][1],5,5);
  popStyle();
}

//-----------------------------------------------------------USER EVENTS-----------------------------------------------------------
/*---------------------
CIRCLE DRAG
----------------------*/
void circleDrag() {
  //*?*Implment a transform here for modifying the circle in order to address redraw issues?
  pushStyle();
  stroke(225,225,225);
  noFill();
  ellipse(food[curFood][0],food[curFood][1],2*dist(food[curFood][0],food[curFood][1],mouseX,mouseY),2*dist(food[curFood][0],food[curFood][1],mouseX,mouseY));
  popStyle();
}
/*---------------------
MOUSE PRESSED
----------------------*/
void mousePressed() {
  food[curFood][0]=mouseX;
  food[curFood][1]=mouseY;
  drawCircle = true;
}

/*---------------------
MOUSE RELEASED
----------------------*/
void mouseReleased() {
  food[curFood][2]=2*dist(food[curFood][0],food[curFood][1],mouseX,mouseY);
  pushStyle();
  stroke(0,0,255);
  noFill();
  ellipse(food[curFood][0],food[curFood][1],food[curFood][2],food[curFood][2]);
  popStyle();
  drawCircle = false;
  //*!* This causes out of bounds exception after all food used
  curFood+=1;
}
</script></p>
<p><em>Refresh the page if nothing is happening, click and drag to create regions of high return</em></p>
<p>In the visualization above, I’ve created a search algorithm that distributes its resources (the little black dots) using a power-law distribution. By clicking and dragging you create regions of high return, the location of which are not known to the algorithm. As the algorithm distributes its resources throughout the search space, inevitably some will randomly fall into the regions of high return (orange dots). The algorithm will begin to dynamically reallocate its resources such that it has a higher probability of creating new dots near ones that have previously yielded a high return. In order to make the environment dynamic, you will see that as more resources are allocated to a region of high return, the size of that region will slowly decrease until it eventually disappears. Crucially the algorithm always maintains a power-law distribution regulating the breadth vs. depth of its search allowing it to dynamically reallocate its resources into new high return areas after explored ones have been depleted.</p>
<p>I find that many of our approaches to problem solving are concerned with optimizing for singular outcomes. In the future, as we attempt to harness the power complex adaptive systems for ourselves, we will become much more concerned about how to distribute resources instead of how to optimize for a single purpose. By carefully understanding the relationship depth and breadth in our resource allocations, we can begin to create dynamic systems that are able to adapt to change while managing our risk profile much more tightly. Hopefully, this can begin to reduce the probability of “black swan” events (like the mortgage crisis) and other existential threats to our society.</p>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/01/28/arduino-lol-sheild-part-2/" title="Arduino LoL Sheild: Part 2">Arduino LoL Sheild: Part 2</a></ul>
</li>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/01/23/growth-vs-robustness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Current State of Consumer 3D Printing</title>
		<link>http://www.emergentforms.com/blog/2012/01/19/current-state-of-consumer-3d-printing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=current-state-of-consumer-3d-printing</link>
		<comments>http://www.emergentforms.com/blog/2012/01/19/current-state-of-consumer-3d-printing/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 18:55:06 +0000</pubDate>
		<dc:creator>Matthew Compeau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emergentforms.com/blog/?p=106</guid>
		<description><![CDATA[Earlier this week I purchased a consumer 3D printer. It was a big investment and in a later post I’ll take some time to review why I believe it will be worthwhile. In the meantime, I want to do a quick run-down of the products that are emerging in this space while the research is [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_116" class="wp-caption aligncenter" style="width: 546px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/6667671413_1f223e1cac_b.jpg"><img class="size-large wp-image-116" title="MakerBot Replicator" src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/6667671413_1f223e1cac_b-536x357.jpg" alt="MakerBot Replicator" width="536" height="357" /></a><p class="wp-caption-text">Image: <a href='http://www.makerbot.com/'>MakerBot.com</a></p></div>
<div>
<p>Earlier this week I purchased a consumer 3D printer. It was a big investment and in a later post I’ll take some time to review why I believe it will be worthwhile. In the meantime, I want to do a quick run-down of the products that are emerging in this space while the research is still fresh in my mind.</p>
<p>For those who are not familiar, a lot has happened in the last few years in the world of 3D printing. Previously 3D printing was strictly a commercial endeavor due to the high cost of hardware (upwards of $60,000). In the last five years hackers have started cobbling together do-it-yourself 3D printer kits; extremely primitive versions of their commercial counter-parts. These kits effectively work like computer controlled glue guns. Open source software deconstructs 3D digital models into horizontal slices and this information is sent to the printer. The printer uses an extruder to heat up a plastic filament. The extruder is guided by servos in 3 axes allowing the filament to be deposited layer by layer gradually reconstructing the object. What is so revolutionary about these kits is their low cost. At around $1500, a tiny fraction of the commercial versions, the technology is now within reach of individuals. Over the past year this tiny cottage industry has begun to mature into actual companies with fledgling products. Below is a run down of who the players are:</p>
</div>
<p>&nbsp;</p>
<h3><a title="The RepRap Project" href="http://reprap.org/wiki/Main_Page">RepRap</a></h3>
<div>
<div id="attachment_123" class="wp-caption alignleft" style="width: 160px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/Mendel.jpg"><img class="size-thumbnail wp-image-123" title="RepRap Mendel" src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/Mendel-150x150.jpg" alt="RepRap Mendel" width="150" height="150" /></a><p class="wp-caption-text">Image: <a href='http://reprap.org/'>RepRap.org</a></p></div>
<p>The RepRap is the printer that got this whole revolution under-way. The project began at the University of Bath back in 2005. The ambition was to create a 3D printer that could print itself. This ambition is a long way from being fulfilled but the project is a huge leap in the right direction. The RepRap isn’t a product per se but a set of open source designs. The process of building a RepRap is extremely long and laborious. It can take several weeks to acquire its many parts and many months thereafter to fully assemble and calibrate the printer. This intensive process represents the cost of being on the bleeding edge, the upswing is that a vibrant community has emerged around the RepRap. This community is constantly improving upon the core RepRap designs and several derivative products have emerged including several of the printers below.</p></div>
<p>&nbsp;</p>
<h3><a title="MakerBot Industries" href="http://www.makerbot.com/">MakerBot</a></h3>
<div>
<div id="attachment_116" class="wp-caption alignleft" style="width: 160px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/6667671413_1f223e1cac_b.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/6667671413_1f223e1cac_b-150x150.jpg" alt="MakerBot Replicator" title="MakerBot Replicator" width="150" height="150" class="size-thumbnail wp-image-116" /></a><p class="wp-caption-text">Image: <a href='http://www.makerbot.com/'>MakerBot.com</a></p></div><br />
MakerBot’s latest design is the one I ended up purchasing. MakerBot has been on the scene for awhile now, their original product was derived from the RepRap project. Last year the company received $10 million in venture capital funding so there’s at least a few people who believe 3D printing will be blowing up in a big way. At this year’s CES they started offering their 3rd generation printer, The Replicator. MakerBot’s previous product (The Thing-o-Matic) is a relatively proven design. It still requires regular maintenance, which is a do-it-yourself endeavor, but when working, its output is fairly consistent. Previously most of their printers have been sold as kits requiring end-user assembly. The latest offering comes fully assembled and crucially, has dual extruders. I believe the dual-extruder setup is a key feature and its the reason why I decided to go with this design, I’ll detail why in a follow-up post.</p>
<p>Maybe as importantly as the printer itself, MakerBot also owns Thingiverse. Currently Thingiverse is the biggest online community for actually sharing 3D-printable objects. In the long term this might be their biggest asset. As 3D printing becomes mainstream, and real consumers get involved, it will be a tiny minority who fire up their favorite CAD program to draft a new spatula for the kitchen. Instead consumers will gravitate towards these communities where thousands of objects designed by others already exist.</p>
</div>
<p>&nbsp;</p>
<h3><a title="Ultimaker" href="http://ultimaker.com/">Ultimaker</a></h3>
<div id="attachment_166" class="wp-caption alignleft" style="width: 160px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/Ultimaker2.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/Ultimaker2-150x150.jpg" alt="Ultimaker" title="Ultimaker" width="150" height="150" class="size-thumbnail wp-image-166" /></a><p class="wp-caption-text">Image: <a href='http://i.materialise.com/blog/'>i.materialise Blog</a></p></div>
<div>The Ultimaker is a product offered out of The Netherlands. It looks similar to the MakerBot and I was very tempted to purchase it instead. The videos of the Ultimaker show a printer that is substantially faster with a much finer resolution then others in this list.</p>
<p>The Ultimaker has a fairly active forum too. Its users regularly share help and advice as well as their projects. If you are located in Europe, I would suggest that this is definitely the printer to look at. I ended up choosing otherwise because after the currency conversion and shipping cost the total price was similar to the dual extruder MakerBot, which I prefered.</p></div>
<p><iframe src="http://www.youtube.com/embed/W0ue01ozgA0" frameborder="0" width="536" height="302"></iframe><br />
&nbsp;</p>
<h3><a title="printrbot" href="http://printrbot.com/">printrbot</a></h3>
<div id="attachment_167" class="wp-caption alignleft" style="width: 160px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/img_0105.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/img_0105-150x150.jpg" alt="printrbot" title="printrbot" width="150" height="150" class="size-thumbnail wp-image-167" /></a><p class="wp-caption-text">Image: <a href='http://printrbot.com/'>printrbot.com</a></p></div>
<div>The printrbot emerged through a Kickstarter campaign in November of last year. They managed to raise over $800,000 &#8211; 30 times more then their stated goal. This printer is very attractive due to its clean simplicity. Its a fraction of the size of other printers in this list, more easily expandable and its projected costs is about half of what other kits are going for. All that said this project has yet to see  the light of day. There is a working prototype and evidently the team is working furiously to fulfill orders for the pledges made on Kickstarter. If they are actually able to offer the product, at the projected cost, this printer would certainly be the best starter kit for a newcomer.</div>
<p>&nbsp;</p>
<h3><a title="Cubify" href="http://cubify.com/">Cubify</a></h3>
<div id="attachment_168" class="wp-caption alignleft" style="width: 160px"><a href="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/MG_92152.jpg"><img src="http://www.emergentforms.com/blog/wp-content/uploads/2012/01/MG_92152-150x150.jpg" alt="Cubify Cube" title="Cubify Cube" width="150" height="150" class="size-thumbnail wp-image-168" /></a><p class="wp-caption-text">Image: <a href='http://cubify.com/'>Cubify.com</a></p></div>
<div>Cubify launched about a week ago, debuting their product at CES. It has been difficult to obtain much information about such a new product, but their platform warrants a close look. Cubify is owned by 3D Systems, an established company in the commercial 3D printing space. The Cube is their flagship offering in this new market segment. They are also attempting to build their own community for sharing designs and eventually apps, presumably to compete with Thingiverse. Their product looks extremely polished from an industrial design standpoint, of course this doesn’t say anything about the quality of their prints. In the few videos I could find showing the Cube printer in action, its performance looked on par with other RepRap variants. Given that this product is offered by an established company with a wealth of experience in commercial 3D printing its certainly worth keeping an eye out for reviews of the Cube when they start delivering units.</div>
<p><strong>Related Posts:
<ul>
<li><a href="http://www.emergentforms.com/blog/2012/04/03/oh-mah-gawd-makerbot-replicator-arrives/" title="OH MAH GAWD! Makerbot Replicator Arrives">OH MAH GAWD! Makerbot Replicator Arrives</a></li>
<li><a href="http://www.emergentforms.com/blog/2012/01/11/what-is-architecture/" title="What is Architecture?">What is Architecture?</a></ul>
</li>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emergentforms.com/blog/2012/01/19/current-state-of-consumer-3d-printing/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: www.emergentforms.com @ 2012-05-20 23:02:43 -->
