<?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>disruption.ca</title>
	<atom:link href="http://disruption.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://disruption.ca</link>
	<description></description>
	<lastBuildDate>Mon, 14 Feb 2011 04:53:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flatlander</title>
		<link>http://disruption.ca/archives/flatlander/</link>
		<comments>http://disruption.ca/archives/flatlander/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 04:53:13 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://disruption.ca/?p=141</guid>
		<description><![CDATA[I had a really great time at the second Edmonton Startup Weekend.  I worked with Jordan Torbiak and Ryan Akerboom to produce a cool little 2d sandbox game prototype in Flash.  The concept was a 2d Minecraft-esq game, and I had loads of fun working on it.
Give it a try: Flatlander
]]></description>
			<content:encoded><![CDATA[<p>I had a really great time at the second <a href="http://edmonton.startupweekend.org/">Edmonton Startup Weekend</a>.  I worked with Jordan Torbiak and Ryan Akerboom to produce a cool little 2d sandbox game prototype in Flash.  The concept was a 2d Minecraft-esq game, and I had loads of fun working on it.</p>
<p>Give it a try: <a href="http://disruption.ca/flatlander">Flatlander</a></p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/flatlander/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cards</title>
		<link>http://disruption.ca/archives/cards/</link>
		<comments>http://disruption.ca/archives/cards/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 04:05:11 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruption.ca/?p=131</guid>
		<description><![CDATA[I spent an evening destroying a deck of cards.

30 Cards
120 Cuts
60 Joints
If I were to do it again, I would find a more accurate way of making the cuts.
Credit where it is due: I made this following Grorge Hart&#8217;s example.
My last post was dice.  Tonight it is cards.  Perhaps it is time for [...]]]></description>
			<content:encoded><![CDATA[<p>I spent an evening destroying a deck of cards.</p>
<p><a href="http://disruption.ca/wordpress/wp-content/uploads/2010/04/cards.jpg"><img src="http://disruption.ca/wordpress/wp-content/uploads/2010/04/cards-300x225.jpg" alt="cards" title="cards" width="300" height="225" class="alignnone size-medium wp-image-132" /></a></p>
<p>30 Cards<br />
120 Cuts<br />
60 Joints</p>
<p>If I were to do it again, I would find a more accurate way of making the cuts.</p>
<p>Credit where it is due: I made this following <a href="http://www.georgehart.com/cards/cards.html">Grorge Hart&#8217;s</a> example.</p>
<p>My last post was dice.  Tonight it is cards.  Perhaps it is time for me to branch out?</p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/cards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>God Does Not Play Dice With The Universe</title>
		<link>http://disruption.ca/archives/dice/</link>
		<comments>http://disruption.ca/archives/dice/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 22:31:21 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://disruption.ca/?p=84</guid>
		<description><![CDATA[
My dice portrait of Albert Einstein is finally finished and hanging on my wall.
A little over a year ago, I read a blog post about creating an amazing portrait of The Madonna using dice.  I loved the idea, and after some minor hesitation, decided to blatantly steal the concept.  Einstein would be my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://disruption.ca/wordpress/wp-content/uploads/2009/11/IMG_0321.JPG"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/IMG_0321-225x300.jpg" alt="Finished" title="Finished" width="225" height="300" class="alignnone size-medium wp-image-94" /></a></p>
<p>My dice portrait of Albert Einstein is finally finished and hanging on my wall.</p>
<p>A little over a year ago, I read a blog post about creating an <a href="http://www.flight404.com/blog/?p=131">amazing portrait of The Madonna using dice</a>.  I loved the idea, and after some minor hesitation, decided to blatantly steal the concept.  Einstein would be my subject, almost purely so that I could use this title, though it is <a href="http://en.wikiquote.org/wiki/Albert_Einstein">a bit of a mis-quote</a>.  I immediately started writing code to visualize different dice images, and playing with different algorithms for picking the dice.  In an effort to differentiate my project I tried using a mixture of black and white dice to give 12 colour choices.</p>
<p><a href="http://disruption.ca/wordpress/wp-content/uploads/2009/11/AlbertEinsteinKate5.jpg_5000_light_whiteAndBlackDice_normalized_error.jpg"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/AlbertEinsteinKate5.jpg_5000_light_whiteAndBlackDice_normalized_error-263x300.jpg" alt="Black and White" title="Black and White" width="263" height="300" class="alignnone size-medium wp-image-92" /></a></p>
<p>Ultimately  I decided that the resulting image looked too blocky and pixelated.  I was able to generate some interesting images by adding grey dice and working with 18 shades.  But that seemed to sacrifice some of the purity, fun and craziness of making an image in dice.  As one of my friends said, I might as well be working in a medium that is appropriate for a portrait if I am going to throw grey dice into the mix.</p>
<p>An idea from the <a href="http://www.reddit.com/r/programming/comments/79tkd/how_i_took_2925_dice_and_formed_them_into_a/">reddit discussion</a> of The Dice Madonna was rotating the 2s, 3s and 6s to create more detail.  I experimented with generating images that rotated these dice and used an error calculation to look for an improvement.  I was never able to generate a result that I was happy with using this technique.  I find the white space created by rotating adjacent 2s and 3s creates weird interference patterns without contributing to the image.  Here is an <a href="http://disruption.ca/wordpress/wp-content/uploads/2009/11/AlbertEinsteinKate5.jpg_new_5000_light_gamma2.2_specialR_normalized_population.jpg">image showing the problem</a>.</p>
<p>I ultimately decided on a 4950 dice image generated with a population algorithm for dice distribution.  My final image uses some rotation of 2s 3s and 6s in very limited situations.  I also experimented with dithering, but decided against it.</p>
<p><a href="http://disruption.ca/wordpress/wp-content/uploads/2009/11/AlbertEinsteinKate5.jpg_new_5000_light_gamma2.2_whiteDice_normalized_population.jpg"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/AlbertEinsteinKate5.jpg_new_5000_light_gamma2.2_whiteDice_normalized_population-263x300.jpg" alt="Final" title="Final" width="263" height="300" class="alignnone size-medium wp-image-89" /></a></p>
<p>Once I had an image, I ordered 5000 dice from <a href="http://www.koplowgames.com">Koplow Games</a>.  I chose the 12mm dice, as they are smaller, lighter and cheaper than the more common 16mm dice.  However they are still large enough to qualify as what most people consider normal dice.</p>
<p><a href="http://disruption.ca/wordpress/wp-content/uploads/2009/11/IMG_1121.JPG"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/IMG_1121-225x300.jpg" alt="5000 dice" title="5000 dice" width="225" height="300" class="alignnone size-medium wp-image-91" /></a></p>
<p>The next step was to build <a href="http://disruption.ca/dl/dice/dice.html">a flash program to help me place the dice</a>.  Follow the link to try it out.  Click to give the program focus, and use the arrow keys to move around the image.</p>
<p><a href="http://disruption.ca/wordpress/wp-content/uploads/2009/11/IMG_0120.JPG"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/IMG_0120-225x300.jpg" alt="Progress" title="Progress" width="225" height="300" class="alignnone size-medium wp-image-90" /></a></p>
<p>Actually placing the dice took about 12 hours, spread out over a week.  A friend built a case from plywood and lexan, which was a huge help.  Carpentry is not one of my strengths.  Interestingly the assembled dice were not very square.  There is enough variation in the dice that I needed to use foam tape around the inside of the frame to even the edges out.  The final package weighs 53lbs, and I was concerned about hanging it from the wall.  But a trip to a local framing store provided all of the needed hardware.</p>
<p>I took me over a year of off and on work to go from idea to art on my wall, but it was very fun.  Incredibly, about a month ago I saw this link to <a href="http://www.knowltonmosaics.com/imagepages/o-1.htm">a 10 year old web page that demonstrates just how rare new ideas are</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/dice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A month without slashdot</title>
		<link>http://disruption.ca/archives/a-month-without-slashdot/</link>
		<comments>http://disruption.ca/archives/a-month-without-slashdot/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 03:52:24 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruption.ca/?p=63</guid>
		<description><![CDATA[In September I noticed that I was spending an unreasonable amount of time on news and link sites.  In addition to a large list of RSS subscriptions that I read daily, I regularly hit Slashdot, Boing Boing, Reddit, Hacker News and Arts and Letters Daily.  There is a lot of overlap, but it [...]]]></description>
			<content:encoded><![CDATA[<p>In September I noticed that I was spending an unreasonable amount of time on news and link sites.  In addition to a large list of RSS subscriptions that I read daily, I regularly hit <a href="http://slashdot.org">Slashdot</a>, <a href="http://boingboing.net/">Boing Boing</a>, <a href="http://www.reddit.com/">Reddit</a>, <a href="http://news.ycombinator.com/">Hacker News</a> and <a href="http://www.aldaily.com/">Arts and Letters Daily</a>.  There is a lot of overlap, but it adds up to a lot of daily reading.  Worse than that, after I read everything interesting I encountered, I would repeatedly visit the same sites to see if there was any new content.  It was like I was channel surfing when I knew there was nothing to watch on TV.  I even caught myself sitting in front of the computer knowing that I should go to bed, but feeling to lazy to close the web browser and get up.</p>
<p><a href="http://xkcd.com/477/"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/xkcd_typewriter.png" alt="xkcd_typewriter" title="xkcd_typewriter" width="443" class="alignnone size-full wp-image-64" /></a></p>
<p>XKCD nicely demonstrates another problem.  I constantly interrupted what I was doing to check for new and interesting things online.  I was especially bad for doing this to procrastinate.  When I encountered something difficult while working on a task I immediately opened a new tab and loaded a news site.</p>
<p>I&#8217;m happy that I don&#8217;t watch TV.  But my web habits were just as bad as a TV addict&#8217;s.  I find the web is a particularly dangerous time sink.  I can find a constant stream of intellectually stimulating content, and I can participate in the conversation.  Time on the web can easily feel like getting real work done. </p>
<p>All of my reading introduces me to fascinating ideas.  And I&#8217;m well informed about trends, particularly in the technical areas I am interested in.  But my reading was eating huge amounts of time. When I noticed how bad it was, I gave it up for a month.  I decided that for the month of October I wouldn&#8217;t read any online news.</p>
<p><a href="http://xkcd.com/597/"><img src="http://disruption.ca/wordpress/wp-content/uploads/2009/11/xkcd_addiction.png" alt="xkcd_addiction" title="xkcd_addiction" width="443" class="alignnone size-full wp-image-70" /></a></p>
<p>I did not intend to fully disconnect from the web.  I kept my RSS feeds.  If I was looking for something, I googled it.  If someone sent me a link, I followed it.  But I didn&#8217;t visit my standard list of sites for news and entertainment.</p>
<p>I don&#8217;t watch TV.  I listen to the radio very little.  I don&#8217;t read newspapers or magazines.  And now I was giving up my online news sources.  I was concerned about being out of touch with the world.  It wasn&#8217;t a problem though.  If the news was important enough, I heard about it via friends, coworkers or my RSS feeds.  I didn&#8217;t miss being out of touch.  If I had read Boing Boing and Reddit, I would have learnt far more than I needed to about balloon boy.  As it is, I&#8217;m only vaguely aware of the story.  </p>
<p>I kept to my self imposed ban quite successfully.  Initially I was shocked at how often I opened a new tab, typed in http://slashdot.org, realized what I was doing, and closed the tab.  It wasn&#8217;t until almost the end of the month that I broke that habit.  I wasn&#8217;t completely successful in cutting out my online time wasting though.  I started visiting twitter and facebook more than I normally would, checking for updates and information.  In retrospect, I should have banned them as well.</p>
<p>The strangest part of the experience is that don&#8217;t know what I did with all the time I saved.  I didn&#8217;t spend a lot of time with family or friends.  It doesn&#8217;t seem like I accomplished much on my personal projects.  My apartment is a mess, and I have a stack of laundry to do.  I didn&#8217;t spend much time playing video games or reading books.  It&#8217;s like the time just disappeared.  Was I abducted by aliens?  A friend suggested that video surveillance footage would show me standing in the doorway of my computer room for hours, frozen with indecision when denied the option of visiting news sites.</p>
<p>I know I wrote a lot of email to a friend in Afghanistan.  Now I want gmail to provide analytics for my email account.  How many words did I write, and to what email addresses in October?  How does this compare to other months?  How much time did I spend reading and writing mail?  I imagine Google already logs this stuff.  I&#8217;d love it if I had access to the data.  Maybe I should give <a href="http://www.rescuetime.com/">RescueTime</a> a try, and track what I am doing with my computer.  It might show that I am more productive than I give myself credit for.</p>
<p>Now that my month is up I am much less interested in constantly visiting my favorite sites to see what is new online.  I seem to have broken the habit, and I&#8217;m happy I did.</p>
<p>On the first of November I went to Reddit and loaded the list of the top links from the previous month.  The top link, with 4357 points, was titled <a href="http://i.imgur.com/uG5Y5.jpg">Well that explains it [pic]</a>.  Perhaps I didn&#8217;t miss much.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/a-month-without-slashdot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links from my FitC Edmonton talk</title>
		<link>http://disruption.ca/archives/links-from-my-fitc-edmonton-talk/</link>
		<comments>http://disruption.ca/archives/links-from-my-fitc-edmonton-talk/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 01:10:23 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://disruption.ca/?p=61</guid>
		<description><![CDATA[I&#8217;d like to start with a disclaimer for anyone coming to my blog for the first time.  I swear I didn&#8217;t just install worpress and leave it on the default theme.  I actually chose this template before it became the wordpress default.  I&#8217;m really going to have to change it soon. (Edit: [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to start with a disclaimer for anyone coming to my blog for the first time.  I swear I didn&#8217;t just install worpress and leave it on the default theme.  I actually chose this template before it became the wordpress default.  I&#8217;m really going to have to change it soon. (Edit: Ok, I&#8217;ve updated the template.)</p>
<p>On with the links.</p>
<p>First, <a href="http://randomnine.wootfu.com/project.php?p=5">Commies</a>, the game that introduced me to the LD48.</p>
<p>The web site for the LD48 competitions:<br />
<a href="http://www.ludumdare.com/compo/">ludumdare.com</a></p>
<p>The <a href="http://www.ludumdare.com/compo/ludum-dare-15/?action=top">top ranked games</a> from the last competition.</p>
<p>Some recent LD48 games your really should check out:<br />
<a href="http://properundead.com/2009/08/new-game-beacon.html">Beacon</a><br />
<a href="http://www.codedojo.com/?p=104">Mind Wall</a><br />
<a href="http://www.increpare.com/2008/12/rara-racer/">Rara Racer</a></p>
<p>These are just a few highlights.  There are so many great games.</p>
<p>Here is an updated version of my entry in the last competition.  <a href="http://disruption.ca/cave/cavePC.html">Caves and Bombs</a>.  I&#8217;ll be writing a post about this game some time soon.</p>
<p>Next, some tools:<br />
<a href="http://flixel.org/">Flixel</a>. An open source AS3 framework for rapid game development.<br />
<a href="http://www.drpetter.se/project_sfxr.html">SFXR</a>. A small utility for generating retro style sound effects.<br />
<a href="http://opensword.org/Pixen/">Pixen</a>.  An image editor that specifically targets creating pixel art.</p>
<p>Here is a link to a blog post that covers a lot of similar concepts that my talk covered.  It seems I basically stole their title for my talk.  Oops.  <a href="http://headrush.typepad.com/creating_passionate_users/2005/08/build_something.html">Build something cool in 24 hours</a></p>
<p>Finally, a couple of unrelated links that would be relevant had I stuck with my original talk topic of Runtime Actionscript.<br />
<a href="http://metal.hurlant.com/blog/2008/05/17/web/as3-eval-updated/">As3 Eval</a>.<br />
<a href="http://wonderfl.net/">wonderfl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/links-from-my-fitc-edmonton-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Morale, Motivation and Startups</title>
		<link>http://disruption.ca/archives/morale-motivation-and-startups/</link>
		<comments>http://disruption.ca/archives/morale-motivation-and-startups/#comments</comments>
		<pubDate>Sat, 30 May 2009 06:35:31 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruption.ca/archives/morale-motivation-and-startups/</guid>
		<description><![CDATA[In January I read a blog post on likely causes for failure in a tech startup.  This article resulted in a comment thread on Y Combinator&#8217;s Hacker News that I found to be particularly interesting.
The conversation starts with Joel Spolsky stating that the real reason why startups fail is because their founders give up.
The [...]]]></description>
			<content:encoded><![CDATA[<p>In January I read a blog post on <a href="http://geeksinboston.com/2009/01/07/you-will-probably-fail-in-a-boring-and-project-specific-way/">likely causes for failure in a tech startup</a>.  This article resulted in a <a href="http://news.ycombinator.com/item?id=424043">comment thread on Y Combinator&#8217;s Hacker News</a> that I found to be particularly interesting.</p>
<p>The conversation starts with Joel Spolsky stating that the real reason why startups fail is because their founders give up.</p>
<p>The response to this is; yes, and their real cause of death is always heart failure.  Why do founders give up?</p>
<p>Paul Graham replied:</p>
<blockquote><p>The biggest reason founders stop working on their startups is that they get demoralized. Some people seem to have unlimited self-generated morale. These almost always succeed. At the other extreme there are people who seem to have no ability to do this; they need a boss to motivate them. In the middle there is a large band of people who have some, but not unlimited, ability to motivate themselves. These can succeed through careful morale management (and some luck).
</p></blockquote>
<p>Then a later in the conversation he said:</p>
<blockquote><p>There seems to be some tendency of never-give-ups to cluster, but it&#8217;s not absolute. It&#8217;s common to have one founder who&#8217;s super determined and another who is less so.<br />
If the never-give-up is sufficiently convincing, that&#8217;s almost as good as having all never-give-ups. He drags the rest along. The dangerous case is the startup that has all middle of the road founders. These have to get lucky fairly quickly or they give up.
</p></blockquote>
<p>This struck me as really deep, important stuff.  I was surprised that it didn&#8217;t receive more attention from the Y Combinator community.  Apparently Joel also found the discussion interesting, and wrote about it in <a href="http://www.inc.com/magazine/20090301/how-hard-could-it-be-start-up-static.html">his Inc. Magazine column</a>.</p>
<p>In a nutshell, Graham&#8217;s observation is that if you have &#8220;unlimited self-generated morale&#8221; you will almost always succeed.  If you don&#8217;t, you need to get lucky fairly quickly or you risk becoming demoralized and giving up.</p>
<p>When I read this I immediately wanted to know what the difference was between those in the first category and those in the second.  Unfortunately, the discussion thread didn&#8217;t offer much useful insight and I didn&#8217;t find an answer to my question.</p>
<p>I recently started Carol Dweck&#8217;s book Mindset.  Her theory is that people view the world with two different mindsets.  People with a &#8220;growth&#8221; mindset believe that their abilities and intelligence can improve over time through hard work and challenging situations.  People with a &#8220;fixed&#8221; mindset believe that their abilities and intelligence are innate and fixed.  This difference may seem relatively minor, but according to Dweck&#8217;s research it has deep implications for how a person deals with challenges.</p>
<p>Here are some quotations from the book.  I appologise for the lack of context.</p>
<blockquote><p>The <em>more</em> depressed people with the growth mindset felt, the <em>more</em> they took action to confront their problems, the <em>more</em> they made sure to keep up with their schoolwork, and the <em>more</em> they kept up with their lives.  The worse they felt, the more determined they became!</p></blockquote>
<p>Also interesting:</p>
<blockquote><p>People in a growth mindset don&#8217;t just seek challenge, they thrive on it.
</p></blockquote>
<p>Finally:</p>
<blockquote><p>Students with the fixed mindset stayed interested only when they did well right away.  Those who found it difficult showed a big drop in their interest and enjoyment.  If it wasn&#8217;t a testimony to their intelligence, they couldn&#8217;t enjoy it.</p></blockquote>
<p>Sound familiar?  I don&#8217;t know if Dweck&#8217;s growth mindset is the key to Graham&#8217;s unlimited self-generated morale, but the dots seem to connect.  </p>
<p>Dweck&#8217;s theories appear to be backed by sound research.  Also, she claims that it is possible to learn the growth mindset, which is encouraging.  I&#8217;m looking forward to the rest of the book.</p>
<p>Links:</p>
<ul>
<li><a href="http://paulbuchheit.blogspot.com/2007/05/beliefs-intelligence-and-failure.html">Paul Buchheit discusses Dweck&#8217;s research</a></li>
<li><a href="http://en.wikipedia.org/wiki/Mindset_(book)">Wikipedia&#8217;s Article on Mindset</a></li>
<li><a href="http://mindsetonline.com/">Mindset Online</a></li>
<li><a href="http://amazon.com/dp/0345472322">Buy Mindset from Amazon</a>  (Not an affiliate link.)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/morale-motivation-and-startups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edmonton Game Jam</title>
		<link>http://disruption.ca/archives/edmonton-game-jam/</link>
		<comments>http://disruption.ca/archives/edmonton-game-jam/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 04:12:55 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://disruption.ca/archives/edmonton-game-jam/</guid>
		<description><![CDATA[tigsource.com is a community dedicated to independent games.  Some form members are organizing a Western Canada TIGjam in Edmonton, and I&#8217;d really like to see this happen.
The concept is pretty simple.  It&#8217;s about getting a group of people who are interested in game development together for a couple of intense days of game [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tigsource.com">tigsource.com</a> is a community dedicated to independent games.  Some form members are organizing a Western Canada TIGjam in Edmonton, and I&#8217;d really like to see this happen.</p>
<p>The concept is pretty simple.  It&#8217;s about getting a group of people who are interested in game development together for a couple of intense days of game creation.  I&#8217;ve only ever done this sort of thing online, but I&#8217;m excited about trying something like this with a local group.</p>
<p>More information is available from this <a href="http://mattmakesgames.com/blog/2009/03/tigjam-canada.html">organizer&#8217;s blog entry</a>.</p>
<p>No date has been set yet, but if you are interested you should <a href="http://doodle.com/cggpde5p7qyyy3h5">register your availability</a>.</p>
<p>Finally, if you&#8217;d like to read more, there is some <a href="http://forums.tigsource.com/index.php?board=15.0">discussion on the TIGsource forms</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/edmonton-game-jam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweetcoding</title>
		<link>http://disruption.ca/archives/tweetcoding/</link>
		<comments>http://disruption.ca/archives/tweetcoding/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 23:15:43 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://disruption.ca/archives/tweetcoding/</guid>
		<description><![CDATA[Grant Skinner recently came up with a fun challenge.  Try to write an interesting program in a tweet (140 chars) worth of actionscript.  Take a look at the rules for the competition, and the #tweetcoding aggregation page that includes the results.
There are some amazing visual effects and impressive programs amongst the entries.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gskinner.com/blog/">Grant Skinner</a> recently came up with a fun challenge.  Try to write an interesting program in a tweet (140 chars) worth of actionscript.  Take a look at the <a href="http://gskinner.com/playpen/tweetcoding.html">rules for the competition</a>, and the <a href="http://tweetcoding.machine501.com/">#tweetcoding aggregation page</a> that includes the results.</p>
<p>There are some amazing visual effects and impressive programs amongst the entries.  My favorites include:</p>
<ul>
<li><a href="http://tweetcoding.machine501.com/tc_1267109791.swf">diagonal snake</a> by <a href="http://twitter.com/tomee6">tomee6</a>, it&#8217;s a minimalist game that is actually kind of fun.</li>
<li><a href="http://tweetcoding.machine501.com/tc_1262902747.swf">eye</a> by <a href="http://twitter.com/mesanges">messages</a>.  Very cool visuals depending on where you position the mouse.</li>
</ul>
<p> You can see the code for my entry on <a href="http://twitter.com/erikejohnson">my twitter page</a>, and here is the resulting SWF: <a href="http://tweetcoding.machine501.com/tc_1267915343.swf">Langton&#8217;s Ant</a>.  Langton&#8217;s Ant is a cellular automaton algorithm with very simple rules.  If the current grid cell is black, paint it white, turn to the left and take a step forward.  If the current cell is white, paint it black, turn to the right and take a step forward.  According to the <a href="http://en.wikipedia.org/wiki/Langton%27s_ant">Wikipedia Langton&#8217;s Ant article</a>, given an infinite grid, Langton&#8217;s Ant is a universal Turing machine, capable of performing any computation.  I don&#8217;t expect to win any prizes, but I&#8217;m happy with the geek factor of my entry.</p>
<p>Taking an algorithm and trying to implement it in 140 characters of source code is, like many optimization activities, quite fun and addictive.  But what surprised me was how much I learned from the experience.</p>
<p>Langton&#8217;s Ant does interesting things after about 10,000 iterations.  At 60 frames per second, it would take almost 3 minutes to reach that point.  So an extra I had to build into my implementation was a loop that ran the simulation 15 times for every frame.  After doing this, I discovered that the framerate would start to seriously drop after 15k ~ 20k iterations of the algorithm.  With some very rough profiling I discovered that it was the graphics render step that was taking so much time, which was surprising seeing as I was only plotting 15 pixels per frame.  It seems that whenever you draw to a graphics object in flash, it re-renders every drawing operation to recreate the image from scratch.  So after 15k iterations, the flash player is performing 15k drawing operations per frame.  Yuck.</p>
<p>I wasn&#8217;t able to find much information online about working around this.  Here is a <a href="http://www.dannyburbol.com/2008/05/flash-as3-graphicsdrawrect-memory-leak/">blog entry that incorrectly characterizes the problem as a memory leak</a>.  I tried using cacheAsBitmap, but it didn&#8217;t help.  Switching from drawLine, which the tweetcoding framework provides shortcuts for, to drawRect improved things by about 30%.  Setting the render quality to low had similar results, but using drawRect cost me less characters.</p>
<p>Using bitmap graphics, with setPixel calls avoids this problem and allows the algorithm to run at full speed even after 10&#8217;s of thousands of iterations.  Unfortunately, the minimum code required to get a bitmap graphics object onto the stage is something like this:</p>
<blockquote><p><code>addChild(new Bitmap(m=new BitmapData(w,h)));</code></p></blockquote>
<p>With only 140 characters to work with, I couldn&#8217;t find a way to fit this technique into my entry.  So I went with the drawRect method, and you will see a serious performance degradation problem as my entry runs.</p>
<p>There are many ways to compress source code.  Some techniques can be used methodically: using single character variable names, removing  comments and unneeded white space, chaining assignments, using the result of an assignment statement as a parameter and using the ? : operators instead of if() statements.</p>
<p>But what I found to be interesting was finding ways to express the algorithm more succinctly.  My biggest revelation came from compressing the code that handles the direction the ant is moving.  The ant needs to make 90 degree turns to the left or to the right.  Here is an uncompressed version of my first implementation of this logic:</p>
<blockquote><p><code>v = [ [1,0], [0,1], [-1,0], [0,-1] ]; // a list of the direction options.</p>
<p>d = (d + 1) % 4;  // rotate the ant's heading 90 degrees to the right.<br />
x = x + v[d][0];  // Change the ant's x position based on it's heading.<br />
y = y + v[d][1];  // Change the ant's y position based on it's heading.<br />
</code></p></blockquote>
<p>In my efforts to optimize this, I first looked at the list of direction vectors.  The X components of the list being 1, 0, -1, 0 and the Y components being 0, 1, 0, -1 stood out.  The Y list is the same as the X list, rotated by one position.  This lead to the following code:</p>
<blockquote><p><code>v = [1, 0, -1, 0];  // a list of vectors.</p>
<p>d = (d + 1) % 4;  // rotate the ant's heading 90 degrees to the right.<br />
x = x + v[d];  // Change the ant's x position based on it's heading.<br />
y = y + v[(d + 1) % 4];  // Change the ant's y position based on it's heading.<br />
</code></p></blockquote>
<p>With this revision, the 1,0,-1,0 list is specified once instead of twice and the X and Y components of the heading are derived from the same value.  I thought that this was as compact as I could make the logic.  Then I was struck by the idea of using the sine function.  A sine wave varies from 0 to 1 to 0 to -1 based on multiples of pi divided by two.  Cosine does the same thing one step out of phase.  With this insight the code becomes:</p>
<blockquote><p><code>d = (d + 1) % 4;  // rotate the ant's heading 90 degrees to the right.<br />
x = x + sin(d * PI/2); // Change the ant's x position based on it's heading.<br />
y = y + cos(d * PI/2);  // Change the ant's y position based on it's heading.</code></p></blockquote>
<p>I&#8217;m sure that to some people the relationship between the cardinal directions and the sine function is obvious, but for me it was a very cool discovery.</p>
<p>I had a lot of fun with this, and I&#8217;m looking forward to seeing which entries get picked to win by the judges, as well as seeing that future competitions hold.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/tweetcoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Game: Roads to Nowhere</title>
		<link>http://disruption.ca/archives/new-game-roads-to-nowhere/</link>
		<comments>http://disruption.ca/archives/new-game-roads-to-nowhere/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 00:36:25 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programing]]></category>

		<guid isPermaLink="false">http://disruption.ca/archives/new-game-roads-to-nowhere/</guid>
		<description><![CDATA[On December 5th took part in the 13th Ludum Dare 48 hour game programming competition.  The theme was roads and I created a small puzzle sort of game in flash.
You can play the game online.  Roads to Nowhere Competition Version
There is also the Roads to Nowere ld48 page.
What went right:

Motivation.  For some [...]]]></description>
			<content:encoded><![CDATA[<p>On December 5th took part in the 13th Ludum Dare 48 hour game programming competition.  The theme was roads and I created a small puzzle sort of game in flash.</p>
<p>You can play the game online.  <a href="http://disruption.ca/roads/roads.html">Roads to Nowhere Competition Version</a></p>
<p>There is also the <a href="http://www.ludumdare.com/compo/?category_name=ld13&#038;author_name=erik">Roads to Nowere ld48 page</a>.</p>
<p><strong>What went right:</strong></p>
<ol>
<li><em>Motivation</em>.  For some reason the combination of theme, timing, my idea and my mood had me very motivated.  I think I spent about 22 hours in front of the computer during the compo, and that time was almost 100% productive.  The distractions of the internet sucked up very little of my time.  It was a really great feeling to get so much productive time in.  Unfortunately I couldn&#8217;t tell you exactly what the driving factor was that made my motivation level higher this time than it was last time.</li>
<li><em>Tools</em>.  I decided to work in Actionscript 3 so that my game would run in flash.  I recently wrote a tutorial on using Adobe&#8217;s freely provided mxmlc, and I found that I had no trouble building a game from what I had learned.  I even learned to use the included debugger, fdb.  It&#8217;s pretty limited, but it&#8217;s helpful in a pinch.  Though I&#8217;m still more productive with Python&#8217;s tools and libraries, I&#8217;m happy with my choice to work in AS3.  The biggest thing I miss from Python is an equivalent to iPython.  I really wish there as an interactive Actionscript 3 shell. Ultimately, being able to play the resulting game in the browser is enough of a win for me to be willing to tolerate a lot of down sides.</li>
<li><em>Idea</em>.  The Roads theme immediately had me thinking about cities collecting resources from around them by building roads to them.  Something like the resource mechanic in the early Civilization games.  With this in mind, I thought it would be interesting to try to make some sort of resource gathering puzzle game, similar to what <a href="http://www.ludumdare.com/compo/author/jolle/">Jolle</a> had done with some of his ld48 games.  I think this worked out well for me.  Interestingly, two of the reviewers of my game noticed the Jolle influence and commented on it.</li>
<li><em>Crunch Time</em>.  I fond myself at a point where I had about eight hours left in the competition, and I had zero gameplay.  I had to scale back my original idea, cut some features, stop implementing new things and start creating a game from what I had.  The final game concept, the rule system, the user interface and the levels all came together in the last hours of the weekend.  In fact, I put the levels together so quickly that I had no idea whether or not they would be interesting or fun.  Fortunately, people enjoyed the game.  There were even people that were impressed by the intricacy and design of the levels.</li>
</ol>
<p><strong>What went wrong</strong></p>
<ol>
<li><em>Pathfinding</em>.  My initial gameplay idea involved having workers transporting resources along the roads from the land into the cites.  In order for this to work, I would need path finding from each of road tiles to the cites via the road grid the player built.  I considered implementing A*, but I didn&#8217;t have an AS3 priority queue library and implementing one or finding one and learning in the short time frame didn&#8217;t appeal to me.  So instead I decided that I would do a brute force depth first search from each road tile to each city.  For performance reasons, I cached the paths that I found on intermediate tiles.  Unfortunately, this scheme can cache bad paths when a road ends in a loop.  I spent most of my programming time on Saturday, and a good part of Sunday fighting with this.  I tried working around the problem, but the performance quickly hit unacceptable levels.  I decided to start from scratch on the pathfinding, instead implementing a breadth first search starting from each city.  As the search spread out, it found all of the connected road tiles, and stored the shortest path that was used to find that tile.  I had my new algorithm up are running perfectly in about an hour.  Of course I wouldn&#8217;t have been able to implement the new scheme so quickly if I hadn&#8217;t spent so much time with the old scheme.  The most frustrating part of it was that with so much time wasted on pathfinding, I had to change my game idea to a simpler one that didn&#8217;t really need the pathfinding at all.</li>
<li><em>Graphics</em>.  I had hoped to make nice pixel art land tiles, resource gathering animations and rippling water effects.  All of these ideas got cut in my last minute scramble to put something playable together.  Instead I ended up with some crude last minute pixel art with big ugly blocks for land tiles.  While graphics have never been a big focus for my games, I think that the visual impact counts for a lot.  In this case, I think the visuals were so bad that some people might have been discouraged from giving the game a try.</li>
<li><em>Time management</em>. Spending over a quarter of my time on a pathfinding feature than was never used certainly seems like a waste of time. But I have trouble categorizing my use of time as something that really went wrong.  I had to give up on my original gameplay idea, but I ended up with gameplay that people like.  I didn&#8217;t have any time to play test the levels I made, but on the other hand I didn&#8217;t over think the levels, and people were happy with the result.  Plus there was something satisfying about grinding through the pathfinding problem and getting it working correctly in the end.
</li>
</ol>
<p><strong>Results</strong></p>
<p>My game did quite well in the competition ratings:</p>
<p><a href="http://www.ludumdare.com/compo/category/ld13/?compo_limit=59">LD48 #13 full ratings</a>.</p>
<p>6th Overall, tied for 6th in Fun, 3rd in Innovation, 7th in Use of Theme.  The scores were very close in the Fun category.  Second place had a score of 3.90, tenth place had a score of 3.80.  I received a lot of great feedback in the comments, and these are the highest scores I&#8217;ve received for a ld48 entry.  Pretty good for a game that I thought was too rushed for anyone to be interested in.</p>
<p>I&#8217;m really glad I made the last minute decision to enter this competition.  It was a lot of fun, and I made a game that a lot of people seemed to like.</p>
<p>Finally, I suggest you take a look at <a href="http://www.ludumdare.com/compo/2008/12/07/all-roads-lead-from-home/">all roads lead from home by dessgeega</a>, and <a href="http://www.ludumdare.com/compo/2008/12/07/rara-racer-finished/">Rara Racer by increpare</a>.  These two entries really made me say wow.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/new-game-roads-to-nowhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Penguin Comic</title>
		<link>http://disruption.ca/archives/penguin-comic/</link>
		<comments>http://disruption.ca/archives/penguin-comic/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 22:10:22 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://disruption.ca/archives/penguin-comic/</guid>
		<description><![CDATA[I drew this comic some time ago, but now that it is the Christmas season I think it&#8217;s a good time to post it.
Penguin Party
If you&#8217;d like some context, this Coke commercial might help you out.
The comic started as pencil drawings.  I &#8220;inked&#8221; and coloured scans of the drawings in Flash to produce the [...]]]></description>
			<content:encoded><![CDATA[<p>I drew this comic some time ago, but now that it is the Christmas season I think it&#8217;s a good time to post it.</p>
<p><a href="/comics/PenguinParty.html">Penguin Party</a></p>
<p>If you&#8217;d like some context, <a href="http://www.youtube.com/watch?v=xL4DbMAe-d0">this Coke commercial</a> might help you out.</p>
<p>The comic started as pencil drawings.  I &#8220;inked&#8221; and coloured scans of the drawings in Flash to produce the final version.  Drawing, or in this case tracing, with a mouse kind of sucks.</p>
]]></content:encoded>
			<wfw:commentRss>http://disruption.ca/archives/penguin-comic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

