<?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>Tue, 09 Mar 2010 02:07:48 +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>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>0</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>
