<?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 &#187; Programming</title>
	<atom:link href="http://codecube.net/category/programming/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>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>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>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>WebHelper for Desktop CLR</title>
		<link>http://codecube.net/2011/04/webhelper-for-desktop-clr/</link>
		<comments>http://codecube.net/2011/04/webhelper-for-desktop-clr/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 16:53:31 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=451</guid>
		<description><![CDATA[I recently posted a nice little helper class that I had been using on windows phone 7. This version works on the desktop CLR (there&#8217;s a minor difference in how you create a web request) &#8230; and also adds a new method that lets you get direct access to the response stream. So I figured [...]]]></description>
			<content:encoded><![CDATA[<p>I recently posted a nice little <a href="http://codecube.net/2010/09/windows-phone-7-webhelper/">helper class</a> that I had been using on windows phone 7. This version works on the desktop CLR (there&#8217;s a minor difference in how you create a web request) &#8230; and also adds a new method that lets you get direct access to the response stream. So I figured I&#8217;d post it as it is a generally useful class.</p>
<pre>public static class WebHelper
{
    public static WaitHandle Get(string url, Action&lt;WebResponse&gt; action)
    {
        return Get(new Uri(url), action);
    }

    public static WaitHandle Get(Uri uri, Action&lt;WebResponse&gt; action)
    {
        var request = WebRequest.CreateDefault(uri);
        ManualResetEvent handle = new ManualResetEvent(false);
        request.BeginGetResponse(i =&gt;
        {
            var response = request.EndGetResponse(i);
            action(response);
            handle.Set();
        }, null);

        return handle;
    }

    public static WaitHandle Get(string url, Action&lt;string&gt; action)
    {
        return Get(new Uri(url), action);
    }

    public static WaitHandle Get(Uri uri, Action&lt;string&gt; action)
    {
        return Get(uri, response =&gt;
        {
            var sreader = new StreamReader(response.GetResponseStream());
            var result = sreader.ReadToEnd();
            action(result);
        });
    }
}</pre>
<p>For some example usage, you can easily proxy a download through an ASP.NET MVC web app:</p>
<pre>        public ActionResult Get(string q)
        {
            Stream res = new MemoryStream();
            string contentType = "text/html";

            bool timedOut = !WebHelper
                .Get(q, html =&gt;
                    {
                        res = html.GetResponseStream();
                        contentType = html.ContentType;
                    })
                .WaitOne(30000); // wait 30 seconds to get a response

            if (timedOut)
            {
                StreamWriter writer = new StreamWriter(res);
                writer.WriteLine("The request timed out, sorry!");
                res.Seek(0, SeekOrigin.Begin);
            }

            return File(res, contentType);
        }</pre>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2011/04/webhelper-for-desktop-clr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Determining &#8220;place&#8221; Location by Averaging User Data</title>
		<link>http://codecube.net/2010/12/determining-place-location-by-averaging-user-data/</link>
		<comments>http://codecube.net/2010/12/determining-place-location-by-averaging-user-data/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 17:00:06 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=382</guid>
		<description><![CDATA[Location based services like foursquare, gowalla, and the recently minted &#8216;facebook places&#8217; let users check in from wherever they are at to inform their friends of their whereabouts. By this point, most places have already been defined in those services, so all you usually have to do is pick from a list of nearby locations. [...]]]></description>
			<content:encoded><![CDATA[<p>Location based services like foursquare, gowalla, and the recently minted &#8216;facebook places&#8217; let users check in from wherever they are at to inform their friends of their whereabouts. By this point, most places have already been defined in those services, so all you usually have to do is pick from a list of nearby locations. And if it&#8217;s not on the list, you can just define a new place.</p>
<p>Despite the social weight of these already existing services &#8230; there is still a lush breeding grounds for innovation in location services. If you were building such a service, let&#8217;s talk about the process of defining a &#8220;new place&#8221; as a user. What happens if the first user of your app to create a place is actually just around the corner, or if the place is large enough, on the east side rather than the west side. In a naively designed system, your place would be incorrectly defined from that point forward and would offer incorrect position data for the life of your service.</p>
<p>This post proposes a simple system that lets the place&#8217;s location in the world adjust itself over time. The more checkins you receive, the more accurate the location.</p>
<p>The concept is quite simple actually, by <a href="http://en.wikipedia.org/wiki/Centroid#Of_a_finite_set_of_points">computing the centroid</a> from all known checkins, you find the true &#8216;center&#8217; of you place. Doing this calculation could not be any simpler, centroid is just a fancy term for the average vector from a set (ie. Lat/Lon)</p>
<p><img class="alignnone" title="formula" src="http://upload.wikimedia.org/math/9/1/6/916178b5822b7f7ae920bad7e871d1db.png" alt="" width="199" height="39" /></p>
<p>I made a useful extension method that you can apply to a collection of vectors which can be invoked as such.</p>
<blockquote>
<pre>Vector2 centroid = locations.Centroid();

public static class VectorExtensions
{
    public static Vector2 Centroid(this List&lt;Vector2&gt; points)
    {
        int pointCount = points.Count;
        Vector2 total = Vector2.Zero;
        Vector2 centroid = Vector2.Zero;

        if (pointCount &gt; 0)
        {
            for (int i = 0; i &lt; pointCount; i++)
            {
                var point = points[i];
                total.X += point.X;
                total.Y += point.Y;
            }
            centroid = new Vector2(
                total.X / (float)pointCount,
                total.Y / (float)pointCount);
        }
        return centroid;
    }
}</pre>
</blockquote>
<p>So given a set of points, this would easily give you the logical center of them. Even if there&#8217;s a random checkin from outside the area, the average will not let the centroid vary by much.</p>
<p><img class="aligncenter size-full wp-image-387" title="centroid" src="http://codecube.net/wp-content/uploads/2010/08/centroid.png" alt="" width="374" height="240" /></p>
<p>But there is still an issue with this approach. How can this techique be applied to a real world system, you can&#8217;t expect me to keep a copy of every checkin ever done for a given location &#8230; I mean you can, but for most purposes it&#8217;s overkill.</p>
<p>Luckily, there is a way to reduce the problem domain to limit the amount of data needed to recalculate the centroid every time there is a new point to consider. By doing a weighted average, your data structure is greatly simplified because all you have to keep in the database for any given location is:</p>
<ul>
<li>latitude</li>
<li>longitude</li>
<li>numberOfCheckins</li>
</ul>
<p>With that, you can find your list of closest places to let the user see if their location is already in the db.</p>
<p>If the user selects an existing place to check in to, you can calc the centroid as follows:</p>
<blockquote>
<pre>public static Vector2 WeightedCentroid(
                                                this Vector2 newPoint,
                                                Vector2 oldCentroid,
                                                int numOfCheckins)
{
    return new Vector2(
        (oldCentroid.X * (float)numOfCheckins + newPoint.X) / ((float)numOfCheckins + 1),
        (oldCentroid.Y * (float)numOfCheckins + newPoint.Y) / ((float)numOfCheckins + 1)
        );
};</pre>
</blockquote>
<p>With that, you can save the value of the new average, along with the latest number of checkins. And that&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2010/12/determining-place-location-by-averaging-user-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Khan Academy for Windows Phone 7 is Live!</title>
		<link>http://codecube.net/2010/11/khan-academy-for-windows-phone-7-is-live/</link>
		<comments>http://codecube.net/2010/11/khan-academy-for-windows-phone-7-is-live/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 13:02:25 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=393</guid>
		<description><![CDATA[After reviewing the UI design guidelines, re-theming the application, and submitting on Sunday, the application was approved about 24 hours later. It&#8217;s now live on the marketplace! You can download it by clicking here if you have the Zune software installed, or just navigating to Marketplace &#62; Books &#38;  Reference &#62; Reference, or of course, [...]]]></description>
			<content:encoded><![CDATA[<p>After reviewing the <a href="http://msdn.microsoft.com/en-us/library/aa511258.aspx">UI design guidelines</a>, re-theming the application, and submitting on Sunday, the application was approved about 24 hours later. It&#8217;s now live on the marketplace!</p>
<p>You can download it by <a title="Download the App via Zune Marketplace" href="http://goo.gl/2mwrO">clicking here</a> if you have the Zune software installed, or just navigating to <strong>Marketplace &gt; Books &amp;  Reference &gt; Reference</strong>, or of course, just searching the marketplace for &#8220;Khan Academy&#8221;.</p>
<p>This has been a great learning experience, and I hope to continue working with the Khan Academy to iterate and improve on the application based on user feedback. If you do have feedback, please don&#8217;t hesitate to leave a comment, email me, or create a discussion on the <a href="http://khanviewer.codeplex.com/">codeplex site</a>. And of course, <strong>Rate and Review</strong> the application after you download it <img src='http://codecube.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2010/11/khan-academy-for-windows-phone-7-is-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Khan Academy for Windows Phone 7</title>
		<link>http://codecube.net/2010/11/introducing-khan-academy-for-windows-phone-7/</link>
		<comments>http://codecube.net/2010/11/introducing-khan-academy-for-windows-phone-7/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 15:16:40 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[wp7]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=400</guid>
		<description><![CDATA[Very proud to introduce a project I’ve been working on for the past few weeks. A Windows Phone 7 app to browse and watch the Khan Academy videos. I’ve been extremely impressed with the quality and value of the videos since I discovered the site a few years ago. And it was no surprise when [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codecube.net/wp-content/uploads/2010/11/ApplicationIcon.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="ApplicationIcon" src="http://codecube.net/wp-content/uploads/2010/11/ApplicationIcon_thumb.png" border="0" alt="ApplicationIcon" width="66" height="66" align="left" /></a>Very proud to introduce a project I’ve been working on for the past few weeks. A Windows Phone 7 app to browse and watch the <a href="http://khanacademy.org">Khan Academy</a> videos.</p>
<p>I’ve been extremely impressed with the quality and value of the videos since I discovered the site a few years ago. And it was no surprise when Bill Gates called Sal Khan his <a href="http://money.cnn.com/2010/08/23/technology/sal_khan_academy.fortune/index.htm">favorite teacher</a>.</p>
<p><a href="http://codecube.net/wp-content/uploads/2010/11/screenshot_1.png"><img class="aligncenter size-medium wp-image-403" title="Khan Academy Screenshot" src="http://codecube.net/wp-content/uploads/2010/11/screenshot_1-180x300.png" alt="" width="180" height="300" /></a><br />
I wanted a way to contribute to the cause, and with Microsoft’s new platform just launching, and the fact that I wanted a project to focus on for the Windows Phone it seemed a natural fit.</p>
<p>In keeping with the spirit of the Khan Academy’s <a href="http://sites.google.com/a/khanacademy.org/forge/for-developers/getting-started-with-the-code">open source development ethos</a>, I am making this project open source as well on CodePlex:<br />
<a href="http://khanviewer.codeplex.com/">http://khanviewer.codeplex.com/</a></p>
<p>I plan on maturing the app over time with better styling, and more features, especially as I learn more about the silverlight/phone platform. The project is almost ready to submit to the marketplace, just need to complete a bit more testing … so keep an eye on this space for more info about when that happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2010/11/introducing-khan-academy-for-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Reading LendingClub Data in C#</title>
		<link>http://codecube.net/2010/09/reading-lendingclub-data-in-c/</link>
		<comments>http://codecube.net/2010/09/reading-lendingclub-data-in-c/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 02:11:46 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[lendingclub]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=390</guid>
		<description><![CDATA[The micro-finance website LendingClub.com lets you download a snapshot of their loan data for the purposes of analysis &#8230; which is really cool, and not really a thing that financial companies are prone to do. If this is the kind of thing that interests you, I just wanted to show just how easy it was [...]]]></description>
			<content:encoded><![CDATA[<p>The micro-finance website <a href="http://www.lendingclub.com">LendingClub.com</a> lets you download a snapshot of their loan data for the purposes of analysis &#8230; which is really cool, and not really a thing that financial companies are prone to do. If this is the kind of thing that interests you, I just wanted to show just how easy it was to read and parse this file</p>
<blockquote>
<pre>string filepath = @"c:\users\joel\downloads\loanstats.xml";

XDocument xml = XDocument.Load(filepath);
var loansElements = xml.XPathSelectElements("//loan");
var loans = loansElements.Select(x =&gt; new
    {
        Id = x.Attribute("id").Value,
        AmountRequested = x.Attribute("amount-requested").Value,
        InterestRate = x.Attribute("interest-rate").Value
        // and so on
    });

foreach (var loan in loans)
{
    Console.WriteLine("{0} - {1} @ {2}", loan.Id, loan.AmountRequested, loan.InterestRate);
}</pre>
</blockquote>
<p>They also have each data file available as a CSV if you prefer to do things that way. </p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2010/09/reading-lendingclub-data-in-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 WebHelper</title>
		<link>http://codecube.net/2010/09/windows-phone-7-webhelper/</link>
		<comments>http://codecube.net/2010/09/windows-phone-7-webhelper/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 01:14:09 +0000</pubDate>
		<dc:creator>Joel Martinez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://codecube.net/?p=372</guid>
		<description><![CDATA[Just a quick post, this is a nice little helper class I wrote to simplify doing HTTP get requests in windows phone 7 applications. Not that it&#8217;s very difficult, but this hides some of the unnecessary details involved in setting up the asynchronous web request and gives you a super simple API that is easy to understand. [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post, this is a nice little helper class I wrote to simplify doing HTTP get requests in windows phone 7 applications. Not that it&#8217;s very difficult, but this hides some of the unnecessary details involved in setting up the asynchronous web request and gives you a super simple API that is easy to understand.</p>
<blockquote>
<pre>public static class WebHelper
{
    public static void Get(string url, Action&lt;string&gt; action)
    {
        Get(new Uri(url), action);
    }

    public static void Get(Uri uri, Action&lt;string&gt; action)
    {
        var request = WebRequest.CreateHttp(uri);

        request.BeginGetResponse(i =&gt;
        {
            var response = request.EndGetResponse(i);
            var sreader = new StreamReader(response.GetResponseStream());
            var result = sreader.ReadToEnd();
            action(result);
        }, null);
    }
}</pre>
</blockquote>
<p>Using this class could not be easier:</p>
<blockquote><pre>string u = @"http://bing.com";
WebHelper.Get(u, html =&gt;
    {
        Debug.WriteLine(html);
    });</pre>
</blockquote>
<p>This class can (and will) be expanded for things like posting form values &#8230; I&#8217;ll update this post if I do any of those updates <img src='http://codecube.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://codecube.net/2010/09/windows-phone-7-webhelper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

