<?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>O! Mr Speaker!</title>
	<atom:link href="http://www.mrspeaker.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mrspeaker.net</link>
	<description>Javascript flâneur, internet flibbertygibbert</description>
	<lastBuildDate>Thu, 16 May 2013 17:44:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Into the third dimension</title>
		<link>http://www.mrspeaker.net/2013/05/17/another-dimension/</link>
		<comments>http://www.mrspeaker.net/2013/05/17/another-dimension/#comments</comments>
		<pubDate>Thu, 16 May 2013 16:29:46 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3487</guid>
		<description><![CDATA[My loyal long-term readers (by whom I mean Anton) would know my technological aesthetic bent strongly favour the 1980s. Seeing as the third dimension was not discovered until 1992, I have thus far had little inclination to bother with it. But things have changed: now that the 90s are suitably retro I feel it's finally [...]]]></description>
			<content:encoded><![CDATA[<p>My loyal long-term readers (by whom I mean Anton) would know my technological aesthetic bent strongly favour the 1980s. Seeing as the third dimension was <a href="http://www.imdb.com/title/tt0104692/">not discovered until 1992</a>, I have thus far had little inclination to bother with it. But things have changed: now that the 90s are suitably retro I feel it's finally time to gently prod at the edges of this strange new plane...</p>
<p><a href="http://www.mrspeaker.net/dev/biominto/"><img width="450" src="/images/biominto.jpg" /></a></p>
<p><span id="more-3487"></span><a href="http://www.mrspeaker.net/dev/biominto/">BioMint</a> is a "game" I made as part of last year's <a href="http://www.ludumdare.com/compo/ludum-dare-25/">Ludum Dare 48-hour Game dev thing</a> on the theme of "You are the villain". You play your friendly neighbourhood mining giant, who just wants to earn a living. To earn this living, you send out probes to scout for the presence of valuable minerals. Once you've found them you can commence blowing up the earth - with luck, you'll to uncover the treasured red gold. Texas Rosé. You can then retrieve the goods and earn your coin while tilling the earth bare.</p>
<p>That's the idea anyhoo. It's all a bit confusing, but hey - I only had 48 hours and I was working in a whole new dimension! To ease my elevation from the flatlands I came up with a 2-fold ingenious plan... 1: I'd use Three.js (I had hoped to start from scratch - but after flipping through the WebGL spec I decided it would be unwise), and 2: I'd make a game that was really 2D at its core, and I'd just project it into 3D space.</p>
<h2>Three.js vs WebGL</h2>
<p>At the start I felt like it was cheating to use a high-level library like Three.js - but I after the first 24 hours of the comp I realised an awful truth: using Three.js without understanding WebGL is like using jQuery without understanding JavaScript and the DOM. You can hack some stuff to work, but no one in the world would want ever have to look at your code. So I ended up spending a bunch of time reading Three.js source to see what was going on under the covers. It turns out that the answer is "not too much" - it's mostly simple wrappers to avoid a bunch of boiler plate, which is nice.</p>
<p>Since the comp I've been digging into WebGL a lot more. Once I understand it and can do all the basics, I'll probably go back to Three, just to save some time (you won't catch me using Unity or other such nonsense, naturally).</p>
<h2>2D meets 3D</h2>
<p>The second part of my grand plan was to bypass having to learn too much 3D stuff by basing the model of the game in 2D. Both the surface of the earth, and the underlying treasure, are 2D grids of perlin noise - rendered onto a single Canvas element, then stretched around the sphere: when you click on the sphere, I just find out the position of the cell in 2D space and base the logic on that. Sneaky hey? Well, I didn't totally dodge the 3D bullet - raycasting to find the clicked cell turned out to require a fair bit of <del>trial and error</del> thinking, wasting a nice chunk of my limited time. Hence the limited actual game play. *grumble* stupid matrix math *grumble*.</p>
<p>The best bit was making some 3D models in blender. I once used 3D Studio Max in 2002 and it scared the bejesus out of me and I never went back. Faced with the formidable interface of Blender barely worried me, however, as back in 2002 we didn't have an internet filled with youtubez to make picking things up a breeze. I don't think I'll win any modelling awards, but my little tanker/miner things are preeeeety nifty...</p>
<p><img src="/images/mine.png" alt="awesome mine thing" /></p>
<h2>All crossed over</h2>
<p>So I did it. 3D. Wasn't that scary after all. I think I'll try tesseracts next time. As always, the <a href="https://github.com/mrspeaker/biomint">code for BioMint</a> is on Github if you're feeling brave. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/05/17/another-dimension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pix Up, Look Sharp: a pixel resizer for Pixelmator</title>
		<link>http://www.mrspeaker.net/2013/05/14/pix-up-look-sharp-a-pixel-resizer-for-pixelmator/</link>
		<comments>http://www.mrspeaker.net/2013/05/14/pix-up-look-sharp-a-pixel-resizer-for-pixelmator/#comments</comments>
		<pubDate>Mon, 13 May 2013 15:08:20 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3592</guid>
		<description><![CDATA[Pixelmator is a fantastic image editor for Mac, but it lacks the ability to stretch an image via a "nearest-neighbor, big pixels please" method. I know, right?! Anyhoo... I made a Quartz Composer called plugin Pix Up, Look Sharp that does it for you, allowing you to set the width and height scaling amount. To [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/pixup.png" /><br />
<a href="http://www.pixelmator.com/">Pixelmator</a> is a fantastic image editor for Mac, but it lacks the ability to stretch an image via a "nearest-neighbor, big pixels please" method. <em>I know, right?!</em> Anyhoo... I made a Quartz Composer called plugin <a href="http://mrspeaker.net/dev/qc/PixUpLookSharp.qtz">Pix Up, Look Sharp</a> that does it for you, allowing you to set the <code>width</code> and <code>height</code> scaling amount.</p>
<p>To use it, simply drop <a href="http://mrspeaker.net/dev/qc/PixUpLookSharp.qtz">the plugin</a> in your <code>~/Library/Compositions/</code> folder and it'll appear in Pixelmator under "Other" in your effects browser. I can't figure out how to resize the destination output area from within Quartz itself, so you first have to stretch your canvas to accomodate the new pixels before you run the plugin. Sorry 'bout that. Hopefully pixel stretching will be included in a future version of Pixelmator - but until then: <a href="http://www.youtube.com/watch?v=kZGvnI37mxk">Pix up, Look Sharrrrp!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/05/14/pix-up-look-sharp-a-pixel-resizer-for-pixelmator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More is Zmore</title>
		<link>http://www.mrspeaker.net/2013/05/02/more-is-zmore/</link>
		<comments>http://www.mrspeaker.net/2013/05/02/more-is-zmore/#comments</comments>
		<pubDate>Wed, 01 May 2013 19:01:50 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3579</guid>
		<description><![CDATA[Ludum Darer JellyCakes has been live streaming his playing-and-rating efforts of entries in Ludum Dare 26. He's an excellent reviewer: testing each game very thoroughly and fairly. And he's hilarious. After giving my entry a good run through its paces he concluded with the above video. Might not fit the competition's theme of "minimalism", but [...]]]></description>
			<content:encoded><![CDATA[<p><iframe width="450" height="253" src="http://www.youtube.com/embed/aa-ggkJshUE" frameborder="0" allowfullscreen></iframe></p>
<p>Ludum Darer <em>JellyCakes</em> has been <a href="http://www.twitch.tv/jellycakes1">live streaming his playing-and-rating efforts</a> of entries in Ludum Dare 26. He's an excellent reviewer: testing each game very thoroughly and fairly. And he's hilarious. After giving <a href="http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&#038;uid=9199">my entry</a> a good run through its paces he concluded with the <a href="http://www.youtube.com/watch?v=aa-ggkJshUE">above video</a>. Might not fit the competition's theme of "minimalism", but dang... it's awesome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/05/02/more-is-zmore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZMORE: a game in 48 hours</title>
		<link>http://www.mrspeaker.net/2013/04/29/zmore-a-game-in-48-hours/</link>
		<comments>http://www.mrspeaker.net/2013/04/29/zmore-a-game-in-48-hours/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 12:14:03 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Game]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3570</guid>
		<description><![CDATA[Here's my entry for Ludum Dare #26, on the theme Minimalism. It's written in pure JavaScript and a "library" I cobbled together a few days before the competition. I also snuck in jQuery for doing the ajax requests when loading level data. The sounds (my favourite part of the game) were made in Ableton live [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mrspeaker.net/dev/ld26/"><img src="/images/zmore.png"></a></p>
<p>Here's <a href="http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&#038;uid=9199">my entry for Ludum Dare #26</a>, on the theme <em>Minimalism</em>.<span id="more-3570"></span></p>
<p>It's written in pure JavaScript and a <a href="https://github.com/mrspeaker/Omega500">"library"</a> I cobbled together a few days before the competition. I also snuck in jQuery for doing the ajax requests when loading level data.</p>
<p>The sounds (my favourite part of the game) were made in Ableton live with various VST plugins. The tiles were actually made in <a href="https://github.com/mrspeaker/Omega500">Blender</a>. Blender! And edited with Pixelmator.</p>
<p>The result was... alright. I was really looking for a nice puzzler, but ended up running out of time. Was good fun though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/04/29/zmore-a-game-in-48-hours/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DHTML Lemmings: an awesome hack</title>
		<link>http://www.mrspeaker.net/2013/04/23/dhtml-lemmings/</link>
		<comments>http://www.mrspeaker.net/2013/04/23/dhtml-lemmings/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 12:35:28 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Game]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3565</guid>
		<description><![CDATA[That image is the punchline to the question I awoke with in the middle of last night: "How the FLIPPIN' 'ECK did that guy do destructible terrain for DHTML Lemmings... in 2004?!!!". I lay there for some time as thoughts raced through my mind: There was no canvas element in 2004. No WebGL. In fact, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/lemmings.png" /></p>
<p>That image is the punchline to the question I awoke with in the middle of last night: "How the FLIPPIN' 'ECK did that guy do destructible terrain for <a href="http://www.elizium.nu/scripts/lemmings/">DHTML Lemmings</a>... in 2004?!!!". I lay there for some time as thoughts raced through my mind: There was no canvas element in 2004. No WebGL. In fact, there was no direct pixel access of any kind! (Not counting black and white XBM images, which had been killed off by then anyway).</p>
<p>Eventually I was forced to get out of bed and take a look. The answer, as pictured above, was a piece of creative brilliance:  each level is a simple jpg image that sits in the background. As diggers dig down they <em>add</em> "holes" - small black images - to the page. every few pixels dug requires a new hole image.</p>
<p><strong>Destruction via creation</strong>! That's the kind of lateral thinking that'll get you places.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/04/23/dhtml-lemmings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Short function syntax is here!</title>
		<link>http://www.mrspeaker.net/2013/03/26/short-function-syntax-is-here/</link>
		<comments>http://www.mrspeaker.net/2013/03/26/short-function-syntax-is-here/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 14:22:11 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3540</guid>
		<description><![CDATA[It's happened. It's finally happened. Short function syntax is here! At least, if you're running the nightly version of Firefox (which I am now, due to my promise to adopt the first browser to introduce short function syntax). Short function syntax replaces the lengthy function keyword with a symbol =>, and the almost-as-lengthy return keyword [...]]]></description>
			<content:encoded><![CDATA[<p>It's happened. It's finally happened. <a href="http://people.mozilla.org/~jorendorff/es6-draft.html#sec-13.2">Short function syntax</a> is here! At least, if you're running the nightly version of Firefox (which I am now, due to my promise to adopt the first browser to introduce short function syntax).</p>
<p>Short function syntax replaces the lengthy <code>function</code> keyword with a symbol <code>=></code>, and the almost-as-lengthy <code>return</code> keyword with the much shorter nothing (for one-liners).</p>
<p>However, this change represents far more than a few saved keystrokes: it marks the beginning of JavaScript as a serious functional programming language.<span id="more-3540"></span></p>
<p>Let's have a look at it in action. Fire up your Firefox nightly and open up the console. Defining a function can now be done like so:</p>
<p><code>
<pre>var cube = x => x * x * x;

cube(3); // 27</code></pre>
<p>Very snazzy hey? Where it really shines in as part of the collection manipulation methods: <code>map, reduce, filter, some, every</code>.</p>
<p><code>
<pre>[1, 2, 3, 4, 5].filter(x => x % 2).map(x => Math.sin(x));</pre>
<p></code></p>
<p>In this example we filter on odd numbers (keeping 1,3,5) and then pass them to the <code>Math.sin</code> function. If we were to write this with normal anonymous functions we'd have this horizontally-scrolling version:</p>
<p><code>
<pre>[1, 2, 3, 4, 5].filter(function(x){ return x % 2; }).map(function(x) { return Math.sin(x); });</pre>
<p></code></p>
<p>Which gives us the same result, but buries the actual processing logic in redundant keyword cruft. And that's why this seemingly simply feature is so important - it helps us to clarify and highlight the business logic and intention. Whereas previously it felt as if we were "bending" the language to code in a functional style, the new lambda format formalises it and gives us the thumbs-up to go functional.</p>
<p>It's quite beautiful when you need the one-liners with a single parameter like above - but of course, that's not always the case. If you have multiple parameters, you need to wrap them in parentheses:</p>
<p><code>
<pre>[2, 2, 2, 2, 2].map((el, i) => el * i); // [0, 2, 4, 6, 8]</pre>
<p></code></p>
<p>If you have zero parameters, you need an empty parameter list:</p>
<p><code>
<pre>[1, 2, 3, "a", "b", "c"].map(() => "hi!"); // ["hi!", "hi!", "hi!", "hi!", "hi!", "hi!"]</pre>
<p></code></p>
<p>Finally, if you want the body of the function to be a block, you need curlies and - unfortunately - an explicit return statement:</p>
<p><code>
<pre>[2, 2, 2].map((el, i) => {
	var double = el * 2;
	return double * i;
}); // [0, 4, 8]</pre>
<p></code></p>
<p>It's a bit sad we don't have implicit returns for blocks, but hey - a few hours ago we didn't even have short-function syntax, so I'm not going to complain about it (just yet). Hopefully once everyone gets a taste for the power of terse cruft-free syntax we can go even further. For now, I'm off to check out my new browser. Oooh, shiny...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/03/26/short-function-syntax-is-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#Random Hex colour</title>
		<link>http://www.mrspeaker.net/2013/03/08/random-hex-colour/</link>
		<comments>http://www.mrspeaker.net/2013/03/08/random-hex-colour/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 13:13:13 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Game]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3532</guid>
		<description><![CDATA[Want a random colour between white and black? "#" + (Math.random() * 0xffffff &#124; 0).toString(16) That is all. [Update: after I posted this I thought... i bet this has been done a zillion times already. It was, and by Paul Irish in 2009 no less. Additionally - it doesn't work. The best looking one there [...]]]></description>
			<content:encoded><![CDATA[<p>Want a random colour between white and black?<br />
<code>
<pre>"#" + (Math.random() * 0xffffff | 0).toString(16)</pre>
<p></code></p>
<p>That is all.</p>
<p>[Update: after I posted this I thought... i bet this has been done a zillion times already. It was, and <a href="http://paulirish.com/2009/random-hex-color-code-snippets/">by Paul Irish in 2009</a> no less. Additionally - it doesn't work. The best looking one there was:</p>
<p><code>
<pre>'#'+('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6);</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/03/08/random-hex-colour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three.js: looking away from .lookAt</title>
		<link>http://www.mrspeaker.net/2013/03/06/opposite-of-lookat/</link>
		<comments>http://www.mrspeaker.net/2013/03/06/opposite-of-lookat/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 10:42:07 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[3D]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3521</guid>
		<description><![CDATA[Have a hankering to look in the opposite direction of the vector you get from Three.js's .lookAt function? You need .lookAwayFrom! Dunno if there's an easier way, but the idea is find the vector between the target you'd normally "look at" and you, then add the resultant to your current position, and look at that [...]]]></description>
			<content:encoded><![CDATA[<p>Have a hankering to look in the opposite direction of the vector you get from Three.js's <code>.lookAt</code> function? You need <code>.lookAwayFrom</code>! Dunno if there's an easier way, but the idea is find the vector between the target you'd normally "look at" and you, then add the resultant to your current position, and look at that instead! Here's the standalone function:</p>
<pre><code>function lookAwayFrom(me, target) {
    var v = new THREE.Vector3();
    v.subVectors(me.position, target.position).add(me.position);
    me.lookAt(v);
}</code></pre>
<p>To face away from an enemy, you might do something like <code>lookAwayFrom(player, enemy)</code> and away you scarper. If you want to integrate it into Three.js, so you can do <code>player.lookAwayFrom(enemy)</code> then here ya go:
<pre><code>lookAwayFrom: function(target) {
	var v = new THREE.Vector3();
	v.subVectors(this.position, target.position).add(this.position);
	this.lookAt(v);
}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/03/06/opposite-of-lookat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scala date range</title>
		<link>http://www.mrspeaker.net/2013/03/05/scala-date-range/</link>
		<comments>http://www.mrspeaker.net/2013/03/05/scala-date-range/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 13:16:23 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3507</guid>
		<description><![CDATA[Google it: "Scala date range". The results are... unhelpful. The top result (a Stack Overflow link, obviously) hints at a workable solution. Here's my implementation of it: import org.joda.time.{DateTime, Period} def dateRange(from: DateTime, to: DateTime, step: Period): Iterator[DateTime] = Iterator.iterate(from)(_.plus(step)).takeWhile(!_.isAfter(to)) To use it, provide a "from" date, a "to" date and a joda time period: [...]]]></description>
			<content:encoded><![CDATA[<p>Google it: <a href="http://lmgtfy.com/?q=scala+date+range">"Scala date range"</a>. The results are... unhelpful. <a href="http://stackoverflow.com/questions/7929483/returning-and-iterable-collection-using-yield-in-scala">The top result</a> (a Stack Overflow link, obviously) hints at a workable solution. Here's my implementation of it:<br />
<code>
<pre>
import org.joda.time.{DateTime, Period}

def dateRange(from: DateTime, to: DateTime, step: Period): Iterator[DateTime] =
  Iterator.iterate(from)(_.plus(step)).takeWhile(!_.isAfter(to))
</pre>
<p></code>To use it, provide a "from" date, a "to" date and a joda time period:<br />
<code>
<pre>
val range = dateRange(
    DateTime.now().minusYears(5),
    DateTime.now(),
    Period.months(6))
</pre>
<p></code> Which gives you an iterator starting 5 years ago, containing every date 6 months apart, up until now. An iterator is part of scala collections - so you can <code>toList</code> it or map/filter etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/03/05/scala-date-range/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live editing for game development</title>
		<link>http://www.mrspeaker.net/2013/02/14/live-editing-for-game-development/</link>
		<comments>http://www.mrspeaker.net/2013/02/14/live-editing-for-game-development/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 13:13:22 +0000</pubDate>
		<dc:creator>Mr Speaker</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.mrspeaker.net/?p=3480</guid>
		<description><![CDATA[Here's a small demo on how I've been using Chrome's "live editing" features to speed up my development workflow. Chrome let's you modify currently loaded files on the fly - so you can tweak settings and test code in real time. Don't forget to keep an eye on the development of my up-and-coming waterski odyssey: [...]]]></description>
			<content:encoded><![CDATA[<p>Here's a small demo on how I've been using Chrome's "live editing" features to speed up my development workflow. Chrome let's you modify currently loaded files on the fly - so you can tweak settings and test code in real time.</p>
<p>Don't forget to keep an eye on the development of my up-and-coming waterski odyssey: <a href="http://www.waterskiordie.com/">WaterSki or Die!</a> (coming to a phone near you soon, with programmer art removed).</p>
<p><iframe width="450" height="253" src="http://www.youtube.com/embed/HTYYW5CeaQM" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrspeaker.net/2013/02/14/live-editing-for-game-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
