<?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>Shide and Prame</title>
	<atom:link href="http://aidan.rfm.co.nz/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://aidan.rfm.co.nz/blog</link>
	<description>Aidan&#039;s digital life</description>
	<lastBuildDate>Fri, 21 May 2010 01:45:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Scientists Create First Synthetic Cell &#8211; WSJ.com</title>
		<link>http://aidan.rfm.co.nz/blog/2010/05/scientists-create-first-synthetic-cell-wsj-com/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/05/scientists-create-first-synthetic-cell-wsj-com/#comments</comments>
		<pubDate>Fri, 21 May 2010 01:05:39 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Genetics]]></category>
		<category><![CDATA[The End]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=165</guid>
		<description><![CDATA[WSJ has an article on how commercial scientists have announced their creation of a cell with a synthetic genome.  They call it a synthetic cell, which I think is a bit of a stretch, but I&#8217;m just as terrified.
Scientists Create First Synthetic Cell
Pretty exciting medicinal and industrial possibilities, but it doesn&#8217;t take much thinking to [...]]]></description>
			<content:encoded><![CDATA[<p>WSJ has an article on how commercial scientists have announced their creation of a cell with a synthetic genome.  They call it a synthetic cell, which I think is a bit of a stretch, but I&#8217;m just as terrified.</p>
<p><a href="http://online.wsj.com/article/SB10001424052748703559004575256470152341984.html?mod=WSJ_hp_mostpop_read">Scientists Create First Synthetic Cell</a></p>
<p>Pretty exciting medicinal and industrial possibilities, but it doesn&#8217;t take much thinking to conceive of a how the dark side of mankind&#8217;s nature might apply it to <em>warfare</em>.  I was already worried about a &#8220;<a href="http://en.wikipedia.org/wiki/Grey_goo">grey goo</a>&#8221; style end of the world, but now I wonder if I might live long enough to actually witness it happen.</p>
<p><em>*shiver*</em></p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/05/scientists-create-first-synthetic-cell-wsj-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote control flight with on-board camera</title>
		<link>http://aidan.rfm.co.nz/blog/2010/05/remote-control-flight-with-on-board-camera/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/05/remote-control-flight-with-on-board-camera/#comments</comments>
		<pubDate>Fri, 21 May 2010 00:56:18 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2010/05/remote-control-flight-with-on-board-camera/</guid>
		<description><![CDATA[Here&#8217;s a sweet video from a model plane&#8217;s on-board camera. Surely this has been done before, but I think it looks like a lot of fun! 
http://www.gcmingati.net/wordpress/2010/03/01/103/
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a sweet video from a model plane&#8217;s on-board camera. Surely this has been done before, but I think it looks like a lot of fun! </p>
<p>http://www.gcmingati.net/wordpress/2010/03/01/103/</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/05/remote-control-flight-with-on-board-camera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tiling noise generator in Processing</title>
		<link>http://aidan.rfm.co.nz/blog/2010/05/tiling-noise-generator-in-processing/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/05/tiling-noise-generator-in-processing/#comments</comments>
		<pubDate>Tue, 18 May 2010 02:26:28 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Processing]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=142</guid>
		<description><![CDATA[Here&#8217;s a noise generator made in Processing which creates cloudy-looking noise which tiles! It&#8217;s extremely inefficient, but the algorithm looks really neat while it&#8217;s working!
Here&#8217;s a sample of its output, manually tiled (and scaled) to show that it&#8217;s seamless.


Click to start/pause, and press the M key to toggle the shape it uses to generate the [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a noise generator made in <a href="http://www.processing.org">Processing</a> which creates cloudy-looking noise which tiles! It&#8217;s <em>extremely</em> inefficient, but the algorithm looks really neat while it&#8217;s working!</p>
<p>Here&#8217;s a sample of its output, manually tiled (and scaled) to show that it&#8217;s seamless.</p>
<p><img src="http://aidan.rfm.co.nz/blog/wp-content/uploads/tiling-noise.jpg" alt="Tiled noise" /></p>
<p><span id="more-142"></span></p>
<p>Click to start/pause, and press the M key to toggle the shape it uses to generate the noise (circle or square). When run as an application, it saves the images it creates to the sketch folder.</p>
<div id="tiling_noise"><!--[if !IE] --><object classid="java:tiling_noise.class" type="application/x-java-applet" archive="http://aidan.rfm.co.nz/blog/wp-content/uploads/tiling_noise.jar" width="400" height="400" standby="Loading Processing software..."><param name="archive" value="http://aidan.rfm.co.nz/blog/wp-content/uploads/tiling_noise.jar"><param name="mayscript" value="true"><param name="scriptable" value="true"><param name="image" value="loading.gif"><param name="boxmessage" value="Loading Processing software..."><param name="boxbgcolor" value="#FFFFFF"><param name="test_string" value="outer"><!--<![endif]--><!-- For more instructions on deployment, or to update the CAB file listed here, see:http://java.sun.com/javase/6/webnotes/family-clsid.htmlhttp://java.sun.com/javase/6/webnotes/install/jre/autodownload.html --><object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://java.sun.com/update/1.6.0/jinstall-6u18-windows-i586.cab" width="400" height="400" standby="Loading Processing software..."><param name="code" value="tiling_noise"><param name="archive" value="http://aidan.rfm.co.nz/blog/wp-content/uploads/tiling_noise.jar"><param name="mayscript" value="true"><param name="scriptable" value="true"><param name="image" value="loading.gif"><param name="boxmessage" value="Loading Processing software..."><param name="boxbgcolor" value="#FFFFFF"><param name="test_string" value="inner"><p><strong>This browser does not have a Java Plug-in.<br /><a href="http://www.java.com/getjava" title="Download Java Plug-in">Get the latest Java Plug-in here.</a></strong></p>
<p></object><!--[if !IE] --></object><!--<![endif]--></div>
<p><a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/tiling_noise.pde">Processing Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/05/tiling-noise-generator-in-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel Lake</title>
		<link>http://aidan.rfm.co.nz/blog/2010/05/pixel-lake/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/05/pixel-lake/#comments</comments>
		<pubDate>Tue, 18 May 2010 01:50:33 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Interactive]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Processing]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=131</guid>
		<description><![CDATA[Check out my first foray into Processing: a 2.5D mosaic experiment.
Waaay faster as a standalone application (or run from within Processing).

One thing that I really like is the way you can see the waves reflecting off the walls. Sure, this isn&#8217;t exactly the most spectacular example of emergent behaviour, but it&#8217;s certainly not explicitly coded [...]]]></description>
			<content:encoded><![CDATA[<p>Check out my first foray into <a href="http://www.processing.org">Processing</a>: a 2.5D mosaic experiment.<br />
<strong>Waaay</strong> faster as a standalone application (or run from within Processing).</p>
<p><img src="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake-ss.png" alt="PixelLake screenshot" /></p>
<p>One thing that I really like is the way you can see the waves reflecting off the walls. Sure, this isn&#8217;t exactly the most spectacular example of emergent behaviour, but it&#8217;s certainly not explicitly coded in. I think that&#8217;s pretty neat.</p>
<p><span id="more-131"></span></p>
<p>Don&#8217;t forget to play with keys 1,2,3,4,5, and all the other keys listed in the red help text. One unlisted function is that holding the shift key allows you to <em>press</em>, rather than lift the pixels.</p>
<p>For you nerds, yes, it&#8217;s a 2d array of elements connected to their neighbours by &#8220;springs&#8221;. Short story: each pixel accelerates toward the average of its neighbours.</p>
<div id="PixelLake_container" style="position:relative;left:-170px; border:15px solid black;width:800px;height:600px;background:black;"><!--[if !IE] --><object classid="java:PixelLake.class" type="application/x-java-applet" archive="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake.jar" width="800" height="600" standby="Loading Processing software..."><param name="archive" value="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake.jar"><param name="mayscript" value="true"><param name="scriptable" value="true"><param name="image" value="loading.gif"><param name="boxmessage" value="Loading Processing software..."><param name="boxbgcolor" value="#FFFFFF"><param name="test_string" value="outer"><!--[endif]--><object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0_15-windows-i586.cab" width="800" height="600" standby="Loading Processing software..."><param name="code" value="PixelLake"><param name="archive" value="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake.jar"><param name="mayscript" value="true"><param name="scriptable" value="true"><param name="image" value="loading.gif"><param name="boxmessage" value="Loading Processing software..."><param name="boxbgcolor" value="#FFFFFF"><param name="test_string" value="inner"><p><strong>This browser does not have a Java Plug-in.<br /><a href="http://java.sun.com/products/plugin/downloads/index.html" title="Download Java Plug-in">Get the latest Java Plug-in here.</a></strong></p>
<p></object> <!--[if !IE] --></object> <!--[endif]--></div>
<p>Application: <a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake-win.zip">Windows</a> | <a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake-mac.zip">OS X</a> | <a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/PixelLake.pde">Processing Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/05/pixel-lake/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Towel-folding robot</title>
		<link>http://aidan.rfm.co.nz/blog/2010/04/towel-folding-robot/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/04/towel-folding-robot/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 01:23:56 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cute Things]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=123</guid>
		<description><![CDATA[Um&#8230; cute and awesome!


]]></description>
			<content:encoded><![CDATA[<p>Um&#8230; cute <em>and</em> awesome!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="240" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/gy5g33S0Gzo&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="400" height="240" src="http://www.youtube.com/v/gy5g33S0Gzo&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object width="400" height="240"><param name="movie" value="http://www.youtube.com/v/-lBHNbiooxQ&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/-lBHNbiooxQ&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="400" height="240"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/04/towel-folding-robot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>onReleaseOutside for AS3</title>
		<link>http://aidan.rfm.co.nz/blog/2010/03/onreleaseoutside-for-as3/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/03/onreleaseoutside-for-as3/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 22:32:08 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash and ActionScript]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Shortcuts and Timesavers]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=119</guid>
		<description><![CDATA[Recently I was horrified to learn that there is no AS3 equivalent for the AS2 event &#8220;onReleaseOutside&#8221;. I consider to be an extremely useful and important event. Although it can be emulated faithfully with the provided mouse events and a complicated bunch of calls to add/removeEventListener, it&#8217;s something you have to implement again and again. [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was horrified to learn that there is no AS3 equivalent for the AS2 event &#8220;onReleaseOutside&#8221;. I consider to be an extremely useful and important event. Although it can be emulated faithfully with the provided mouse events and a complicated bunch of calls to add/removeEventListener, it&#8217;s something you have to implement again and again. Because I was too lazy, I&#8217;ve been grumbling, sighing, and copy-pasting code without much more thought.</p>
<p>But as it turns out, I don&#8217;t have to anymore because Tyler of xtyler.com has released a super-groovy as3 library for <a title="AS3 Button Behavior Made Easy" href="http://www.xtyler.com/code/112/">making any InteractiveObject behave as a button</a>.</p>
<p>Siic! [sic]</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/03/onreleaseoutside-for-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tele-muppets</title>
		<link>http://aidan.rfm.co.nz/blog/2010/03/tele-muppets/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/03/tele-muppets/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 03:19:31 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2010/03/tele-muppets/</guid>
		<description><![CDATA[Telecom New Zealand&#8217;s apt new advertising campaign.


Maybe this should read &#8220;help is only 11 calls away&#8221;, which describes the frustrating situation which lead to this pic.
Thanks Lem!
Posted via email from aaaidan&#8217;s posterous

]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost">Telecom New Zealand&#8217;s apt new advertising campaign.</div>
<div class="posterous_autopost">
<p><img src="http://posterous.com/getfile/files.posterous.com/aidan-fiqhq/QzXj2QBhxFiu4bEwpzq8a0TyfwJeCmVS0yWRk9EFjuZtJF7A92UQp4wkdEik/tuppets.jpg" alt="" width="500" height="453" /></p>
<p>Maybe this should read &#8220;help is only 11 calls away&#8221;, which describes the frustrating situation which lead to this pic.</p>
<p>Thanks Lem!</p>
<p style="font-size: 10px;"><a href="http://posterous.com">Posted via email</a> from <a href="http://aaaidan.posterous.com/tele-muppets">aaaidan&#8217;s posterous</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/03/tele-muppets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Air Travel Heat Map: U.S. travel pre/post 9-11 &#8211; bmr789&#8217;s posterous</title>
		<link>http://aidan.rfm.co.nz/blog/2010/03/air-travel-heat-map-u-s-travel-prepost-9-11-bmr789s-posterous/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/03/air-travel-heat-map-u-s-travel-prepost-9-11-bmr789s-posterous/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 01:57:42 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=110</guid>
		<description><![CDATA[
Air Travel Heat Map: U.S. travel pre/post 9-11 &#8211; bmr789&#8217;s posterous.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/Airline_Heat.png"><img class="aligncenter size-full wp-image-115" title="Air Travel Heat Map: U.S. travel pre/post 9-11" src="http://aidan.rfm.co.nz/blog/wp-content/uploads/Airline_Heat.png" alt="U.S. air travel pre/post 9-11" width="470" height="480" /></a></p>
<p><a href="http://bmr789.posterous.com/air-travel-heat-map-us-travel-prepost-9-11">Air Travel Heat Map: U.S. travel pre/post 9-11 &#8211; bmr789&#8217;s posterous</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/03/air-travel-heat-map-u-s-travel-prepost-9-11-bmr789s-posterous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ye Auld Alt-Tabbing</title>
		<link>http://aidan.rfm.co.nz/blog/2010/03/ye-auld-alt-tabbing/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/03/ye-auld-alt-tabbing/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 04:04:54 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cute Things]]></category>
		<category><![CDATA[Shortcuts and Timesavers]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2010/03/ye-auld-alt-tabbing/</guid>
		<description><![CDATA[I just had the honour and priviledge of introducing someone to the concept of &#8220;Alt-Tabbing&#8221; in Windows.
Needless, they were excited about the possibilities.
]]></description>
			<content:encoded><![CDATA[<p>I just had the honour and priviledge of introducing someone to the concept of &#8220;Alt-Tabbing&#8221; in Windows.</p>
<p>Needless, they were excited about the possibilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/03/ye-auld-alt-tabbing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sand</title>
		<link>http://aidan.rfm.co.nz/blog/2010/03/sand/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/03/sand/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 03:42:30 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2010/03/100/</guid>
		<description><![CDATA[I hope Brandel doesn&#8217;t mind me posting my evolution of his sand experiment.
Pretty nifty?


]]></description>
			<content:encoded><![CDATA[<p>I hope <a href="http://www.zachernuk.com/">Brandel</a> doesn&#8217;t mind me posting my evolution of his sand experiment.</p>
<p>Pretty nifty?</p>
<p><span id="more-100"></span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://aidan.rfm.co.nz/blog/wp-content/uploads/Sand.swf" /><embed type="application/x-shockwave-flash" width="480" height="360" src="http://aidan.rfm.co.nz/blog/wp-content/uploads/Sand.swf"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/03/sand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Energy Crisis Solved</title>
		<link>http://aidan.rfm.co.nz/blog/2010/03/energy-crisis-solved/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/03/energy-crisis-solved/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 03:02:06 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=94</guid>
		<description><![CDATA[

Thanks, Toothpaste for Dinner.
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="Energy Crisis Solved" href="http://www.toothpastefordinner.com/index.php?date=082508"><img src="http://aidan.rfm.co.nz/blog/wp-content/uploads/energy-crisis-solved.gif" alt="Energy Crisis: Solved" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">Thanks, Toothpaste for Dinner.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/03/energy-crisis-solved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using binary data in Actionscript 3</title>
		<link>http://aidan.rfm.co.nz/blog/2010/02/using-binary-data-in-actionscript-3/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/02/using-binary-data-in-actionscript-3/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 03:48:58 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=89</guid>
		<description><![CDATA[This article deals with embedding binary data in ActionScript 3, as well as how to set the Endianness of the byte stream.]]></description>
			<content:encoded><![CDATA[<p>This is for anyone who&#8217;s having hair-tearing issues with working with binary data in Flash or Flex, or for those who want to be working with it.</p>
<p><span id="more-89"></span></p>
<h2>Firstly, embedding binary data</h2>
<p>How to embed? Check this article on <a title="Embed Almost Anything in Your SWF" href="http://dispatchevent.org/roger/embed-almost-anything-in-your-swf/">embedding binary data</a> at dispatchevent.org. For those in a hurry, this is what I took away from it:</p>
<pre>[Embed(source="relative_or_absolute_path_to_my_data_file.dat",
       mimeType="<span style="color: #3366ff;">application/octet-stream</span>")]
private static var __PuzzleData:Class; // This class object constructs a ByteArray subclass
protected static var data:ByteArray = new __PuzzleData(); // statically constructs an instance
...

// Example usage of the embedded byte array
public function getPuzzle(puzzleNumber:int):void {
  // set the data ByteArray to the start of the puzzle
  data.position = puzzleNumber * PUZZLE_BYTE_SIZE;
  // let the puzzle stream its data from the byte array using read*() calls
  var puzzle:Puzzle = new Puzzle(data);
  return puzzle;
}
</pre>
<h2>Endianness in Flash</h2>
<p>There&#8217;s one more thing you might need to take special notice of if you&#8217;re reading multi-byte numbers, which most numbers are. That is to note which <a title="Endian Example: Wikipedia" href="http://en.wikipedia.org/wiki/Endianness#Examples_of_storing_the_value_0A0B0C0Dh_in_memory">Endian</a> the data is formatted in.</p>
<p>The Endianness of a number is simply the order that its bytes are recorded in the file (or transmitted over the network). As far as I understand it, most compiled programs running on x86 hardware that write numbers to a file do so in &#8220;Little Endian&#8221; format, which means they write the least significant bytes first. Flash&#8217;s default Endianness is &#8220;Big Endian&#8221;, which expects the most significant bytes first, because that&#8217;s the standard endianness for network transmission.</p>
<p>So if your data file seems corrupted when you read it in Flash/Flex, this is very possibly the reason. Setting the Endianness is done on a per-ByteArray level:</p>
<pre>myFancyByteArray.endian = Endian.LITTLE_ENDIAN; // set the reads/writes to use little endian
</pre>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/02/using-binary-data-in-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HaXe fun</title>
		<link>http://aidan.rfm.co.nz/blog/2010/02/haxe-fun/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/02/haxe-fun/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 07:48:40 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=79</guid>
		<description><![CDATA[Here's my first play with HaXe, an excellent new(ish) programming language that can compile to swf!]]></description>
			<content:encoded><![CDATA[<p>Check out my first visual experiment with <a href="http://haxe.org/doc/start/flash">HaXe</a>, an excellent new(ish) programming language that can compile to swf!</p>
<p><span id="more-79"></span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="scale" value="noscale" /><param name="src" value="http://aidan.rfm.co.nz/blog/wp-content/uploads/haxe_test.swf" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://aidan.rfm.co.nz/blog/wp-content/uploads/haxe_test.swf" scale="noscale"></embed></object></p>
<p>HaXe is awesome. It can compile to heaps of different targets (including flash obviously), and can be translated automatically to many programming languages, including PHP, ActionScript, C++, <a href="http://nekovm.org/">Neko</a>, &#8230;</p>
<p>It brings a whole lot of awesome features to swf that aren&#8217;t even available yet in Actionscript 3, including <a href="http://haxe.org/ref/inline">inline functions</a>, and <a href="http://ncannasse.fr/blog/virtual_memory_api">direct virtual memory access</a> (only currently available otherwise when using <a href="http://labs.adobe.com/technologies/alchemy/">Alchemy</a>).</p>
<p>Plus the syntax is very much like Actionscript 3, but more consistent. A+</p>
<p>Amazing.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/02/haxe-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>addEventListener() is the new malloc()</title>
		<link>http://aidan.rfm.co.nz/blog/2010/02/addeventlistener-is-the-new-malloc/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/02/addeventlistener-is-the-new-malloc/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 01:15:17 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash and ActionScript]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=11</guid>
		<description><![CDATA[If you repeatedly (or naïvely) add event listeners but forget to remove them, even a small, simple flash application can eventually end up hogging a very large amount of memory. Sound familiar?]]></description>
			<content:encoded><![CDATA[<p>Remember back when you learned C? Way, way back in time? Well I do. When I recall my experience with C, I remember it being intoxicatingly fast and powerful. Kinda felt like mainlining into an artery of the machine: so much potential for incredible speed, but also horrendously dangerous and unforgiving.</p>
<p><span id="more-11"></span></p>
<p>For a coding noob, C&#8217;s requirement for manual memory management is perhaps the most time- and brain-consuming &#8216;feature&#8217;. Writing anything but the most basic of programs (i.e. using only &#8220;stack&#8221; memory) required consistent focus on the task of correctly allocating, managing, and deallocating memory. Accidentally accessing data from a part of memory that you hadn&#8217;t allocated resulted in that familiar spartan sting: <code>Segmentation fault</code>. No fancy stack trace, elaboration, or even an apology. The machine just smugly states how  <code>you fucked up</code> and dumps you back to the shell. I remember an amusing graffiti on the computer lab&#8217;s whiteboard: &#8220;it&#8217;s all seg&#8217;s fault!&#8221;</p>
<p>Since I&#8217;d just come from a Java background the previous year, I found this &#8220;memory stuff&#8221; initially very frustrating and intimidating. Though I didn&#8217;t write off C as &#8220;just a stupid or difficult language&#8221; because I firmly believed that this overhead must be a tradeoff for some other benefits which I had yet to discover or fully appreciate.</p>
<p>Although I learned later that there was a debugger (gdb) that took away a lot of the pain of seg faults, it didn&#8217;t make the task of managing memory any easier: it was just helpful when things went wrong. The debugger doesn&#8217;t help, for example, with memory leaks. If you repeatedly allocated memory but forgot to deallocate it, even a small, simple program could eventually end up hogging a very large amount of memory.</p>
<p>As time went on, I got comfortable with managing memory, but I never forgot about my assumption that there were something(s) so amazing about the language that balanced up the overhead for manual memory management.</p>
<p>And to be fair, C is an inately quick language, which is fairly obvious from the start. This is mostly because it&#8217;s pretty much the CPU&#8217;s roommate: CPUs and the C language have evolved together over the last few decades, and they&#8217;ve formed a pretty formidable partnership. But also, some features of C (e.g. memory pointers) open up algorithmic possibilities that don&#8217;t really have a comparable equivalent in other managed languages, like Java.</p>
<h3>Memory Management as a Focus Burglar</h3>
<p>Having said this though, I remember the day that I decided &#8220;this isn&#8217;t worth it&#8221;. I had grown to really enjoy aspects of memory management and the associated benefits, but for me, it just wasn&#8217;t worth the significant overhead of time and <em>focus</em>. The tasks of manual memory <em>steal focus</em> from the programmer, and make it more difficult to concentrate on the actual problem at hand.</p>
<p>So since then, I&#8217;ve hardly touched any unmanaged languages. I&#8217;ve had many arguments about whether or not this is a bad thing, but in the end I&#8217;m pretty happy with it. <em>So there</em>.</p>
<p>I&#8217;ve relatively recently taken an interest in Flash, mostly because of its relatively new, strongly-typed, compiled, managed language: ActionScript 3. It&#8217;s a super groovy language, with a decent community and lots of sweet libraries (some of which have been ironically ported from C and C++). Although its previous version was a lot like JavaScript, AS3 is more akin to Java than any other language. AS3 makes conventional, structured application development possible.</p>
<p>And, since the world seemed to be moving inexorably toward managed languages, I thought that I had left the world of memory leaks in the archaic past, and that it would henceforth be dredged up only in drunken thought experiments with old-school hackers in dingy bars at 4am.</p>
<h3>Not &#8217;til the Fat Lady sings</h3>
<p>But I was wrong. Because <code>addEventListener()</code> is the new <code>malloc()</code>.</p>
<p>If you repeatedly (or naïvely) add event listeners but forget to remove them, even a small, simple flash application can eventually end up hogging a very large amount of memory. Sound familiar?</p>
<p>Typically this happens when an developer creates load listeners, or mouse listeners, then removes assets from the display list without removing the listeners. Those assets still remain in memory as long as they are &#8220;listened to&#8221;. This is because the listener (e.g. the stage) retains a list of all of its dispatchers, so the listener can&#8217;t be garbage collected until it is removed from this list. Using &#8220;weak links&#8221; when creating adding listeners can help, but I have historically found this too buggy to rely on.</p>
<p>In ActionScript 2, although this mechanic was also possible, it manifested itself less often, because Flash assets were removed from all dispatcher lists (and from memory) when they were removed from the display list using <code>unloadAndStop()</code> or similar. In AS3, however, assets can exist before or after they&#8217;ve been removed from the display list, which is less forgiving for sloppy coding.</p>
<p>This of course, isn&#8217;t specific to ActionScript: just <em>any</em> managed language which includes or supports event dispatchers and listeners  (C#, Java, etc.). Extra care needs to be taken when using this model. Everytime you add a &#8220;transient&#8221; listener, there should be code somewhere else to remove that listener, just like malloc/dealloc.</p>
<p>Here&#8217;s some psuedo-as code to demonstrate:</p>
<pre>loader.addEventListener(COMPLETE, onLoadComplete);
function onLoadComplete() {
  loader.removeEventListener(COMPLETE, onLoadComplete);
  // ... (Loader handling code)
}
</pre>
<p>So that&#8217;s pretty much it.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/02/addeventlistener-is-the-new-malloc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange Flash framerate issue</title>
		<link>http://aidan.rfm.co.nz/blog/2010/02/strange-flash-framerate-issue/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/02/strange-flash-framerate-issue/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 00:41:09 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash and ActionScript]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2010/02/strange-flash-framerate-issue/</guid>
		<description><![CDATA[I'm using Flash CS4, and the fps is set to 30. However, when I run it normally (within flash using "Test Movie") I get a frame rate of 19.95 fps or so, and it's quite steady. When I run it externally, with the flash player or in a browser, I get pretty much exactly 30 fps. What gives?]]></description>
			<content:encoded><![CDATA[<p>I noticed today that the Flash game I&#8217;m working on has some odd framerate quirks, and I was wondering if anyone else has noticed similar behaviour. I know that Flash&#8217;s framerates can be quite unsteady at the best of times, but this is not the issue I&#8217;m having (at the moment).</p>
<p>I&#8217;m using Flash CS4, and the fps is set to 30. However, when I run it normally (within flash using &#8220;Test Movie&#8221;) I get a frame rate of 19.95 fps or so, and it&#8217;s quite steady. When I run it externally, with the flash player or in a browser, I get pretty much exactly 30 fps.</p>
<p>The frame rate in Flash remains at about 19.95 even if I bump up the fps to 60, even though this is faster fps is reflected correctly when it&#8217;s run externally. The game is a simple tile-based puzzle game, and is certainly not CPU bound. When running inside Flash, it&#8217;s using about 13% of the CPU.</p>
<p>When I set the framerate to, say, 10 fps, it runs at the correct speed everywhere.</p>
<p>Anyone have similar experiences with Flash? Any advice?</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/02/strange-flash-framerate-issue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving time when dynamically constructing BitmapData subclasses created in Flash</title>
		<link>http://aidan.rfm.co.nz/blog/2010/02/saving-time-when-dynamically-constructing-bitmapdata-subclasses-created-in-flash/</link>
		<comments>http://aidan.rfm.co.nz/blog/2010/02/saving-time-when-dynamically-constructing-bitmapdata-subclasses-created-in-flash/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 00:24:22 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash and ActionScript]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2010/02/saving-time-when-dynamically-constructing-bitmapdata-subclasses-created-in-flash/</guid>
		<description><![CDATA[When dynamically constructing embedded bitmaps which have been defined in the Flash Studio, it turns out that you don't actually need to pass the constructor the correct width and height, which can save heaps of time.]]></description>
			<content:encoded><![CDATA[<p>When constructing custom <code>BitmapData</code> subclasses which have been defined in the Flash Studio (such as <code>MyFancyBitmapData</code>), it turns out that you don&#8217;t actually need to pass the correct width and height of the bitmap. The <code>MyFancyBitmapData</code> class completely ignores its two (required) constructor parameters, and uses hard coded ones.</p>
<p>So don&#8217;t bother meticulously violating <acronym title="Don't Repeat Yourself">DRY</acronym> principles when creating these things dynamically. You can pass any integers you like, including zero or negative one, but I particularly like using <code>NaN</code> because it makes it clear that you&#8217;re not even trying to supply a number that could possibly be interpreted in any meaningful way (even if that&#8217;s a tad passive aggressive&#8230;)</p>
<pre>// e.g.
var myBitmapData:BitmapData = new MyFancyBitmap(NaN,NaN);
trace(myBitmapData.width + ", " + myBitmapData.height); // outputs: 45, 45</pre>
<p>It seems a bit ugly to me that the generated <code>BitmapData</code> subclasses require their parameters. I really do think they should be optional at the very least, and ideally, illegal.</p>
<p>Hope this saves someone some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2010/02/saving-time-when-dynamically-constructing-bitmapdata-subclasses-created-in-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shisha == Tobacco</title>
		<link>http://aidan.rfm.co.nz/blog/2009/10/shisha-tobacco/</link>
		<comments>http://aidan.rfm.co.nz/blog/2009/10/shisha-tobacco/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 20:35:03 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/2009/10/shisha-tobacco/</guid>
		<description><![CDATA[Note to self: shisha is tobacco. Tobacco is poisonous. Never forget.
]]></description>
			<content:encoded><![CDATA[<p>Note to self: shisha is tobacco. Tobacco is poisonous. Never forget.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2009/10/shisha-tobacco/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Catmull-Rom curve</title>
		<link>http://aidan.rfm.co.nz/blog/2009/08/catmull-rom-curve/</link>
		<comments>http://aidan.rfm.co.nz/blog/2009/08/catmull-rom-curve/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 05:54:39 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computer Programming]]></category>
		<category><![CDATA[Flash and ActionScript]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=49</guid>
		<description><![CDATA[Ever wanted to draw a curve directly through any number of points with the Flash Graphics class?]]></description>
			<content:encoded><![CDATA[<p>Ever wanted to draw a curve directly through any number of points with the Flash Graphics class?</p>
<p>Here&#8217;s a class that will do that for you. It uses a &#8220;<a title="Catmull-Rom wikipedia article" href="http://en.wikipedia.org/wiki/Catmull-Rom_spline#Catmull.E2.80.93Rom_spline" target="_blank">Catmull-Rom</a>&#8221; spline (named after its inventors), which draws directly through any number of points.</p>
<p>It&#8217;s not a spectacular or pretty looking curve. It&#8217;s very &#8220;dowdy&#8221;, and somewhat ugly, but it doesn&#8217;t make wild swinging curves like many other equations. This humble quality makes it really good for situations where it&#8217;s important that the curve stays pretty close to the control points.</p>
<p><a href="http://aidan.rfm.co.nz/blog/wp-content/catmullromexample.swf">Example SWF</a> (<a href="http://aidan.rfm.co.nz/blog/wp-content/catmullromexample.as">actionscript code</a>)</p>
<p><a href="http://aidan.rfm.co.nz/blog/wp-content/catmullrom.as">CatmullRom curve actionscript class</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2009/08/catmull-rom-curve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Black Screen Application</title>
		<link>http://aidan.rfm.co.nz/blog/2009/07/black-screen-application/</link>
		<comments>http://aidan.rfm.co.nz/blog/2009/07/black-screen-application/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 03:45:28 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=38</guid>
		<description><![CDATA[BlackScreen is a simple utility that displays a full black screen.]]></description>
			<content:encoded><![CDATA[<div id="attachment_39" class="wp-caption alignright" style="width: 231px"><a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/picture-1.png"><img class="size-full wp-image-39" title="BlackScreen" src="http://aidan.rfm.co.nz/blog/wp-content/uploads/picture-1.png" alt="BlackScreen's normal state" width="221" height="144" /></a><p class="wp-caption-text">BlackScreen&#39;s normal state</p></div>
<p>BlackScreen is an extremely simple utility application that displays a full screen of blackness for you.</p>
<p>I created it because I wanted to be able to easily see where my screen was dirty without shutting down or sleeping my computer. It could also be useful if you want to quickly hide what&#8217;s on your screen from beady prying eyes.</p>
<p>It&#8217;s built on AIR, so it&#8217;s cross-platform as long as you have <a href="http://get.adobe.com/air/" target="_blank">Adobe&#8217;s runtime</a> installed.</p>
<p><a href="http://aidan.rfm.co.nz/blog/wp-content/uploads/blackscreen.air">Download BlackScreen 1.0</a>.</p>
<p>(Safari users should disable <em>Open &#8220;safe&#8221; files after downloading</em> in Safari&#8217;s preferences before downloading.)</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2009/07/black-screen-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happiest game ever</title>
		<link>http://aidan.rfm.co.nz/blog/2009/05/happiest-game-ever/</link>
		<comments>http://aidan.rfm.co.nz/blog/2009/05/happiest-game-ever/#comments</comments>
		<pubDate>Wed, 06 May 2009 03:15:39 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computer Game]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=30</guid>
		<description><![CDATA[Windosill is amazing.]]></description>
			<content:encoded><![CDATA[<p>For the love of god, play this game!</p>
<p><a href="http://windosill.com/">Windosill</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2009/05/happiest-game-ever/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Minotaur China Shop</title>
		<link>http://aidan.rfm.co.nz/blog/2009/04/minotaur-china-shop/</link>
		<comments>http://aidan.rfm.co.nz/blog/2009/04/minotaur-china-shop/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 13:35:05 +0000</pubDate>
		<dc:creator>aidan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computer Game]]></category>

		<guid isPermaLink="false">http://aidan.rfm.co.nz/blog/?p=20</guid>
		<description><![CDATA[Minotaur China Shop is perhaps the best in-browser game I've played in a long time. And it made me laugh. Maniacally.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blurst.com/minotaur-china-shop/play"></a></p>
<div id="attachment_21" class="wp-caption alignright" style="width: 190px"><img class="size-medium wp-image-21" title="Minotaur China Shop Screenshot" src="http://aidan.rfm.co.nz/blog/wp-content/uploads/screenshot-51-300x225.jpg" alt="My love for ancient bone china is unrivalled." width="180" height="135" /><p class="wp-caption-text">My love for ancient bone china is unrivaled.</p></div>
<p>Bull in a china shop? It seems that&#8217;s not quite funny enough a premise for a computer game these days. Thankfully, Minotaurs are funnier than bulls in this context. Whew.</p>
<p><a href="http://blurst.com/minotaur-china-shop/play">Minotaur China Shop</a> is perhaps the most fun in-browser game I&#8217;ve played in a long time. And it made me laugh. Maniacally.</p>
<p>After you&#8217;ve played it (or while you&#8217;re waiting for it to load, if you&#8217;re a New Zealander), <a title="Day 132" href="http://blurst.com/blog/this-lonely-bovine-1/" target="_blank">check out</a> <a title="Day 133" href="http://blurst.com/blog/this-lonely-bovine-2/" target="_blank">the</a> <a title="Day 134" href="http://blurst.com/blog/this-lonely-bovine-3/" target="_blank">back</a> <a title="Release day!" href="http://blurst.com/blog/minotaur-china-shop-released/">story</a>. Never before has the phrase &#8220;tragic comedy&#8221; made so much sense to me.</p>
]]></content:encoded>
			<wfw:commentRss>http://aidan.rfm.co.nz/blog/2009/04/minotaur-china-shop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
