<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for Friendly patterns and algorithms</title>
	<atom:link href="http://www.palgorithm.co.uk/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.palgorithm.co.uk</link>
	<description>Discussion of algorithms for games, graphics and general engineering</description>
	<lastBuildDate>Mon, 18 Jan 2010 17:21:07 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on The beauty of software development by Uncompetative</title>
		<link>http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/comment-page-1/#comment-4271</link>
		<dc:creator>Uncompetative</dc:creator>
		<pubDate>Mon, 18 Jan 2010 17:21:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/#comment-4271</guid>
		<description>&quot;Is coding Art? Well, I think there’s one thing missing in Knuth’s description that would make his assertion particularly convincing – Art can tell you something about humanity. Can your code do that? Well, I’m not sure.&quot;

Knuth is wrong and should stick to what he is good at.

You are right to raise doubts. He should have called his book:

&#039;The Craft of Computer Programming&#039;

Using the word &#039;Art&#039; with a capital &#039;A&#039; is incredibly pretentious and philosophically unjustifiable. He could have gotten away with calling it:

&#039;The aesthetics of Computer Programming&#039;

Using the word &#039;aesthetics&#039; with a small &#039;a&#039;, but I feel that &#039;Craft&#039; is better. After all there are many masterpieces in furniture. Code beauty is also a reasonable phrase to use - one that may be less obscure than &#039;aesthetics&#039; (which actually imply a set of informal rules that may help you achieve beauty and harmony).

