<?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>CodeCube.NET</title>
	<atom:link href="http://codecube.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://codecube.net</link>
	<description>Joel Martinez' weblog</description>
	<lastBuildDate>Fri, 03 Feb 2012 04:14:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JavaScript Engine for Windows Phone</title>
		<link>http://codecube.net/2011/10/javascript-engine-for-windows-phone/</link>
		<comments>http://codecube.net/2011/10/javascript-engine-for-windows-phone/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 03:43:03 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=517</guid>
		<description><![CDATA[Edit: This is now available on GitHub: https://github.com/joelmartinez/Jint.Phone Did a fun bit of hacking, ported the Jint JavaScript interpereter to Windows Phone 7.5 &#8230; the result is seen below: And when we run that code in a silverlight application: This would also work in XNA games for wp7, so one can imagine scripting scenarios if [...]]]></description>
			<content:encoded><![CDATA[<p><em>Edit: This is now available on GitHub: <a href="https://github.com/joelmartinez/Jint.Phone">https://github.com/joelmartinez/Jint.Phone</a></em></p>
<p>Did a fun bit of hacking, ported the <a href="http://jint.codeplex.com/">Jint JavaScript interpereter</a> to Windows Phone 7.5 &#8230; the result is seen below:</p>
<div id="gist-1283275" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">var</span> <span class="n">engine</span> <span class="p">=</span> <span class="k">new</span> <span class="n">JintEngine</span><span class="p">();</span></div><div class='line' id='LC2'><span class="n">engine</span><span class="p">.</span><span class="n">SetFunction</span><span class="p">(</span><span class="s">&quot;alert&quot;</span><span class="p">,</span> <span class="k">new</span> <span class="n">Action</span><span class="p">&lt;</span><span class="kt">string</span><span class="p">&gt;(</span><span class="n">t</span> <span class="p">=&gt;</span> <span class="n">MessageBox</span><span class="p">.</span><span class="n">Show</span><span class="p">(</span><span class="n">t</span><span class="p">)));</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="n">engine</span><span class="p">.</span><span class="n">Run</span><span class="p">(</span><span class="s">&quot;alert(&#39;Hello World, from dynamically interpereted JavaScript on WP7!&#39;)&quot;</span><span class="p">);</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1283275/d98d251673babe3dfe036bb119ad3115adac1927/gistfile1.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1283275#file_gistfile1.cs" style="float:right;margin-right:10px;color:#666">gistfile1.cs</a>
            <a href="https://gist.github.com/1283275">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>And when we run that code in a silverlight application:</p>
<p style="text-align: center;"><img class="size-full wp-image-524 aligncenter" title="mapped alert method" src="http://codecube.net/wp-content/uploads/2011/10/wp7helloworld.png" alt="mapped alert method" width="473" height="350" /></p>
<p style="text-align: left;">This would also work in XNA games for wp7, so one can imagine scripting scenarios if that&#8217;s your cup of tea. Though it would take more work for this to be supported on the xbox since DynamicMethod is not supported there.</p>
<p style="text-align: left;">I was really happy to see that Windows Phone 7.1 (Mango) brings in support for the DynamicMethod and some of the other Reflection.Emit features. One of my previous projects (<em><a title="New LateBinder" href="http://codecube.net/2008/12/new-latebinder/">New LateBinder</a></em>) showed significant perf benefits to using this over regular old reflection.</p>
<p style="text-align: left;">I had to overcome some quirks due to the slight differences in the compact framework, but after some time I got it all working &#8230; so far all my tests have been successful (though it&#8217;s not to say it&#8217;s all fully working). Many props to the team of developers that did this over at codeplex.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/10/javascript-engine-for-windows-phone/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AI and Machine Learning</title>
		<link>http://codecube.net/2011/10/ai-and-machine-learning/</link>
		<comments>http://codecube.net/2011/10/ai-and-machine-learning/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 09:27:27 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=518</guid>
		<description><![CDATA[Machine Learning and Artificial Intelligence have long been interests of mine. Socially Aware XBox Live Games Finite State Machine nBayes Most recently, I&#8217;ve enrolled for the AI and Machine learning classes being offered by Stanford. I truly feel as if advanced engineering practices such as machine learning and AI are going to be what separates [...]]]></description>
			<content:encoded><![CDATA[<p>Machine Learning and Artificial Intelligence have long been interests of mine.</p>
<ul>
<li><a title="Socially Aware XBox Live Games" href="http://codecube.net/2008/06/socially-aware-xbox-live-games/">Socially Aware XBox Live Games</a></li>
<li><a title="Finite State Machine" href="http://codecube.net/2008/11/finite-state-machine/">Finite State Machine</a></li>
<li><a title="Bayesian Filtering with C#" href="http://codecube.net/2009/05/bayesian-filtering-with-c/">nBayes</a></li>
</ul>
<p>Most recently, I&#8217;ve enrolled for the <a href="http://www.ai-class.com">AI</a> and <a href="http://www.ml-class.org">Machine learning</a> classes being offered by Stanford. I truly feel as if advanced engineering practices such as machine learning and AI are going to be what separates the good companies from the truly great companies over the course of the next decade. So far, these classes have great introductions if you&#8217;ve never been exposed to the fields, and promise to go much deeper.</p>
<p>I&#8217;m very glad that this online education movement, which was legitimized by <a href="http://www.khanacademy.org/">Khan Academy</a> IMO, is gaining momentum. Soon, the whole world will have easy access to even the most advanced topics &#8230; the future will be ours to create, if only we step up to the challenge.</p>
<p>In the meantime, if you&#8217;re interested you should get started by watching the intro lectures, and (at least in the case of the ML Class) installing Octave: <a href="http://www.gnu.org/software/octave/">http://www.gnu.org/software/octave/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/10/ai-and-machine-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R.I.P. Steve Jobs</title>
		<link>http://codecube.net/2011/10/r-i-p-steve-jobs/</link>
		<comments>http://codecube.net/2011/10/r-i-p-steve-jobs/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 13:09:50 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=514</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://apple.com"><img class="size-thumbnail wp-image-515 aligncenter" title="apple" src="http://codecube.net/wp-content/uploads/2011/10/apple-150x150.jpg" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/10/r-i-p-steve-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calorie Count @ NYTM</title>
		<link>http://codecube.net/2011/09/calorie-count-nytm/</link>
		<comments>http://codecube.net/2011/09/calorie-count-nytm/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 13:40:22 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=503</guid>
		<description><![CDATA[This is already a few weeks old, but someone finally uploaded a good video of the presentation that I was a part of at the September New York Tech Meetup. Igor showed off the awesome new voice logging feature that we recently added to the iPhone version of the app (coming soon to the Android [...]]]></description>
			<content:encoded><![CDATA[<p>This is already a few weeks old, but someone finally uploaded a good video of the presentation that I was a part of at the September New York Tech Meetup.</p>
<p><iframe src="http://www.youtube.com/embed/u09hLxTPJxw" frameborder="0" width="560" height="315"></iframe></p>
<p>Igor showed off the awesome new voice logging feature that we recently added to the iPhone version of the app (coming soon to the Android version). Then I manned the keyboard to show off a little hack that we put together that same day. We provisioned a <a href="http://twilio.com">Twilio</a> phone number, and let the user record a little 10 second clip of what they want to log (ie. &#8220;one banana, two cups of coffee&#8221;). We then took that clip and sent it to <a href="http://www.ispeech.org/">iSpeech</a> who transcribed it. And finally we ran the transcribed text through our own API to log it.</p>
<p>Igor asked the crowd to call in the phone number, which they did, and it worked! It was a great experience, and a fun day. Many thanks to Hal Rotholz as well as he was instrumental in getting this hack up and running, in addition to monitoring the server while we were up there <img src='http://codecube.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/09/calorie-count-nytm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conway&#8217;s Game of Life in C#</title>
		<link>http://codecube.net/2011/09/conways-game-of-life-in-c/</link>
		<comments>http://codecube.net/2011/09/conways-game-of-life-in-c/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 03:41:25 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=491</guid>
		<description><![CDATA[I wrote this for fun on the train a while ago, and just came across it again recently. So I figured I may as well post it. The code implements a simple game of life simulation, but the interesting bit is that it parallelizes the process using the TPL. I uploaded it to github as a gist, [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote this for fun on the train a while ago, and just came across it again recently. So I figured I may as well post it. The code implements a simple <a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" title="Conway's Game of Life in C# on GitHub">game of life</a> simulation, but the interesting bit is that it parallelizes the process using the TPL. I uploaded it to github as a gist, so please feel free to check it out, and see if you can do anything interesting with it <img src='http://codecube.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div id="gist-1194013" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">using</span> <span class="nn">System</span><span class="p">;</span></div><div class='line' id='LC2'><span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">namespace</span> <span class="nn">Life</span></div><div class='line' id='LC5'><span class="p">{</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">class</span> <span class="nc">LifeSimulation</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC8'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="kt">bool</span><span class="p">[,]</span> <span class="n">world</span><span class="p">;</span></div><div class='line' id='LC9'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="kt">bool</span><span class="p">[,]</span> <span class="n">nextGeneration</span><span class="p">;</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="n">Task</span> <span class="n">processTask</span><span class="p">;</span></div><div class='line' id='LC11'><br/></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="nf">LifeSimulation</span><span class="p">(</span><span class="kt">int</span> <span class="n">size</span><span class="p">)</span></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC14'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="p">&lt;</span> <span class="m">0</span><span class="p">)</span> <span class="k">throw</span> <span class="k">new</span> <span class="n">ArgumentOutOfRangeException</span><span class="p">(</span><span class="s">&quot;Size must be greater than zero&quot;</span><span class="p">);</span></div><div class='line' id='LC15'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">this</span><span class="p">.</span><span class="n">Size</span> <span class="p">=</span> <span class="n">size</span><span class="p">;</span></div><div class='line' id='LC16'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">world</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">bool</span><span class="p">[</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">];</span></div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">nextGeneration</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">bool</span><span class="p">[</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">];</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC19'><br/></div><div class='line' id='LC20'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="kt">int</span> <span class="n">Size</span> <span class="p">{</span> <span class="k">get</span><span class="p">;</span> <span class="k">private</span> <span class="k">set</span><span class="p">;</span> <span class="p">}</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="kt">int</span> <span class="n">Generation</span> <span class="p">{</span> <span class="k">get</span><span class="p">;</span> <span class="k">private</span> <span class="k">set</span><span class="p">;</span> <span class="p">}</span></div><div class='line' id='LC22'><br/></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="n">Action</span><span class="p">&lt;</span><span class="kt">bool</span><span class="p">[,]&gt;</span> <span class="n">NextGenerationCompleted</span><span class="p">;</span></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="kt">bool</span> <span class="k">this</span><span class="p">[</span><span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="kt">int</span> <span class="n">y</span><span class="p">]</span></div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">get</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="n">world</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">];</span> <span class="p">}</span></div><div class='line' id='LC28'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">set</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="n">world</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">]</span> <span class="p">=</span> <span class="k">value</span><span class="p">;</span> <span class="p">}</span></div><div class='line' id='LC29'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC30'><br/></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="kt">bool</span> <span class="nf">ToggleCell</span><span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="kt">int</span> <span class="n">y</span><span class="p">)</span></div><div class='line' id='LC32'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">bool</span> <span class="n">currentValue</span> <span class="p">=</span> <span class="k">this</span><span class="p">.</span><span class="n">world</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">];</span></div><div class='line' id='LC34'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="n">world</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">]</span> <span class="p">=</span> <span class="p">!</span><span class="n">currentValue</span><span class="p">;</span></div><div class='line' id='LC35'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC36'><br/></div><div class='line' id='LC37'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">void</span> <span class="nf">Update</span><span class="p">()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC39'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">processTask</span> <span class="p">!=</span> <span class="k">null</span> <span class="p">&amp;&amp;</span> <span class="k">this</span><span class="p">.</span><span class="n">processTask</span><span class="p">.</span><span class="n">IsCompleted</span><span class="p">)</span></div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC41'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// when a generation has completed</span></div><div class='line' id='LC42'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// now flip the back buffer so we can start processing on the next generation</span></div><div class='line' id='LC43'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">var</span> <span class="n">flip</span> <span class="p">=</span> <span class="k">this</span><span class="p">.</span><span class="n">nextGeneration</span><span class="p">;</span></div><div class='line' id='LC44'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">this</span><span class="p">.</span><span class="n">nextGeneration</span> <span class="p">=</span> <span class="k">this</span><span class="p">.</span><span class="n">world</span><span class="p">;</span></div><div class='line' id='LC45'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">this</span><span class="p">.</span><span class="n">world</span> <span class="p">=</span> <span class="n">flip</span><span class="p">;</span></div><div class='line' id='LC46'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Generation</span><span class="p">++;</span></div><div class='line' id='LC47'><br/></div><div class='line' id='LC48'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// begin the next generation&#39;s processing asynchronously</span></div><div class='line' id='LC49'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">this</span><span class="p">.</span><span class="n">processTask</span> <span class="p">=</span> <span class="k">this</span><span class="p">.</span><span class="n">ProcessGeneration</span><span class="p">();</span></div><div class='line' id='LC50'><br/></div><div class='line' id='LC51'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="n">NextGenerationCompleted</span> <span class="p">!=</span> <span class="k">null</span><span class="p">)</span> <span class="n">NextGenerationCompleted</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">world</span><span class="p">);</span></div><div class='line' id='LC52'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC53'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC54'><br/></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">void</span> <span class="nf">BeginGeneration</span><span class="p">()</span></div><div class='line' id='LC56'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC57'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">processTask</span> <span class="p">==</span> <span class="k">null</span> <span class="p">||</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">processTask</span> <span class="p">!=</span> <span class="k">null</span> <span class="p">&amp;&amp;</span> <span class="k">this</span><span class="p">.</span><span class="n">processTask</span><span class="p">.</span><span class="n">IsCompleted</span><span class="p">))</span></div><div class='line' id='LC58'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC59'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// only begin the generation if the previous process was completed</span></div><div class='line' id='LC60'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">this</span><span class="p">.</span><span class="n">processTask</span> <span class="p">=</span> <span class="k">this</span><span class="p">.</span><span class="n">ProcessGeneration</span><span class="p">();</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC62'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">public</span> <span class="k">void</span> <span class="nf">Wait</span><span class="p">()</span></div><div class='line' id='LC65'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC66'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">processTask</span> <span class="p">!=</span> <span class="k">null</span><span class="p">)</span></div><div class='line' id='LC67'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">this</span><span class="p">.</span><span class="n">processTask</span><span class="p">.</span><span class="n">Wait</span><span class="p">();</span></div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC71'><br/></div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="n">Task</span> <span class="nf">ProcessGeneration</span><span class="p">()</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">Task</span><span class="p">.</span><span class="n">Factory</span><span class="p">.</span><span class="n">StartNew</span><span class="p">(()</span> <span class="p">=&gt;</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Parallel</span><span class="p">.</span><span class="n">For</span><span class="p">(</span><span class="m">0</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span> <span class="p">=&gt;</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Parallel</span><span class="p">.</span><span class="n">For</span><span class="p">(</span><span class="m">0</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">y</span> <span class="p">=&gt;</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">int</span> <span class="n">numberOfNeighbors</span> <span class="p">=</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">-</span><span class="m">1</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">-</span><span class="m">1</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC83'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="m">1</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC84'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="m">1</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC85'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="m">1</span><span class="p">,</span> <span class="p">-</span><span class="m">1</span><span class="p">)</span></div><div class='line' id='LC86'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="p">-</span><span class="m">1</span><span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">+</span> <span class="n">IsNeighborAlive</span><span class="p">(</span><span class="n">world</span><span class="p">,</span> <span class="n">Size</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">-</span><span class="m">1</span><span class="p">,</span> <span class="p">-</span><span class="m">1</span><span class="p">);</span></div><div class='line' id='LC88'><br/></div><div class='line' id='LC89'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">bool</span> <span class="n">shouldLive</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span></div><div class='line' id='LC90'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">bool</span> <span class="n">isAlive</span> <span class="p">=</span> <span class="n">world</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">];</span></div><div class='line' id='LC91'><br/></div><div class='line' id='LC92'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="n">isAlive</span> <span class="p">&amp;&amp;</span> <span class="p">(</span><span class="n">numberOfNeighbors</span> <span class="p">==</span> <span class="m">2</span> <span class="p">||</span> <span class="n">numberOfNeighbors</span> <span class="p">==</span> <span class="m">3</span><span class="p">))</span></div><div class='line' id='LC93'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC94'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">shouldLive</span> <span class="p">=</span> <span class="k">true</span><span class="p">;</span></div><div class='line' id='LC95'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC96'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span> <span class="nf">if</span> <span class="p">(!</span><span class="n">isAlive</span> <span class="p">&amp;&amp;</span> <span class="n">numberOfNeighbors</span> <span class="p">==</span> <span class="m">3</span><span class="p">)</span> <span class="c1">// zombification</span></div><div class='line' id='LC97'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC98'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">shouldLive</span> <span class="p">=</span> <span class="k">true</span><span class="p">;</span></div><div class='line' id='LC99'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC100'><br/></div><div class='line' id='LC101'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">nextGeneration</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">]</span> <span class="p">=</span> <span class="n">shouldLive</span><span class="p">;</span></div><div class='line' id='LC102'><br/></div><div class='line' id='LC103'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">});</span></div><div class='line' id='LC104'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">});</span></div><div class='line' id='LC105'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">});</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC107'><br/></div><div class='line' id='LC108'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="k">static</span> <span class="kt">int</span> <span class="nf">IsNeighborAlive</span><span class="p">(</span><span class="kt">bool</span><span class="p">[,]</span> <span class="n">world</span><span class="p">,</span> <span class="kt">int</span> <span class="n">size</span><span class="p">,</span> <span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="kt">int</span> <span class="n">y</span><span class="p">,</span> <span class="kt">int</span> <span class="n">offsetx</span><span class="p">,</span> <span class="kt">int</span> <span class="n">offsety</span><span class="p">)</span></div><div class='line' id='LC109'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC110'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">int</span> <span class="n">result</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span></div><div class='line' id='LC111'><br/></div><div class='line' id='LC112'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">int</span> <span class="n">proposedOffsetX</span> <span class="p">=</span> <span class="n">x</span> <span class="p">+</span> <span class="n">offsetx</span><span class="p">;</span></div><div class='line' id='LC113'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">int</span> <span class="n">proposedOffsetY</span> <span class="p">=</span> <span class="n">y</span> <span class="p">+</span> <span class="n">offsety</span><span class="p">;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kt">bool</span> <span class="n">outOfBounds</span> <span class="p">=</span> <span class="n">proposedOffsetX</span> <span class="p">&lt;</span> <span class="m">0</span> <span class="p">||</span> <span class="n">proposedOffsetX</span> <span class="p">&gt;=</span> <span class="n">size</span> <span class="p">|</span> <span class="n">proposedOffsetY</span> <span class="p">&lt;</span> <span class="m">0</span> <span class="p">||</span> <span class="n">proposedOffsetY</span> <span class="p">&gt;=</span> <span class="n">size</span><span class="p">;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(!</span><span class="n">outOfBounds</span><span class="p">)</span></div><div class='line' id='LC116'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC117'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">result</span> <span class="p">=</span> <span class="n">world</span><span class="p">[</span><span class="n">x</span> <span class="p">+</span> <span class="n">offsetx</span><span class="p">,</span> <span class="n">y</span> <span class="p">+</span> <span class="n">offsety</span><span class="p">]</span> <span class="p">?</span> <span class="m">1</span> <span class="p">:</span> <span class="m">0</span><span class="p">;</span></div><div class='line' id='LC118'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC119'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">result</span><span class="p">;</span></div><div class='line' id='LC120'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC121'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC122'><br/></div><div class='line' id='LC123'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">class</span> <span class="nc">Program</span></div><div class='line' id='LC124'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC125'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">static</span> <span class="k">void</span> <span class="nf">Main</span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span></div><div class='line' id='LC126'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC127'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">LifeSimulation</span> <span class="n">sim</span> <span class="p">=</span> <span class="k">new</span> <span class="n">LifeSimulation</span><span class="p">(</span><span class="m">10</span><span class="p">);</span></div><div class='line' id='LC128'><br/></div><div class='line' id='LC129'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// initialize with a blinker</span></div><div class='line' id='LC130'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">ToggleCell</span><span class="p">(</span><span class="m">5</span><span class="p">,</span> <span class="m">5</span><span class="p">);</span></div><div class='line' id='LC131'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">ToggleCell</span><span class="p">(</span><span class="m">5</span><span class="p">,</span> <span class="m">6</span><span class="p">);</span></div><div class='line' id='LC132'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">ToggleCell</span><span class="p">(</span><span class="m">5</span><span class="p">,</span> <span class="m">7</span><span class="p">);</span></div><div class='line' id='LC133'><br/></div><div class='line' id='LC134'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">BeginGeneration</span><span class="p">();</span></div><div class='line' id='LC135'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">Wait</span><span class="p">();</span></div><div class='line' id='LC136'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">OutputBoard</span><span class="p">(</span><span class="n">sim</span><span class="p">);</span></div><div class='line' id='LC137'><br/></div><div class='line' id='LC138'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">Update</span><span class="p">();</span></div><div class='line' id='LC139'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">Wait</span><span class="p">();</span></div><div class='line' id='LC140'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">OutputBoard</span><span class="p">(</span><span class="n">sim</span><span class="p">);</span></div><div class='line' id='LC141'><br/></div><div class='line' id='LC142'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">Update</span><span class="p">();</span></div><div class='line' id='LC143'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">sim</span><span class="p">.</span><span class="n">Wait</span><span class="p">();</span></div><div class='line' id='LC144'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">OutputBoard</span><span class="p">(</span><span class="n">sim</span><span class="p">);</span></div><div class='line' id='LC145'><br/></div><div class='line' id='LC146'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Console</span><span class="p">.</span><span class="n">ReadKey</span><span class="p">();</span></div><div class='line' id='LC147'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC148'><br/></div><div class='line' id='LC149'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">private</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">OutputBoard</span><span class="p">(</span><span class="n">LifeSimulation</span> <span class="n">sim</span><span class="p">)</span></div><div class='line' id='LC150'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC151'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">var</span> <span class="n">line</span> <span class="p">=</span> <span class="k">new</span> <span class="n">String</span><span class="p">(</span><span class="sc">&#39;-&#39;</span><span class="p">,</span> <span class="n">sim</span><span class="p">.</span><span class="n">Size</span><span class="p">);</span></div><div class='line' id='LC152'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">line</span><span class="p">);</span></div><div class='line' id='LC153'><br/></div><div class='line' id='LC154'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">y</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">y</span> <span class="p">&lt;</span> <span class="n">sim</span><span class="p">.</span><span class="n">Size</span><span class="p">;</span> <span class="n">y</span><span class="p">++)</span></div><div class='line' id='LC155'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC156'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">x</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">x</span> <span class="p">&lt;</span> <span class="n">sim</span><span class="p">.</span><span class="n">Size</span><span class="p">;</span> <span class="n">x</span><span class="p">++)</span></div><div class='line' id='LC157'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC158'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Console</span><span class="p">.</span><span class="n">Write</span><span class="p">(</span><span class="n">sim</span><span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">]</span> <span class="p">?</span> <span class="s">&quot;1&quot;</span> <span class="p">:</span> <span class="s">&quot;0&quot;</span><span class="p">);</span></div><div class='line' id='LC159'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC160'><br/></div><div class='line' id='LC161'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">();</span></div><div class='line' id='LC162'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC163'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC164'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC165'><span class="p">}</span></div><div class='line' id='LC166'><span class="p">,</span> </div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1194013/950541e727a52043c78df39706248705906195a6/GameOfLife.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1194013#file_game_of_life.cs" style="float:right;margin-right:10px;color:#666">GameOfLife.cs</a>
            <a href="https://gist.github.com/1194013">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>The included sample program that uses the &#8216;LifeSimulation&#8217; class initializes the a simple blinker, and then generates and outputs 3 generations.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/09/conways-game-of-life-in-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Droids I&#8217;m Looking For</title>
		<link>http://codecube.net/2011/08/the-droids-im-looking-for/</link>
		<comments>http://codecube.net/2011/08/the-droids-im-looking-for/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 03:50:42 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://codecube.net/2011/08/the-droids-im-looking-for/</guid>
		<description><![CDATA[I’m quite excited to reveal that, after 4+ years at my current employer, I’ve decided to accept a new position. The new position is with About.com, working in their Calorie Count business unit on their Android app. The app was recently featured on TechCrunch, covering a new feature which came to the iOS version. I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://market.android.com/details?id=com.about.CalorieCount&amp;feature=search_result"><img style="margin: 0px 8px 0px 0px; display: inline; float: left;" src="https://www.gstatic.com/android/market/com.about.CalorieCount/hi-78-2" alt="Calorie Counter &amp; Diet Tracker" align="left" /></a>I’m quite excited to reveal that, after 4+ years at my current employer, I’ve decided to accept a new position.</p>
<p>The new position is with <a href="http://about.com">About.com</a>, working in their <a href="http://caloriecount.about.com/">Calorie Count</a> business unit on their <a href="https://market.android.com/details?id=com.about.CalorieCount&amp;feature=search_result">Android app</a>. The app was recently <a href="http://techcrunch.com/2011/08/16/about-coms-calorie-count-ios-app-adds-voice-recognition-food-logging-and-more/">featured on TechCrunch</a>, covering a new feature which came to the iOS version. I will be working to bring that feature and others to the Android version.</p>
<p>This is of course a bit of a departure for me, professionally speaking. Having lived most of my professional life working with Microsoft technologies; I see it as a huge opportunity to broaden my horizons, and experience a different perspective. So far, Java hasn&#8217;t been that tough to pick up, and the Android SDK is easy enough to work with.</p>
<p>The team I will be working with has a radically different culture than I’ve seen in many places. For example; Although it’s part of a larger organization, the business unit is run somewhat as a startup. They even meet at <a href="http://nwc.co/">NewWorkCity</a> on Wednesdays just to change things up. This appeals to me a great deal, and I look forward to operating in an environment that eschews traditional corporate processes in favor of getting results.</p>
<p><a href="http://caloriecount.about.com/"><img src="http://ccakamai.about.com/images/elements/logo_cc.png" alt="Calorie Count" /></a></p>
<p>I’ve learned a great deal in the last 5 years. And I’ve come away from the experience with some of the best friends and most trusted colleagues. Also, just because I’ll be doing some Android programming now, I still love XNA, and I still love my Windows Phone … I will probably just have a few extra gadgets on my persons from now on <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="http://codecube.net/wp-content/uploads/2011/08/wlEmoticon-winkingsmile.png" alt="Winking smile" /></p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/08/the-droids-im-looking-for/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SteamBirds for Windows Phone</title>
		<link>http://codecube.net/2011/08/steambirds-for-windows-phone/</link>
		<comments>http://codecube.net/2011/08/steambirds-for-windows-phone/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 17:00:21 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://codecube.net/2011/08/steambirds-for-windows-phone/</guid>
		<description><![CDATA[Now Available for the Windows Phone Marketplace, SteamBirds: The turn-based aerial combat game that over twelve million people have played! &#34;&#8230;Steambirds lies in wait to rob you of your Monday morning.&#34; &#8211;Penny Arcade Use bombs, missiles and poison gas to defeat enemy planes in this unique turn-based game! This version features improved graphics, new music, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://goo.gl/mf6Dh"><img src="http://image.catalog.zune.net/v3.2/image/83605e47-88f6-4009-b755-d4d2692e15dd?width=200&amp;height=200" /></a></p>
<p>Now Available for the Windows Phone Marketplace, <a href="http://goo.gl/mf6Dh">SteamBirds</a>:</p>
<blockquote><p>The turn-based aerial combat game that over twelve million people have played!     </p>
<p><em>&quot;&#8230;Steambirds lies in wait to rob you of your Monday morning.&quot;</em> &#8211;Penny Arcade      </p>
<p>Use bombs, missiles and poison gas to defeat enemy planes in this unique turn-based game! This version features improved graphics, new music, and local multiplayer mode.</p>
</blockquote>
<p><a href="http://goo.gl/mf6Dh"><img title="Download Udder Chaos for your Windows Phone" alt="" src="http://www.windowsphoneapplist.com/forum/styles/monsmntheme/theme/images/download.png" width="160" height="50" /></a></p>
<p>There’s already a few reviews in the marketplace, my favorite is:</p>
<blockquote><p>OMG!!!!!!! THE Steambirds is out!!! I&#8217;ve <a href="http://steambirds.com/">played this game in flash</a>,now it&#8217;s out for wp7. A must have game for RTS lovers. Runs perfect &amp; smooth [… snip …] 10 out of 5 stars!!!</p>
</blockquote>
<p>As with <a href="http://codecube.net/2011/07/udder-chaos-for-windows-phone/">Udder Chaos</a>, this game was built with <a href="http://www.flatredball.com">FlatRedBall</a>. Many thanks to Vic and the rest of the team involved for the opportunity to work on this game. Lots of exciting things on the horizon <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://codecube.net/wp-content/uploads/2011/08/wlEmoticon-smile.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/08/steambirds-for-windows-phone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Udder Chaos for Windows Phone</title>
		<link>http://codecube.net/2011/07/udder-chaos-for-windows-phone/</link>
		<comments>http://codecube.net/2011/07/udder-chaos-for-windows-phone/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 13:42:07 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=486</guid>
		<description><![CDATA[Now available on the Windows Phone marketplace, Udder Chaos! &#8220;Protect your cows from Alien hordes as they try to abduct your precious livestock. Alien hordes too hard? Upgrade your weapons and gain smart bombs to blow them out of the sky. Includes global leaderboards, endless mode, easier kid-mode, and option to remove ads.&#8221; The trial [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://goo.gl/yw0Ii"><img title="Udder Chaos for WP7" src="http://www.windowsphoneapplist.com/marketplace/images/udder_chaos27179.png" alt="" width="200" height="200" /></a></p>
<p>Now available on the Windows Phone marketplace, <a href="http://goo.gl/yw0Ii">Udder Chaos</a>!</p>
<blockquote><p>&#8220;Protect your cows from Alien hordes as they try to abduct your precious livestock. Alien hordes too hard? Upgrade your weapons and gain smart bombs to blow them out of the sky.</p>
<p>Includes global leaderboards, endless mode, easier kid-mode, and option to remove ads.&#8221;</p></blockquote>
<p>The trial is completely fully featured and ad-supported &#8230; and if you purchase the game, all ads are removed.</p>
<p><a href="zune://navigate?phoneAppID=1d15dc55-2ca0-e011-986b-78e7d1fa76f8"><img class="alignnone" title="Download Udder Chaos for your Windows Phone" src="http://www.windowsphoneapplist.com/forum/styles/monsmntheme/theme/images/download.png" alt="" width="160" height="50" /></a></p>
<p><em>If you&#8217;ve got an XBox 360, you can also <a href="http://goo.gl/g0DfL">download Udder Chaos on the XBox Live Indie Games</a> channel!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/07/udder-chaos-for-windows-phone/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SequentialActionQueue in C#</title>
		<link>http://codecube.net/2011/07/sequentialactionqueue-in-c/</link>
		<comments>http://codecube.net/2011/07/sequentialactionqueue-in-c/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 20:13:56 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=488</guid>
		<description><![CDATA[A while ago, I created a clone on Google Code of the Stateless library because I wanted to use it in a .NET 4.0 project, and the current distribution was using VS 2008. After I did that, I started playing around with the library. Specifically, I wanted a way to have multiple state machines, and [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, I created a <a href="http://code.google.com/r/joelmartinez-stateless/">clone</a> on Google Code of the <a href="http://code.google.com/p/stateless/">Stateless library</a> because I wanted to use it in a .NET 4.0 project, and the current distribution was using VS 2008. After I did that, I started playing around with the library. Specifically, I wanted a way to have multiple state machines, and be able to process triggers and state changes in parallel. The problem of course is that although you can usually easily process state changes from different state machines in parallel, you can only process multiple triggers for a <strong>single</strong> state machine sequentially.</p>
<p>So I added a <em>ParallelExample</em> project to the solution and started experimenting. The end result is an easy to use class called <a href="http://code.google.com/r/joelmartinez-stateless/source/browse/Stateless/SequentialActionQueue.cs">SequentialActionQueue</a>. Usually when you need to synchronize access to a resource, you end up putting a lock section around your code so that only one thread may access it at a time. However things get more complex if you need to synchronize multiple sections of the code (ex. multiple methods in a class where only one may run at a time). This is classic thread-safety issues, and the dragons that lie in those waters. However, With the SequentialActionQueue, you can simply instantiate the class and proxy all actions through it and be guaranteed that everything will run safely one after the other.</p>
<blockquote>
<pre>private SequentialActionQueue queue = new SequentialActionQueue();
private int counter =0;

public void Add(int i)
{
    queue.Enqueue(() =&gt; counter += i);
}

public void Subtract(int i)
{
    queue.Enqueue(() =&gt; counter -= i);
}</pre>
</blockquote>
<p>The above is a simplified example which emulates the ability to use <a href="http://msdn.microsoft.com/en-us/library/system.threading.interlocked.aspx">Interlocked</a> to safely increment/decrement a number. I&#8217;d love to get some thoughts on the class &#8230; I wrote a few tests in the sample project, but that&#8217;s not to say there won&#8217;t be bugs in it, would love to hear your feedback <img src='http://codecube.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/07/sequentialactionqueue-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exec-Sql PowerShell Function</title>
		<link>http://codecube.net/2011/07/exec-sql-powershell-function/</link>
		<comments>http://codecube.net/2011/07/exec-sql-powershell-function/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 13:00:15 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=481</guid>
		<description><![CDATA[And the hits just keep on coming &#8230; here&#8217;s a simple little function which executes a query against a database and pipelines the results as PSObjects. .SYNOPSIS Executes SQL against the supplied connection string. .DESCRIPTION Executes SQL against the supplied connection string. The result set is then pipelined as a PSObject which can subsequently be [...]]]></description>
			<content:encoded><![CDATA[<p>And the hits just keep on coming &#8230; here&#8217;s a simple little function which executes a query against a database and pipelines the results as PSObjects.</p>
<blockquote>
<pre>.SYNOPSIS
Executes SQL against the supplied connection string.
.DESCRIPTION
Executes SQL against the supplied connection string. The result set is then pipelined as a PSObject which can subsequently be formatted and filtered any way you choose.
.PARAMETER query
The query to execute
.PARAMETER connstring
The connection string to use
.EXAMPLE
PS C:\&gt; Exec-Sql -q "select top 1 * from common.country" -conn ""
.EXAMPLE
PS C:\&gt; Exec-Sql -q "select * from common.country (nolock)" -conn "" | where {$_.Code -eq "AX" } | select code, name
#&gt;
function global:Exec-Sql
{
param ([Alias("q")]$query, [Alias("conn")]$connstring)

[system.reflection.assembly]::LoadWithPartialName("System.Data")
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection

$connection.ConnectionString = $connstring
$connection.Open()

$command = New-Object -TypeName System.Data.SqlClient.SqlCommand

$command.Connection = $connection
$command.CommandText = $query
$reader = $command.ExecuteReader()

$fieldcount = $reader.FieldCount

while ($reader.Read())
{
$o = new-object psobject

for ($i=0;$i -lt $fieldcount;$i++)
{
$o | add-member -membertype noteproperty $reader.GetName($i) $reader[$reader.GetName($i)].ToString()

}

write-output -inputobject $o
}

$connection.Close()

}</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/07/exec-sql-powershell-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

