<?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>Patrick Mylund Nielsen &#187; Programming</title>
	<atom:link href="http://patrickmylund.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://patrickmylund.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Jul 2010 21:46:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Microsoft Releasing USB/DVD Tool Under the GPL</title>
		<link>http://patrickmylund.com/blog/microsoft-releases-usbdvd-tool-under-the-gpl/</link>
		<comments>http://patrickmylund.com/blog/microsoft-releases-usbdvd-tool-under-the-gpl/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 00:11:16 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1304</guid>
		<description><![CDATA[Grab your windbreaker jacket cause it&#8217;s a cold, stormy day in hell. Microsoft is going to release the Windows 7 USB/DVD download tool under the GNU General Public License, the de facto Open Source license. Okay, so they might have a strong moral, even legal, obligation to do so since the tool contains code licensed [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://patrickmylund.com/blog/content/2009/11/linux_windows-169x200.jpg" alt="Linux nom'd Windows" title="Linux nom'd Windows" width="169" height="200" class="alignright size-medium wp-image-1305" />Grab your windbreaker jacket cause it&#8217;s a cold, stormy day in hell. Microsoft is <a href="http://port25.technet.com/archive/2009/11/13/update-on-the-windows-7-download-tool-or-microsoft-to-open-source-the-windows-7-download-tool.aspx" title="Update on the Windows 7 USB/DVD Tool" rel="nofollow">going to release</a> the Windows 7 USB/DVD download tool under the <a href="http://www.gnu.org/licenses/gpl.html" title="The GNU General Public License" rel="nofollow">GNU General Public License</a>, the de facto Open Source license.</p>
<p>Okay, so they might have a strong moral, even legal, obligation to do so since the tool contains code licensed under the GPL already (you cannot change source code licensed under the GPL without making your changes publicly available under the same terms) &#8212; still, it&#8217;s the thought that counts, ..right?</p>
<p>See Microsoft Open Source Community Manager Peter Galli&#8217;s <a href="http://port25.technet.com/archive/2009/11/13/update-on-the-windows-7-download-tool-or-microsoft-to-open-source-the-windows-7-download-tool.aspx" title="Update on the Windows 7 USB/DVD Tool" rel="nofollow">official announcement</a> and the <a href="http://www.withinwindows.com/2009/11/06/microsoft-lifts-gpl-code-uses-in-microsoft-store-tool/" title="Microsoft lifts GPL code, uses in Microsoft Store tool" rel="nofollow">original license violation claim</a> by Rafael Rivera Jr. for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/microsoft-releases-usbdvd-tool-under-the-gpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cdecl Tells You What Your C Code Means</title>
		<link>http://patrickmylund.com/blog/cdecl-tells-you-what-your-c-code-means/</link>
		<comments>http://patrickmylund.com/blog/cdecl-tells-you-what-your-c-code-means/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 22:17:19 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cdecl]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1296</guid>
		<description><![CDATA[The new, AJAX-powered version of the &#8220;C gibberish &#8596; English&#8221; translation tool cdecl is a gem for any C programmer who has ever scratched their head wondering what a complex statement like char (*(*(* const x[3])())[5])(int) or (double (^)(int , long long ))foo actually means. Give it a try! The public domain source code for [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The new, AJAX-powered version of the &#8220;C gibberish &harr; English&#8221; translation tool <a href="http://www.cdecl.org/" rel="nofollow">cdecl</a> is a gem for any C programmer who has ever scratched their head wondering what a complex statement like <code>char (*(*(* const x[3])())[5])(int)</code> or <code>(double (^)(int , long long ))foo</code> actually means. <a href="http://www.cdecl.org/" rel="nofollow">Give it a try</a>!</p>
<p><a href="http://www.cdecl.org/" rel="nofollow"><img src="http://patrickmylund.com/blog/content/2009/11/cdecl_screenshot-700x297.png" alt="cdecl screenshot" title="cdecl screenshot" width="700" height="297" class="aligncenter size-large wp-image-1297" /></a></p>
<p>The public domain <a href="http://www.cdecl.org/files/" title="cdecl source code" rel="nofollow">source code</a> for the tool is available, as well. Thanks <a href="http://ridiculousfish.com/blog/archives/2009/11/12/cdecl/" title="ridiculous_fish: cdecl" rel="nofollow">ridiculous_fish</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/cdecl-tells-you-what-your-c-code-means/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Releases Its Own Programming Language, &#8220;Go&#8221;</title>
		<link>http://patrickmylund.com/blog/google-releases-its-own-programming-language-go/</link>
		<comments>http://patrickmylund.com/blog/google-releases-its-own-programming-language-go/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 19:53:08 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Ken Thompson]]></category>
		<category><![CDATA[Rob Pike]]></category>
		<category><![CDATA[Robert Griesemer]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1290</guid>
		<description><![CDATA[Google has just announced the release of a new computer programming language named, quite creatively, Go. It is similar to the C family of imperative programming languages, but strives to be as simple in syntax as dynamic languages like Python and JavaScript. It aims to be very fast (both at compile time and at execution), [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://golang.org" rel="nofollow"><img src="http://patrickmylund.com/blog/content/2009/11/golang_logo.png" alt="Go Language Logo" title="Go Language Logo" width="153" height="55" class="alignright size-full wp-image-1291" /></a>Google has just announced the release of a new computer programming language named, quite creatively, <a href="http://golang.org" title="The Go Programming Language" rel="nofollow">Go</a>. It is similar to the C family of imperative programming languages, but strives to be as simple in syntax as dynamic languages like Python and JavaScript. It aims to be very fast (both at compile time and at execution), safe, concurrent, memory-managed, speedy (in terms of developer productivity) and Open Source. Quite interestingly, some of its main authors are programming <em>gods</em> <a href="http://en.wikipedia.org/wiki/Rob_Pike" title="Wikipedia: Rob Pike" rel="nofollow">Rob Pike</a> and <a href="http://en.wikipedia.org/wiki/Ken_Thompson" title="Wikipedia: Ken Thompson">Ken Thompson</a>.</p>
<p>Here is an example of a simple web server written in Golang:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:Consolas, Monospace, 'Courier New';">package main
import <span style="color: #009900;">&#40;</span>
    <span style="color: #ff0000;">&quot;http&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #ff0000;">&quot;io&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#41;</span>
func HelloServer<span style="color: #009900;">&#40;</span>c <span style="color: #339933;">*</span>http.<span style="color: #202020;">Conn</span><span style="color: #339933;">,</span> req <span style="color: #339933;">*</span>http.<span style="color: #202020;">Request</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     io.<span style="color: #202020;">WriteString</span><span style="color: #009900;">&#40;</span>c<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Hello world!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
func main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     http.<span style="color: #202020;">Handle</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;/&quot;</span><span style="color: #339933;">,</span> http.<span style="color: #202020;">HandlerFunc</span><span style="color: #009900;">&#40;</span>HelloServer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     err <span style="color: #339933;">:=</span> http.<span style="color: #202020;">ListenAndServe</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;:80&quot;</span><span style="color: #339933;">,</span> nil<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> err <span style="color: #339933;">!=</span> nil <span style="color: #009900;">&#123;</span>
         panic<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;ListenAndServe: &quot;</span><span style="color: #339933;">,</span> err.<span style="color: #202020;">String</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
     <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>I&#8217;m not sure what I think about Go yet; all of its features look extremely attractive, but I can&#8217;t shake the feeling of something being &#8220;off&#8221; somehow. For instance, I&#8217;m not particularly fond of the function name capitalization, and there are no generics/templates in the language (yet). I suppose the former might largely be a matter of conditioning, though.</p>
<p>One aspect of Golang that has really impressed me is how fast it compiles; you really have to see it to believe it. Projects with several thousand lines of source code compile in less than a tenth of a second on an average workstation. Sadly, I think this might mean we won&#8217;t be having as many office chair sword duels in the future:</p>
<p><a href="http://xkcd.com/303/" rel="nofollow"><img src="http://patrickmylund.com/blog/content/2009/11/xkcd_compiling.png" alt="xkcd: Compiling" title="xkcd: Compiling" width="413" height="360" class="aligncenter size-full wp-image-1292" /></a></p>
<p>Have a look at the Google Go TechTalk for an introduction to and overview of the language:</p>
<p><object width="700" height="419"><param name="movie" value="http://www.youtube.com/v/rKnDgT73v8s&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/rKnDgT73v8s&#038;fs=1" type="application/x-shockwave-flash" width="700" height="419" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Note that Go (or Golang) isn&#8217;t to be confused with the <a href="http://en.wikipedia.org/wiki/Go!_(programming_language)" title="The Go! Programming Language" rel="nofollow">Go! Programming Language</a>. Why Google chose an almost identical name, or why they chose such a common word at all, I don&#8217;t understand. I&#8217;m rather fond of the term &#8216;Golang&#8217; since, well, it makes sense. Ericsson previously made its own language, <a href="http://en.wikipedia.org/wiki/Erlang_(programming_language)" title="Erlang Programming Language" rel="nofollow">Erlang</a>, so it&#8217;s only a natural addition.</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/google-releases-its-own-programming-language-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unreal Development Kit Released</title>
		<link>http://patrickmylund.com/blog/unreal-development-kit-released/</link>
		<comments>http://patrickmylund.com/blog/unreal-development-kit-released/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 18:39:12 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Epic Games]]></category>
		<category><![CDATA[Unreal Development Kit]]></category>
		<category><![CDATA[Unreal Engine]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1282</guid>
		<description><![CDATA[Epic Games just released the Unreal Development Kit, a fully-featured SDK based on the award-winning Unreal 3 engine that powers a wide range of today&#8217;s most popular games; and it&#8217;s free for educational and non-commercial use &#8212; wow! There are some rather heavy licensing fees once you start making money from your game &#8212; $0 [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Epic Games just released the <a href="http://udk.com/" title="Unreal Development Kit" rel="nofollow">Unreal Development Kit</a>, a fully-featured <abbr title="Software Development Kit">SDK</abbr> based on the award-winning Unreal 3 engine that powers a wide range of today&#8217;s most popular games; and it&#8217;s free for educational and non-commercial use &#8212; wow!</p>
<p><a href="http://patrickmylund.com/blog/content/2009/11/unreal-effects_editor.jpg"><img src="http://patrickmylund.com/blog/content/2009/11/unreal-effects_editor-700x393.jpg" alt="UDK Effects Editor example" title="UDK Effects Editor example" width="700" height="393" class="aligncenter size-large wp-image-1286" /></a></p>
<p>There are some rather heavy licensing fees once you start making money from your game &#8212; $0 (zero) up-front, and a 0% royalty on you or your company&#8217;s first $5,000 (US) in UDK related revenue, and a 25% royalty on UDK related revenue above $5,000 (US) &#8212; though, if you take into consideration that you can upgrade to the real Unreal engine licensing and skip the royalty fees once you reach fame and fortune, the Unreal Development Kit remains extremely attractive for any kind of game development.</p>
<p>Have a look at the list of <a href="http://udk.com/features.html" title="UDK features" rel="nofollow">features</a> and the <a href="http://www.udk.com/showcase.html" title="UDK showcase" rel="nofollow">showcase</a>, or just skip everything and <a href="http://www.udk.com/download.html" title="UDK download" rel="nofollow">grab it</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/unreal-development-kit-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIT Introduction to Computer Science and Programming</title>
		<link>http://patrickmylund.com/blog/mit-introduction-to-computer-science-and-programming/</link>
		<comments>http://patrickmylund.com/blog/mit-introduction-to-computer-science-and-programming/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 21:47:30 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Eric Grimson]]></category>
		<category><![CDATA[John Guttag]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[MIT OpenCourseWare]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1278</guid>
		<description><![CDATA[&#8220;MIT 6.00 &#8212; Introduction to Computer Science and Programming&#8221; is one of the best introductions to programming I&#8217;ve seen, and I guess I shouldn&#8217;t expect less from the Massachusetts Institute of Technology. 24 video recordings of Computer Science lectures (totalling roughly 20 hours) by Professors Eric Grimson and John Guttag, current and former heads of [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://patrickmylund.com/blog/content/2009/11/mit-redgrey-display3.gif" alt="MIT Logo" title="MIT Logo" width="116" height="64" class="alignright size-full wp-image-1280" />&#8220;MIT 6.00 &#8212; Introduction to Computer Science and Programming&#8221; is one of the best introductions to programming I&#8217;ve seen, and I guess I shouldn&#8217;t expect less from the Massachusetts Institute of Technology. 24 video recordings of Computer Science lectures (totalling roughly 20 hours) by Professors Eric Grimson and John Guttag, current and former heads of Electrical Engineering and Computer Science at MIT. The course focuses on, quite simply, teaching you how to think like a programmer and solve problems computationally. Historically, LISP was the language of choice for Computer Science introductions at MIT, but was since replaced by every imperative programmer&#8217;s new darling, <a href="http://www.python.org" title="The Python Programming Language">Python</a>.</p>
<p>To quote the overview given in the first video, the course revolves around:</p>
<ul>
<li>Computational thinking</li>
<li>Understanding code</li>
<li>Understanding abilities and limits</li>
<li>Mapping problems into computation</li>
</ul>
<p>I highly recommend watching this if you&#8217;re new to programming, a hobby programmer, or even if you&#8217;re pretty well-versed &#8212; I&#8217;m sure there are nuggets of useful information inthere for everyone. Give Lecture 1 a look; if you like it, I&#8217;ve embedded the entire course after the jump, but it can also be found on the official <a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm" title="6.00 Introduction to Computer Science and Programming">course website</a>, along with assignments, exams and solutions.</p>
<h2>Lecture 1: Goals of the course; what is computation; introduction to data types, operators, and variables</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/k6U-i4gXkLM&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/k6U-i4gXkLM&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><span id="more-1278"></span></p>
<h2>Lecture 2: Operators and operands; statements; branching, conditionals, and iteration</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/Pij6J0HsYFA&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Pij6J0HsYFA&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 3: Common code patterns: iterative programs</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/X6ilT3uUOBo&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/X6ilT3uUOBo&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 4: Decomposition and abstraction through functions; introduction to recursion</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/SXR9CDof7qw&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SXR9CDof7qw&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 5: Floating point numbers, successive refinement, finding roots</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/Pfo7r6bjSqI&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Pfo7r6bjSqI&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 6: Bisection methods, Newton/Raphson, introduction to lists</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/hVHqs38fPe8&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hVHqs38fPe8&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 7: Lists and mutability, dictionaries, pseudocode, introduction to efficiency</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/tuRYbBvOMRo&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tuRYbBvOMRo&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 8: Complexity; log, linear, quadratic, exponential algorithms</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/ewd7Lf2dr5Q&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ewd7Lf2dr5Q&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 9: Binary search, bubble and selection sorts</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/UNHQ7CRsEtU&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/UNHQ7CRsEtU&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 10: Divide and conquer methods, merge sort, exceptions</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/kDhR4Zm53zc&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/kDhR4Zm53zc&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 11: Testing and debugging</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/DkPsD58nUIE&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/DkPsD58nUIE&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 12: More about debugging, knapsack problem, introduction to dynamic programming</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/udnyuHzJsjM&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/udnyuHzJsjM&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 13: Dynamic programming: overlapping subproblems, optimal substructure</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/ZKBUu_ahSR4&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ZKBUu_ahSR4&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 14: Analysis of knapsack problem, introduction to object-oriented programming</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/le8tpXQyYcM&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/le8tpXQyYcM&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 15: Abstract data types, classes and methods</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/y81AhLQN-NI&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/y81AhLQN-NI&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 16: Encapsulation, inheritance, shadowing</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/Q8SoG1OIveU&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Q8SoG1OIveU&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 17: Computational models: random walk simulation</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/ZbIpjf0QEPI&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ZbIpjf0QEPI&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 18: Presenting simulation results, Pylab, plotting</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/QJ_MPc0TobI&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QJ_MPc0TobI&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 19: Biased random walks, distributions</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/IZaAUwW7OsU&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IZaAUwW7OsU&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 20: Monte Carlo simulations, estimating pi</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/ENrAsRoR97I&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ENrAsRoR97I&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 21: Validating simulation results, curve fitting, linear regression</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/SuOIpJnn888&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SuOIpJnn888&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 22: Normal, uniform, and exponential distributions; misuse of statistics</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/WGDbIKtjmSs&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WGDbIKtjmSs&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 23: Stock market simulation</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/raTzkzML31w&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/raTzkzML31w&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>Lecture 24: Course overview; what do computer scientists do?</h2>
<p><object width="700" height="550"><param name="movie" value="http://www.youtube.com/v/2q--tAPkVXI&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2q--tAPkVXI&#038;fs=1" type="application/x-shockwave-flash" width="700" height="550" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Thank you, MIT, for making your courses open like this.</p>
<p>For more information, see the <a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm" title="6.00 Introduction to Computer Science and Programming">course website</a>. You can find more OpenCourseWare on the <a href="http://ocw.mit.edu/" title="MIT: OpenCourseWare">OpenCourseWare website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/mit-introduction-to-computer-science-and-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Favorite Programming Jokes</title>
		<link>http://patrickmylund.com/blog/favorite-programming-jokes/</link>
		<comments>http://patrickmylund.com/blog/favorite-programming-jokes/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 21:13:56 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[C-x M-c M-butterfly]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[StackOverflow]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1219</guid>
		<description><![CDATA[What is your best programmer joke? is now one of my favorite StackOverflow thread &#8212; C-x M-c M-butterfly! A man flying in a hot air balloon suddenly realizes he’s lost. He reduces height and spots a man down below. He lowers the balloon further and shouts to get directions, &#8220;Excuse me, can you tell me [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke" title="What is your best programmer joke?">What is your best programmer joke?</a> is now one of my favorite StackOverflow thread &#8212; C-x M-c M-butterfly!</p>
<blockquote><p>A man flying in a hot air balloon suddenly realizes he’s lost. He reduces height and spots a man down below. He lowers the balloon further and shouts to get directions, &#8220;Excuse me, can you tell me where I am?&#8221;</p>
<p>The man below says: &#8220;Yes, you&#8217;re in a hot air balloon, hovering 30 feet above this field.&#8221;</p>
<p>&#8220;You must work in Information Technology,&#8221; says the balloonist.</p>
<p>&#8220;I do&#8221; replies the man. &#8220;How did you know?&#8221;</p>
<p>&#8220;Well,&#8221; says the balloonist, &#8220;everything you have told me is technically correct, but It&#8217;s of no use to anyone.&#8221;</p>
<p>The man below replies, &#8220;You must work in management.&#8221;</p>
<p>&#8220;I do&#8221; replies the balloonist, &#8220;But how&#8217;d you know?&#8221;</p>
<p>&#8220;Well&#8221;, says the man, &#8220;you don’t know where you are, or where you’re going, you expect me to be able to help. You’re in the same position you were before we met, but now it’s my fault.&#8221;</p></blockquote>
<p><img src="http://patrickmylund.com/blog/content/2009/08/itsnotabugitsafeature.jpg" alt="Feature, not a bug" title="Feature, not a bug" width="510" height="414" class="aligncenter size-full wp-image-1220" /></p>
<blockquote><p>“Knock, knock.”</p>
<p>“Who’s there?”</p>
<p>very long pause….</p>
<p>“Java.”</p>
<p>:-o</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/favorite-programming-jokes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autotest &#8211; Fully automated testing</title>
		<link>http://patrickmylund.com/blog/autotest-fully-automated-testing/</link>
		<comments>http://patrickmylund.com/blog/autotest-fully-automated-testing/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 10:19:08 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1153</guid>
		<description><![CDATA[Interesting automated software test system concept. The goal is to design this for the Linux kernel, but it should be very useful in other regards as well.]]></description>
			<content:encoded><![CDATA[<p></p><p>Interesting <a href="http://autotest.kernel.org/wiki/WhitePaper" title="Autotest whitepaper">automated software test system concept</a>. The goal is to design this for the Linux kernel, but it should be very useful in other regards as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/autotest-fully-automated-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Death to the Space Infidels!</title>
		<link>http://patrickmylund.com/blog/death-to-the-space-infidels/</link>
		<comments>http://patrickmylund.com/blog/death-to-the-space-infidels/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 17:29:42 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Jeff Atwood]]></category>
		<category><![CDATA[spaces]]></category>
		<category><![CDATA[tabs]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1147</guid>
		<description><![CDATA[Interesting piece by Jeff Atwood on spaces versus tabs in code. I specifically enjoyed the reference to Whitespace and thank Jeff for introducing me to such a wonderful programming language. Out you go, Python.]]></description>
			<content:encoded><![CDATA[<p></p><p>Interesting piece by Jeff Atwood on <a href="http://www.codinghorror.com/blog/archives/001254.html" title="Spaces vs. Tabs in Code">spaces versus tabs in code</a>. I specifically enjoyed the reference to <a href="http://compsoc.dur.ac.uk/whitespace/" title="Whitespace">Whitespace</a> and thank Jeff for introducing me to such a wonderful programming language. Out you go, Python.</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/death-to-the-space-infidels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elevated by Rgba and TBC</title>
		<link>http://patrickmylund.com/blog/elevated-by-rgba-and-tbc/</link>
		<comments>http://patrickmylund.com/blog/elevated-by-rgba-and-tbc/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:30:29 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[Elevated]]></category>
		<category><![CDATA[Rgba]]></category>
		<category><![CDATA[scene demo]]></category>
		<category><![CDATA[TBC]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1145</guid>
		<description><![CDATA[Procedurally generated landscape flyby demo with impressive graphics and audio, and oh yeah &#8212; a total size of four kilobytes! Absolutely mind-blowing. You can run the original 4kb demo application (Windows) yourself if you have a powerful machine. When you&#8217;re watching the flyby, keep in mind that it&#8217;s 41 times smaller than Notepad and 625 [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><object width="700" height="419"><param name="movie" value="http://www.youtube.com/v/_YWMGuh15nE&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_YWMGuh15nE&#038;fs=1" type="application/x-shockwave-flash" width="700" height="419" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Procedurally generated landscape flyby demo with impressive graphics and audio, and oh yeah &#8212; a total size of <em>four kilobytes!</em> Absolutely mind-blowing. You can run <a href="http://www.rgba.org/prods/rgba_tbc_elevated.zip" title="Elevated by Rgba and TBC">the original 4kb demo</a> application (Windows) yourself if you have a powerful machine.</p>
<p>When you&#8217;re watching the flyby, keep in mind that it&#8217;s <em>41 times smaller</em> than Notepad and <em>625 times smaller</em> than the everyday Visual C++ alarm clock application I happen to be using. It&#8217;s quite amazing what can be accomplished with such a small amount of code.</p>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/elevated-by-rgba-and-tbc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why is programming fun?</title>
		<link>http://patrickmylund.com/blog/why-is-programming-fun/</link>
		<comments>http://patrickmylund.com/blog/why-is-programming-fun/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 14:31:41 +0000</pubDate>
		<dc:creator>Patrick Mylund Nielsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Fred Brooks]]></category>
		<category><![CDATA[The Mythical Man-Month]]></category>

		<guid isPermaLink="false">http://patrickmylund.com/?p=1143</guid>
		<description><![CDATA[This is an extract from Fred Brooks&#8217; (Frederick P. Brooks, Jr.) book, The Mythical Man-Month. This is one of the best explanations of why programming is so interesting. It touches on all aspects of the mystique of programming. If you haven&#8217;t read the book, go out, buy it, and read it. The book was first [...]]]></description>
			<content:encoded><![CDATA[<p></p><blockquote><p><a href="http://www.grok2.com/progfun.html" title="Why Is Programming Fun?">This is an extract</a> from Fred Brooks&#8217; (Frederick P. Brooks, Jr.) book, The Mythical Man-Month. This is one of the best explanations of why programming is so interesting. It touches on all aspects of the mystique of programming. If you haven&#8217;t read the book, go out, buy it, and read it. The book was first published in 1974 and then republished in 1995. What Fred Brooks had to say then based on his experiences with the development of the OS/360 system is still relevant today.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://patrickmylund.com/blog/why-is-programming-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