Having done a degree in Fine Art which involved writing philosophical essays on all of these topics for the Art History component of the course after which I became a programmer, working on UX and a functional end-user programming language, I can confidently assert that writing software has nothing to do with Art, but that the lessons of aesthetics (harmony, symmetry, coherence, concision, appropriate use of emphasis and the suppression of unimportant details) apply very well to code.</description>
		<content:encoded><![CDATA[<p>&#8220;Is coding Art? Well, I think there’s one thing missing in Knuth’s description that would make his assertion particularly convincing – Art can tell you something about humanity. Can your code do that? Well, I’m not sure.&#8221;</p>
<p>Knuth is wrong and should stick to what he is good at.</p>
<p>You are right to raise doubts. He should have called his book:</p>
<p>&#8216;The Craft of Computer Programming&#8217;</p>
<p>Using the word &#8216;Art&#8217; with a capital &#8216;A&#8217; is incredibly pretentious and philosophically unjustifiable. He could have gotten away with calling it:</p>
<p>&#8216;The aesthetics of Computer Programming&#8217;</p>
<p>Using the word &#8216;aesthetics&#8217; with a small &#8216;a&#8217;, but I feel that &#8216;Craft&#8217; is better. After all there are many masterpieces in furniture. Code beauty is also a reasonable phrase to use &#8211; one that may be less obscure than &#8216;aesthetics&#8217; (which actually imply a set of informal rules that may help you achieve beauty and harmony).</p>
<p>Having done a degree in Fine Art which involved writing philosophical essays on all of these topics for the Art History component of the course after which I became a programmer, working on UX and a functional end-user programming language, I can confidently assert that writing software has nothing to do with Art, but that the lessons of aesthetics (harmony, symmetry, coherence, concision, appropriate use of emphasis and the suppression of unimportant details) apply very well to code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell For Games! by Conal Elliott</title>
		<link>http://www.palgorithm.co.uk/2009/08/haskell-for-games/comment-page-1/#comment-4253</link>
		<dc:creator>Conal Elliott</dc:creator>
		<pubDate>Sat, 16 Jan 2010 19:11:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/?p=195#comment-4253</guid>
		<description>&lt;blockquote&gt;I’m still reading through most of the FRP material online. It appears to be well suited to modelling mixed discrete/continuous systems, such as real world robots, but I’m not yet sure that this translates very well to games or graphics in practice. Games are really quite discrete systems at heart. The concept of a frame is fairly deeply embedded, and I’m not sure if the FRP style of doing thing would obfuscate this.&lt;/blockquote&gt;

Yes, FRP intentionally obfuscates the discrete nature of typical game implementations.  Or put differently, the intent that led to FRP is to &lt;i&gt;un&lt;/i&gt;obfuscate the essence of the interactive behavior that typically gets implemented discretely (and imperatively) in applications like games.

A question to meditate over: Are games purely discrete systems at heart?  Or maybe are programmers so in the habit of &lt;i&gt;implementing&lt;/i&gt; games in a purely discrete fashion that we&#039;ve come to think of games as &lt;i&gt;being&lt;/i&gt; purely discrete at heart?</description>
		<content:encoded><![CDATA[<blockquote><p>I’m still reading through most of the FRP material online. It appears to be well suited to modelling mixed discrete/continuous systems, such as real world robots, but I’m not yet sure that this translates very well to games or graphics in practice. Games are really quite discrete systems at heart. The concept of a frame is fairly deeply embedded, and I’m not sure if the FRP style of doing thing would obfuscate this.</p></blockquote>
<p>Yes, FRP intentionally obfuscates the discrete nature of typical game implementations.  Or put differently, the intent that led to FRP is to <i>un</i>obfuscate the essence of the interactive behavior that typically gets implemented discretely (and imperatively) in applications like games.</p>
<p>A question to meditate over: Are games purely discrete systems at heart?  Or maybe are programmers so in the habit of <i>implementing</i> games in a purely discrete fashion that we&#8217;ve come to think of games as <i>being</i> purely discrete at heart?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell For Games! by brian</title>
		<link>http://www.palgorithm.co.uk/2009/08/haskell-for-games/comment-page-1/#comment-4236</link>
		<dc:creator>brian</dc:creator>
		<pubDate>Fri, 15 Jan 2010 21:13:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/?p=195#comment-4236</guid>
		<description>I&#039;ve been trying to push Haskell games forward a little lately: http://hackage.haskell.org/package/boomslang</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been trying to push Haskell games forward a little lately: <a href="http://hackage.haskell.org/package/boomslang" rel="nofollow">http://hackage.haskell.org/package/boomslang</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell For Games! by Sam Martin</title>
		<link>http://www.palgorithm.co.uk/2009/08/haskell-for-games/comment-page-1/#comment-2777</link>
		<dc:creator>Sam Martin</dc:creator>
		<pubDate>Mon, 07 Sep 2009 11:50:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/?p=195#comment-2777</guid>
		<description>@Artyom I haven&#039;t spent much time looking at ATS yet, but it does look interesting. Thanks.

@dons Thanks, I haven&#039;t see either before. I&#039;ll check them out. 

I&#039;m still reading through most of the FRP material online. It appears to be well suited to modelling mixed discrete/continuous systems, such as real world robots, but I&#039;m not yet sure that this translates very well to games or graphics in practice. Games are really quite discrete systems at heart. The concept of a frame is fairly deeply embedded, and I&#039;m not sure if the FRP style of doing thing would obfuscate this.

&lt;a href=&quot;http://conal.net/Vertigo/&quot; rel=&quot;nofollow&quot;&gt;Conal Elliotts&lt;/a&gt; ideas for how to apply it to rendering were interesting though.</description>
		<content:encoded><![CDATA[<p>@Artyom I haven&#8217;t spent much time looking at ATS yet, but it does look interesting. Thanks.</p>
<p>@dons Thanks, I haven&#8217;t see either before. I&#8217;ll check them out. </p>
<p>I&#8217;m still reading through most of the FRP material online. It appears to be well suited to modelling mixed discrete/continuous systems, such as real world robots, but I&#8217;m not yet sure that this translates very well to games or graphics in practice. Games are really quite discrete systems at heart. The concept of a frame is fairly deeply embedded, and I&#8217;m not sure if the FRP style of doing thing would obfuscate this.</p>
<p><a href="http://conal.net/Vertigo/" rel="nofollow">Conal Elliotts</a> ideas for how to apply it to rendering were interesting though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell For Games! by Don Stewart</title>
		<link>http://www.palgorithm.co.uk/2009/08/haskell-for-games/comment-page-1/#comment-2764</link>
		<dc:creator>Don Stewart</dc:creator>
		<pubDate>Sun, 06 Sep 2009 17:59:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/?p=195#comment-2764</guid>
		<description>In case you haven&#039;t seen the related work in this area. Something like the Jane Street Summer of Code project?

 * LambdaCube - Haskell: Lambda Cube 3D Engine, http://www.haskell.org/haskellwiki/LambdaCubeEngine

 * hpysics. http://www.youtube.com/watch?v=uziCn2SBbxs  - the Google SoC project using data parallelism for a physics engine

Just demos of using a) reactive programming, and b) data parallelism, to write game engines. Proof of concept stuff.</description>
		<content:encoded><![CDATA[<p>In case you haven&#8217;t seen the related work in this area. Something like the Jane Street Summer of Code project?</p>
<p> * LambdaCube &#8211; Haskell: Lambda Cube 3D Engine, <a href="http://www.haskell.org/haskellwiki/LambdaCubeEngine" rel="nofollow">http://www.haskell.org/haskellwiki/LambdaCubeEngine</a></p>
<p> * hpysics. <a href="http://www.youtube.com/watch?v=uziCn2SBbxs" rel="nofollow">http://www.youtube.com/watch?v=uziCn2SBbxs</a>  &#8211; the Google SoC project using data parallelism for a physics engine</p>
<p>Just demos of using a) reactive programming, and b) data parallelism, to write game engines. Proof of concept stuff.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell For Games! by Artyom Shalkhakov</title>
		<link>http://www.palgorithm.co.uk/2009/08/haskell-for-games/comment-page-1/#comment-2411</link>
		<dc:creator>Artyom Shalkhakov</dc:creator>
		<pubDate>Wed, 12 Aug 2009 08:49:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/?p=195#comment-2411</guid>
		<description>Very interesting, but a lot of hand-waving. :)

I suppose that more practical solution would be to adopt a language like ATS, which allows one to work on a very low level but still maintaining safety (you can statically guarantee termination if you wish, for example -- not that you&#039;d want to :) and you can get rid of any &quot;free freed memory&quot; errors, etc.). It has many interesting features regarding it&#039;s type system (that is far more expressive than Haskell&#039;s).

Haskell OTOH is so beautiful. :)</description>
		<content:encoded><![CDATA[<p>Very interesting, but a lot of hand-waving. <img src='http://www.palgorithm.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I suppose that more practical solution would be to adopt a language like ATS, which allows one to work on a very low level but still maintaining safety (you can statically guarantee termination if you wish, for example &#8212; not that you&#8217;d want to <img src='http://www.palgorithm.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and you can get rid of any &#8220;free freed memory&#8221; errors, etc.). It has many interesting features regarding it&#8217;s type system (that is far more expressive than Haskell&#8217;s).</p>
<p>Haskell OTOH is so beautiful. <img src='http://www.palgorithm.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The beauty of software development by Sam Martin</title>
		<link>http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/comment-page-1/#comment-2391</link>
		<dc:creator>Sam Martin</dc:creator>
		<pubDate>Mon, 10 Aug 2009 20:40:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/#comment-2391</guid>
		<description>No, I hadn&#039;t see that before! I shall add Master C++ Software Craftsman, and Haskell Apprentice to my CV now :)

And thanks, I would like to take a look at Beautiful Code at some point if that&#039;s ok! I&#039;d need to clear some space from my desk first though. I have a more-ridiculous-than-usual pile of backed up reading material to get through first.</description>
		<content:encoded><![CDATA[<p>No, I hadn&#8217;t see that before! I shall add Master C++ Software Craftsman, and Haskell Apprentice to my CV now <img src='http://www.palgorithm.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>And thanks, I would like to take a look at Beautiful Code at some point if that&#8217;s ok! I&#8217;d need to clear some space from my desk first though. I have a more-ridiculous-than-usual pile of backed up reading material to get through first.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell For Games! by repi</title>
		<link>http://www.palgorithm.co.uk/2009/08/haskell-for-games/comment-page-1/#comment-2390</link>
		<dc:creator>repi</dc:creator>
		<pubDate>Mon, 10 Aug 2009 20:39:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/?p=195#comment-2390</guid>
		<description>Great talk &amp; post Sam!</description>
		<content:encoded><![CDATA[<p>Great talk &amp; post Sam!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The beauty of software development by dysfunctor</title>
		<link>http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/comment-page-1/#comment-2382</link>
		<dc:creator>dysfunctor</dc:creator>
		<pubDate>Mon, 10 Aug 2009 08:28:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/#comment-2382</guid>
		<description>Have you come across the notion of Software Craftsmanship?

http://en.wikipedia.org/wiki/Software_Craftsmanship

&quot;Craft&quot; is used in the mediaeval sense; a term that includes portrait painting, bridge building, instrument making, baking and so on.  You can choose your metaphor (art, science, engineering, architecture, recipes) to suit your needs.

The Software Craftsmanship movement also espouses the three stages of competence used by the mediaeval guilds:

Apprentice (can get useful things done; has limits)
Journeyman (has the core skills needed on any normal project)
Master (understands the limits of his craft; ready to push the boundaries)

I&#039;m not sure how practical it is to apply these static categories in such a dynamic field, but it has to be better than scribbling &quot;_x_ years of experience in _y_&quot; on your CV.

By the way, if you haven&#039;t got it yet, I have a copy of Beautiful Code you can borrow.  The main thing I got from the book is that beauty is in the eye of the beholder.  Code is beautiful when it solves a problem and makes you say, &quot;Wow!  I didn&#039;t know that was possible.&quot;  In other words, it is contingent on the problems you have and repertoire of solutions you&#039;ve tried.  The first time I saw a binary tree I thought it was beautiful.</description>
		<content:encoded><![CDATA[<p>Have you come across the notion of Software Craftsmanship?</p>
<p><a href="http://en.wikipedia.org/wiki/Software_Craftsmanship" rel="nofollow">http://en.wikipedia.org/wiki/Software_Craftsmanship</a></p>
<p>&#8220;Craft&#8221; is used in the mediaeval sense; a term that includes portrait painting, bridge building, instrument making, baking and so on.  You can choose your metaphor (art, science, engineering, architecture, recipes) to suit your needs.</p>
<p>The Software Craftsmanship movement also espouses the three stages of competence used by the mediaeval guilds:</p>
<p>Apprentice (can get useful things done; has limits)<br />
Journeyman (has the core skills needed on any normal project)<br />
Master (understands the limits of his craft; ready to push the boundaries)</p>
<p>I&#8217;m not sure how practical it is to apply these static categories in such a dynamic field, but it has to be better than scribbling &#8220;_x_ years of experience in _y_&#8221; on your CV.</p>
<p>By the way, if you haven&#8217;t got it yet, I have a copy of Beautiful Code you can borrow.  The main thing I got from the book is that beauty is in the eye of the beholder.  Code is beautiful when it solves a problem and makes you say, &#8220;Wow!  I didn&#8217;t know that was possible.&#8221;  In other words, it is contingent on the problems you have and repertoire of solutions you&#8217;ve tried.  The first time I saw a binary tree I thought it was beautiful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The beauty of software development by Sam Martin</title>
		<link>http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/comment-page-1/#comment-1860</link>
		<dc:creator>Sam Martin</dc:creator>
		<pubDate>Fri, 10 Jul 2009 11:29:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.palgorithm.co.uk/2009/05/the-beauty-of-software-development/#comment-1860</guid>
		<description>Thanks Ashutosh! You make a very good point. 

I suspect the API problem is not unique to software development. Large scale (physical) engineering has similar issues. In fact they have a worse one - previously working components can deteriorate and fail over time. Apart from cosmic rays and hardware ageing around it, software is largely immune from this.

Perhaps it is the close coupling of sofware components that is our downfall at the moment. Maybe we need more redundancy, or more flexible abstractions?

I hadn&#039;t read Andrei Ershov&#039;s lecture before - it&#039;s a good recommendation. He has an interesting point about programming resisting assembly line construction. This seems to be true of any creative process I&#039;ve ever witnessed. 

I&#039;m not sure how well it bodes for the future though. I think large scale collaborations have value in there own right, and software engineering is tricky to scale up.</description>
		<content:encoded><![CDATA[<p>Thanks Ashutosh! You make a very good point. </p>
<p>I suspect the API problem is not unique to software development. Large scale (physical) engineering has similar issues. In fact they have a worse one &#8211; previously working components can deteriorate and fail over time. Apart from cosmic rays and hardware ageing around it, software is largely immune from this.</p>
<p>Perhaps it is the close coupling of sofware components that is our downfall at the moment. Maybe we need more redundancy, or more flexible abstractions?</p>
<p>I hadn&#8217;t read Andrei Ershov&#8217;s lecture before &#8211; it&#8217;s a good recommendation. He has an interesting point about programming resisting assembly line construction. This seems to be true of any creative process I&#8217;ve ever witnessed. </p>
<p>I&#8217;m not sure how well it bodes for the future though. I think large scale collaborations have value in there own right, and software engineering is tricky to scale up.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
