<?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>BitCortex &#187; Computer Science</title>
	<atom:link href="http://www.bitcortex.com/category/computer-science/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bitcortex.com</link>
	<description>Artificial Intelligence, Neuroscience, Quantitative Finance and the unedited thoughts of a soon-to-be robot</description>
	<lastBuildDate>Sun, 11 Jul 2010 00:28:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Beautiful Visualization of Twitter&#8217;s Development Process</title>
		<link>http://www.bitcortex.com/2010/02/06/twitter-code-swarm/</link>
		<comments>http://www.bitcortex.com/2010/02/06/twitter-code-swarm/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 22:33:11 +0000</pubDate>
		<dc:creator>Rod Furlan</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://www.bitcortex.com/?p=1255</guid>
		<description><![CDATA[Icons represent developers, particles represent source code files that were either changed or committed. Created using Code Swarm. Simply beautiful!]]></description>
			<content:encoded><![CDATA[<p>Icons represent developers, particles represent source code files that were either changed or committed. Created using <a href="http://vis.cs.ucdavis.edu/~ogawa/codeswarm/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/vis.cs.ucdavis.edu/_ogawa/codeswarm/?referer=');">Code Swarm</a>. Simply beautiful!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="630" height="354" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=9225227&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="630" height="354" src="http://vimeo.com/moogaloop.swf?clip_id=9225227&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>]]></content:encoded>
			<wfw:commentRss>http://www.bitcortex.com/2010/02/06/twitter-code-swarm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awesome Projects You Should Know About</title>
		<link>http://www.bitcortex.com/2009/05/30/awesome-companiesproducts/</link>
		<comments>http://www.bitcortex.com/2009/05/30/awesome-companiesproducts/#comments</comments>
		<pubDate>Sun, 31 May 2009 06:35:02 +0000</pubDate>
		<dc:creator>Rod Furlan</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://www.bitcortex.com/?p=629</guid>
		<description><![CDATA[Intel Larrabee GPGPU http://www.intel.com/technology/visual/microarch.htm http://en.wikipedia.org/wiki/Larrabee_(GPU) What is it? Larrabee is a hybrid CPU-GPU processor with an ingenious design that might greatly accelerate the adoption of massively parallel desktop computing. Why it is awesome: Larrabee is Intel&#8217;s attempt to bridge the gap between general purpose CPUs (Pentium, PowerPC, etc) and massively parallel GPUs (Quadro, GeForce, Radeon) [...]]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<h3>Intel Larrabee GPGPU</h3>
<p><strong><a href="http://www.intel.com/technology/visual/microarch.htm" onclick="pageTracker._trackPageview('/outgoing/www.intel.com/technology/visual/microarch.htm?referer=');">http://www.intel.com/technology/visual/microarch.htm</a><br />
</strong><strong><a href="http://en.wikipedia.org/wiki/Larrabee_(GPU)" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Larrabee_GPU?referer=');">http://en.wikipedia.org/wiki/Larrabee_(GPU)</a></strong></p>
<p><strong>What is it?<br />
</strong><a href="http://www.intel.com/technology/visual/microarch.htm" onclick="pageTracker._trackPageview('/outgoing/www.intel.com/technology/visual/microarch.htm?referer=');">Larrabee</a> is a hybrid CPU-GPU processor with an ingenious design that might greatly accelerate the adoption of massively parallel desktop computing.</p>
<p><strong>Why it is awesome:<br />
</strong>Larrabee is Intel&#8217;s attempt to bridge the gap between general purpose CPUs (Pentium, PowerPC, etc) and massively parallel GPUs (Quadro, GeForce, Radeon) by offering a hybrid chip that will (supposedly) deliver the flexibility and ease of development of common CPUs coupled with the massively parallel features of GPUs. The first Larrabee model is supposed to ship with 32 independent processing cores on Q2 2010 followed by a 48 core model on Q4 2010.</p>
<p><img class="alignnone" src="http://docs.google.com/File?id=dgjvqcj6_18c4f2x5cx_b" alt="" width="600" /></p>
<p><strong>Throughput vs Programmability &#8211; The Larrabee advantage</strong></p>
<p>Larrabee is Intel&#8217;s test-bed for several many-core computing technologies. If successful it will greatly accelerate the transition to many-core desktop computing &#8211; imagine having 128, 256 or 512 general purpose processing cores on your desktop.</p>
<p><strong>Possible outcome:<br />
</strong>Supercomputer-grade power, on your desktop.</p>
<hr />
<strong> </strong></p>
<h3>Numenta</h3>
<p><a href="http://www.numenta.com" onclick="pageTracker._trackPageview('/outgoing/www.numenta.com?referer=');">http://www.numenta.com</a></p>
<p><strong>What is it?<br />
</strong><em>&#8220;Numenta is creating a new type of computing technology modeled on the structure and operation of the neocortex. The technology is called Hierarchical Temporal Memory, or HTM, and is applicable to a broad class of problems from machine vision, to fraud detection, to semantic analysis of text.&#8221;</em></p>
<p><strong>Why it is awesome:<br />
</strong><a href="http://www.numenta.com/about-numenta/numenta-technology-2.php" onclick="pageTracker._trackPageview('/outgoing/www.numenta.com/about-numenta/numenta-technology-2.php?referer=');">Numenta&#8217;s platform for Intelligent Computing</a> is based on the theory of the neocortex described in <a href="http://en.wikipedia.org/wiki/Jeff_Hawkins" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Jeff_Hawkins?referer=');">Jeff Hawkins</a>&#8216; book &#8220;<a href="http://www.onintelligence.org/" onclick="pageTracker._trackPageview('/outgoing/www.onintelligence.org/?referer=');">On Intelligence</a>&#8220;. If Jeff&#8217;s assumptions regarding the inner workings of the neocortex are correct, HTM networks could give rise to the first generation of truly intelligent machines.</p>
<p><strong>Possible outcome:<br />
</strong><a href="http://en.wikipedia.org/wiki/Strong_AI" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Strong_AI?referer=');">Artificial General Intelligence</a>.</p>
<hr />
<strong> </strong></p>
<h3>Evolved Machines</h3>
<p><strong><a href="http://www.evolvedmachines.com/" onclick="pageTracker._trackPageview('/outgoing/www.evolvedmachines.com/?referer=');">http://www.evolvedmachines.com</a><br />
</strong><br />
<strong>What is it?<br />
</strong><em>&#8220;We simulate neuronal components closely modeled after neurons in the brain, and synthesize arrays which wire themselves by simulating neural circuit growth in 3-dimensions. We are the first company to harness the power of programmable GPUs to the simulation of neural computation, now achieving 100-fold acceleration of the computing power of conventional cores&#8221;</em></p>
<p><strong>Why it is awesome:<br />
</strong>Never mind the fact that they are &#8220;growing neuronal circuits&#8221; and that they have made great progress towards the creation of an artificial visual cortex. What makes their technology awesome is the fact that it was designed to run on massively parallel GPUs instead of conventional general purpose CPUs.</p>
<p><strong>Puny CPU vs. Mighty GPU</strong><img class="alignnone" src="http://docs.google.com/File?id=dgjvqcj6_17gdsvhpgs_b" alt="" width="600" /></p>
<p>To put it in perspective, the first programmable GPU made available in 2001 had a theoretical peak performance of 71 GFLOPs which is about as much as an Intel Core 2 Quad CPU delivers today (2009). A current consumer-grade (read as: cheap) GPU can deliver up to 1,788 GFLOPs.</p>
<p>Once you have expressed an algorithm in a way that it can be executed on massively parallel hardware it then becomes trivial to run larger (and then larger) experiments. Top that with the fact that GPU performance is doubling roughly every 16 months and you have an exponential winner.</p>
<p><strong>Possible outcome:<br />
</strong><a href="http://en.wikipedia.org/wiki/Strong_AI" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Strong_AI?referer=');">Artificial General Intelligence</a> &#8211; or at least sniper kill-bots that never miss.</p>
<hr />
<strong> </strong></p>
<h3>Boinc</h3>
<p><strong> </strong></p>
<p><strong><a href="http://boinc.berkeley.edu/" onclick="pageTracker._trackPageview('/outgoing/boinc.berkeley.edu/?referer=');">http://boinc.berkeley.edu</a><br />
</strong><br />
<strong>What is it?<br />
</strong>The <a href="http://boinc.berkeley.edu" onclick="pageTracker._trackPageview('/outgoing/boinc.berkeley.edu?referer=');">Berkeley Open Infrastructure for Networked Computing (Boinc)</a> is an open-source platform for volunteer computing and grid computing. It allows users to donate the idle time on their computer to cure diseases, study global warming, discover pulsars, and many other types of scientific research.</p>
<p><strong>Why it is awesome:<br />
</strong>It provides scientists with supercomputer-grade processing power at no cost. If this isn&#8217;t awesome, I don&#8217;t know what awesome is.</p>
<p>Also, the total donated GFLOPs will (theoretically) grow at the same pace as the internet and will be further amplified by the growth of processing power available on desktop computers.</p>
<p><strong>Good looks don&#8217;t make supercomputers any faster</strong><img class="alignnone" src="http://docs.google.com/File?id=dgjvqcj6_23kth79rcd_b" alt="" width="600" /></p>
<p><strong>Possible outcome:<br />
</strong>Communication with aliens (<span style="text-decoration: underline;">SETI@Home</span>), cure for HIV, Malaria, Cancer, and Alzheimer&#8217;s (<span style="text-decoration: underline;">Rosetta@Home</span>), figuring out if <a href="http://www.dwavesys.com/" onclick="pageTracker._trackPageview('/outgoing/www.dwavesys.com/?referer=');">adiabatic quantum computers</a> can compute anything useful (<span style="text-decoration: underline;">AQUA@Home</span>), etc.</p>
<hr />
<strong> </strong></p>
<h3>Blue Brain</h3>
<p><strong><a href="http://bluebrain.epfl.ch" onclick="pageTracker._trackPageview('/outgoing/bluebrain.epfl.ch?referer=');">http://bluebrain.epfl.ch</a> </strong></p>
<p><strong>What is it?<br />
</strong><em>&#8220;The Blue Brain project is the first comprehensive attempt to reverse-engineer the mammalian brain, in order to understand brain function and dysfunction through detailed simulations.&#8221;</em></p>
<p><strong>Why it is awesome:<br />
</strong>While most attempts to create functional simulations of the human brain are based on highly stylized models of neuronal activity, the smart folks at the <a href="http://www.epfl.ch/index.fr.html" onclick="pageTracker._trackPageview('/outgoing/www.epfl.ch/index.fr.html?referer=');">EPFL</a> are instead pulling all stops and trying to emulate neurons down to the molecular level. Their approach involves first simulating a small cluster of cortical neurons (a column) and then validating the simulation against extensive observations from experiments with real cortical columns until the simulation can be considered bio-identical.</p>
<p><strong>Possible outcome:<br />
</strong><a href="http://en.wikipedia.org/wiki/Strong_AI" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Strong_AI?referer=');">Artificial General Intelligence</a> and final confirmation that we don&#8217;t have souls.</p>]]></content:encoded>
			<wfw:commentRss>http://www.bitcortex.com/2009/05/30/awesome-companiesproducts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In Defense of Efficient Computing</title>
		<link>http://www.bitcortex.com/2009/05/25/in-defense-of-efficient-computing/</link>
		<comments>http://www.bitcortex.com/2009/05/25/in-defense-of-efficient-computing/#comments</comments>
		<pubDate>Mon, 25 May 2009 20:57:49 +0000</pubDate>
		<dc:creator>Rod Furlan</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://www.bitcortex.com/2009/05/25/in-defense-of-efficient-computing/</guid>
		<description><![CDATA[We all know that the cost of computing is on a definitive downtrend and while this is a great thing I am worried that it is also steering developers to become less proficient in writing efficient (and reliable) code. If most problems can be solved by throwing money and hardware at subpar wasteful code, what [...]]]></description>
			<content:encoded><![CDATA[<p>We all know that the cost of computing is on a <a href="http://www.kurzweilai.net/articles/art0134.html?printable=1" onclick="pageTracker._trackPageview('/outgoing/www.kurzweilai.net/articles/art0134.html?printable=1&amp;referer=');">definitive downtrend</a> and while this is a great thing I am worried that it is also steering developers to become less proficient in writing efficient (and reliable) code.</p>
<p>If most problems can be solved by throwing money and hardware at subpar wasteful code, what is the incentive to writing thoughtful, efficient programs?<img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="earth" src="http://www.bitcortex.com/wp-content/uploads/2009/05/earth-thumb.jpg" border="0" alt="earth" width="142" height="142" align="right" /></p>
<p>The answer is <strong>RELIABILITY</strong> (and possibly to save your planet)</p>
<p>While the cost of computing is going down the adoption of <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a> is going up and that worries me. Perhaps I am just a <a href="http://images.allmoviephoto.com/2001_Freddy_Got_Fingered/tom_green_freddy_got_fingered_002.jpg" target="_blank" rel="lightbox[616]" onclick="pageTracker._trackPageview('/outgoing/images.allmoviephoto.com/2001_Freddy_Got_Fingered/tom_green_freddy_got_fingered_002.jpg?referer=');">backwards man</a> who hasn’t seen the light yet but I urge you to bear with me as I present my argument against the use of <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a> in a production environment.</p>
<p><strong>Why do I claim that dynamic languages are wasteful?</strong></p>
<p><a href="http://www.bitcortex.com/wp-content/uploads/2009/05/tip.jpg" rel="lightbox[616]"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="tip" src="http://www.bitcortex.com/wp-content/uploads/2009/05/tip-thumb.jpg" border="0" alt="tip" width="197" height="149" align="left" /></a> If you appreciate theater it is likely that you also appreciate the fact that the actors have to work hard at every performance. It is a beautiful thing, but it is also a lot of repetitive work and that is exactly the problem with <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a> in general.</p>
<p>How so? Every execution (performance) requires that a lot of work is done by the language runtime (showtime) environment. Most of the time this is repetitive work, mindlessly repeated every time you run your code.</p>
<p><a href="http://www.bitcortex.com/wp-content/uploads/2009/05/600x400-gallery-sc-movie-theater-1.jpg" rel="lightbox[616]"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="600x400_gallery_SC_Movie_Theater_1" src="http://www.bitcortex.com/wp-content/uploads/2009/05/600x400-gallery-sc-movie-theater-1-thumb.jpg" border="0" alt="600x400_gallery_SC_Movie_Theater_1" width="244" height="164" align="right" /></a> Compare this with the stark contrast of cinema (compiled code) – there is no showtime hustle, the movie is already shot, cut, edited and packaged for delivery. No energy is wasted.</p>
<p>You might ask me how significant is this waste I am talking about and the truth is that most of the time it is negligible but like everything in life, the devil is in the details.</p>
<p>Hypothetically, let us say that at each execution a dynamic program wastes a mere 10,000 CPU cycles doing “preventable runtime busy-work”. That figure is utterly insignificant if you are looking at the trees only, but as you step back to look at the forest your perspective might change.</p>
<p>Imagine this same piece of code running on a few hundred-thousand computers around the world and being executed a few thousand times a day on each. Now multiply this by each program of each dynamic language in existence and you might come to the conclusion that dynamic languages are not very good for our planet because computing demands energy and energy demands natural resources.</p>
<p>So, if you believe in <a href="http://en.wikipedia.org/wiki/Green_computing" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Green_computing?referer=');">green computing</a> through algorithmic efficiency you already have a good case against the use of <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a>.</p>
<p><strong><em>“But dynamic languages are more productive so the energy wasted on one end is saved on another!”</em></strong></p>
<p>Some might argue that <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a> are able to offset their “global footprint” by being more productive. Unfortunately, I beg to differ.</p>
<p>Unless you are simply writing throwaway (or generally short-lived) code, the odds are that whatever you are building will remain in play for years to come. This brings two new variables into the equation, one is maintenance costs and the other is failure costs. I am going to argue that <a href="http://en.wikipedia.org/wiki/Compiled_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Compiled_language?referer=');">compiled languages</a> do a much better job at minimizing those costs in the long run due to the increased reliability they provide.</p>
<p>First, we need to define what “productive” means in a quantifiable way because there is no room for fuzzy subjective opinions in computer science.</p>
<p>I believe that the <a href="http://en.wikipedia.org/wiki/Total_cost_of_ownership" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Total_cost_of_ownership?referer=');">Total Cost of Ownership (TCO)</a> of a software solution is the ideal metric of productivity. A language that can deliver a piece of software with a lower <strong>lifetime</strong> TCO should be considered more productive simply because more was produced for less.</p>
<p>TCO encompasses everything from time-to-market risk, development costs, maintenance costs, failure-rate costs as well as any other overhead incurred.</p>
<p>My argument is that while <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a> may accelerate the initial delivery of a software solution, it does so at the cost of reliability and maintainability. This is detrimental for the TCO bottom line because in practical terms (at least for large, long-lived projects) it translates into decreased productivity.</p>
<p><strong><em>“But compiled languages are too hard!”</em></strong></p>
<p><object width="425" height="344" data="http://www.youtube.com/v/g25G1M4EXrQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/g25G1M4EXrQ&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p><strong></strong></p>
<p><strong>The place for dynamic languages</strong></p>
<p>With all that being said, I must disclose that I often use dynamic languages in my research whenever it makes sense, mostly for throwaway code or prototyping. In fact, one of my favorite tools (<a href="http://en.wikipedia.org/wiki/MATLAB" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/MATLAB?referer=');">MATLAB</a>) is centered around a particularly terrible dynamic language. What I am against is using <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Dynamic_programming_language?referer=');">dynamic languages</a> for the development of code intended for production environments. That is all.</p>
<p><strong>Conclusion</strong></p>
<p>If you love our planet and you love computer science, I urge you to not take the easy way out, <strong>embrace the beautiful complexity of machine efficient code</strong> and write greener programs by using a compiled language. It can only make you smarter in the long run <img src='http://www.bitcortex.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://www.bitcortex.com/2009/05/25/in-defense-of-efficient-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
