<?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"
	>
<channel>
	<title>Comments on: Computer Languages as Artistic Medium</title>
	<atom:link href="http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/feed/" rel="self" type="application/rss+xml" />
	<link>http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/</link>
	<description>a disgruntled developer taking a stand in the information multiverse</description>
	<pubDate>Fri, 21 Nov 2008 03:07:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: Brian Tiffin</title>
		<link>http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/#comment-470</link>
		<dc:creator>Brian Tiffin</dc:creator>
		<pubDate>Mon, 28 Apr 2008 15:44:25 +0000</pubDate>
		<guid isPermaLink="false">http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/#comment-470</guid>
		<description>Nice article.  I'd add immersive nature as sorely lacking in the computing field along with the tunnel vision most of us are apt to fall into.

Thinking REBOL is fun (and Good-ness) but not completely immersive.  Thinking Forth is both.  Thinking Lisp is Emacs and well, I chose vi many many moons ago.  Thinking C is an impossible hodge podge of tools and "assistants".

So far, in my experience, Forth is the only environment where the crayons and the map come in the same box.  In the box in cuisinart form but you get to live in the box.

REBOL is so close it drives me nutters some days, the map is glued to the box and the box is the cuisinart.  But it has no console editor (or way of finding source code), so you have to leave the box with the one 4-colour crayon to get to the map glued to the side.  The wall of the box is thin, but you still have to leave and go outside to apply the colour.

I kinda scoff at the expression 'think outside the box'.  I wanna think inside the box and when finished thinking the box is the thing.

And all this to leave you with;  Make sure you check out Piet.  Mostly harmless, but colourful.
www.dangermouse.net/...
www.dangermouse.net/...    I'm fascinated by the last sample on this page.  A program that approximates Pi and literally the bigger the program, the better the approximation.

Cheers and keep up the Art.</description>
		<content:encoded><![CDATA[<p>Nice article.  I&#8217;d add immersive nature as sorely lacking in the computing field along with the tunnel vision most of us are apt to fall into.</p>
<p>Thinking REBOL is fun (and Good-ness) but not completely immersive.  Thinking Forth is both.  Thinking Lisp is Emacs and well, I chose vi many many moons ago.  Thinking C is an impossible hodge podge of tools and &#8220;assistants&#8221;.</p>
<p>So far, in my experience, Forth is the only environment where the crayons and the map come in the same box.  In the box in cuisinart form but you get to live in the box.</p>
<p>REBOL is so close it drives me nutters some days, the map is glued to the box and the box is the cuisinart.  But it has no console editor (or way of finding source code), so you have to leave the box with the one 4-colour crayon to get to the map glued to the side.  The wall of the box is thin, but you still have to leave and go outside to apply the colour.</p>
<p>I kinda scoff at the expression &#8216;think outside the box&#8217;.  I wanna think inside the box and when finished thinking the box is the thing.</p>
<p>And all this to leave you with;  Make sure you check out Piet.  Mostly harmless, but colourful.<br />
<a href="http://www.dangermouse.net/.." rel="nofollow" target="_blank" class="liexternal">http://www.dangermouse.net/..</a>.<br />
<a href="http://www.dangermouse.net/.." rel="nofollow" target="_blank" class="liexternal">http://www.dangermouse.net/..</a>.    I&#8217;m fascinated by the last sample on this page.  A program that approximates Pi and literally the bigger the program, the better the approximation.</p>
<p>Cheers and keep up the Art.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hostilefork</title>
		<link>http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/#comment-455</link>
		<dc:creator>hostilefork</dc:creator>
		<pubDate>Thu, 24 Apr 2008 14:39:54 +0000</pubDate>
		<guid isPermaLink="false">http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/#comment-455</guid>
		<description>Thanks Troy...!

Regarding API and language being a matter of: &lt;i&gt;"making that which should be done often terse, and that which shouldn’t be done often, verbose or impossible"&lt;/i&gt;...absolutely.  Most programmers are vaguely aware of it and might nod along when you say so, but their code betrays the fact that they haven't truly absorbed the Truth.  When they're up against a wall and find an object needs a method, they tend to just add it&#8212;rather than think about what assurances or invariants they might be losing in the overall design.

It's a bit like people who run red lights at intersections, and then try to explain to the cop who pulls them over that "no one was coming".  Programmers in a hurry make a RunRedLight() method on Car and trust it's ok because they know (or think they know) it's safe in the case they need it for.  But right answers are more like going to the StopLight object and tuning it so that its red/green cycles are sensitive to the existing traffic conditions&#8212;breaking no rules and benefitting the entire code base.

This notion is not emphasized so much in computer science education.  One reason is probably because API designs are harder to grade than whether an algorithm accomplishes a certain result in a certain amount of time.  You can grade a programming problem by giving it a set of pathological test data and assume that a correct program which solves that test is probably correct overall...but how do you easily grade someone's evolution of an API or language?

(Still another way of talking about the balance of making some things verbose-or-hard as the only way to get real "power" in computation systems is here: &lt;a href="http://hostilefork.com/2005/07/04/freedom-to-and-freedom-from/" rel="nofollow"&gt;Freedom To and Freedom From in Software Architecture&lt;/a&gt;.)</description>
		<content:encoded><![CDATA[<p>Thanks Troy&#8230;!</p>
<p>Regarding API and language being a matter of: <i>&#8220;making that which should be done often terse, and that which shouldn’t be done often, verbose or impossible&#8221;</i>&#8230;absolutely.  Most programmers are vaguely aware of it and might nod along when you say so, but their code betrays the fact that they haven&#8217;t truly absorbed the Truth.  When they&#8217;re up against a wall and find an object needs a method, they tend to just add it&mdash;rather than think about what assurances or invariants they might be losing in the overall design.</p>
<p>It&#8217;s a bit like people who run red lights at intersections, and then try to explain to the cop who pulls them over that &#8220;no one was coming&#8221;.  Programmers in a hurry make a RunRedLight() method on Car and trust it&#8217;s ok because they know (or think they know) it&#8217;s safe in the case they need it for.  But right answers are more like going to the StopLight object and tuning it so that its red/green cycles are sensitive to the existing traffic conditions&mdash;breaking no rules and benefitting the entire code base.</p>
<p>This notion is not emphasized so much in computer science education.  One reason is probably because API designs are harder to grade than whether an algorithm accomplishes a certain result in a certain amount of time.  You can grade a programming problem by giving it a set of pathological test data and assume that a correct program which solves that test is probably correct overall&#8230;but how do you easily grade someone&#8217;s evolution of an API or language?</p>
<p>(Still another way of talking about the balance of making some things verbose-or-hard as the only way to get real &#8220;power&#8221; in computation systems is here: <a href="http://hostilefork.com/2005/07/04/freedom-to-and-freedom-from/" rel="nofollow" class="liinternal">Freedom To and Freedom From in Software Architecture</a>.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Troy</title>
		<link>http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/#comment-444</link>
		<dc:creator>Troy</dc:creator>
		<pubDate>Thu, 24 Apr 2008 06:33:22 +0000</pubDate>
		<guid isPermaLink="false">http://hostilefork.com/2008/04/23/computer-languages-as-artistic-medium/#comment-444</guid>
		<description>Great post.

Few thoughts, hope they aren't too abstract.

One of my hobbies is collecting metaphors and design patterns, both of which I consider ways to exploit symmetries in a complex system in order to identify and compress it.  Similar to identifying  isomers, are different arrangements of the same atoms, by casting a finite number of shadows, the shadows can act as hashes of sorts.

One of the key insights for me is that like powers of 10, these patterns exist in strata, typically as frameworks and object hierarchies are built up to 'automate' away the redundant aspects of programming (growing skin to protect itself)  hide away the details from the user, and form another black box.  By this act of defining their 4 colors (say blue and yellow), force the user  to have to work hard to recreate other colors (say green) or be impossible (say black).  This is the essence of API and language...making that which should be done often terse, and that which shouldn't be done often, verbose or impossible.

In the end (as we've discussed) I really wish there were a few more colors built in.  The fundamental usage patterns like do/undo/redo, state management and transition is typically left as an exercise to the programmer, and I think that is a mistake, and thus we constantly reinvent the wheel, axles, etc., and have spent likely trillions of dollars in broken code by getting it wrong, and/or attempting to add it in as an after-fact.  Much like the large amounts of changes to get an additional color in on the graphic you've shown.</description>
		<content:encoded><![CDATA[<p>Great post.</p>
<p>Few thoughts, hope they aren&#8217;t too abstract.</p>
<p>One of my hobbies is collecting metaphors and design patterns, both of which I consider ways to exploit symmetries in a complex system in order to identify and compress it.  Similar to identifying  isomers, are different arrangements of the same atoms, by casting a finite number of shadows, the shadows can act as hashes of sorts.</p>
<p>One of the key insights for me is that like powers of 10, these patterns exist in strata, typically as frameworks and object hierarchies are built up to &#8216;automate&#8217; away the redundant aspects of programming (growing skin to protect itself)  hide away the details from the user, and form another black box.  By this act of defining their 4 colors (say blue and yellow), force the user  to have to work hard to recreate other colors (say green) or be impossible (say black).  This is the essence of API and language&#8230;making that which should be done often terse, and that which shouldn&#8217;t be done often, verbose or impossible.</p>
<p>In the end (as we&#8217;ve discussed) I really wish there were a few more colors built in.  The fundamental usage patterns like do/undo/redo, state management and transition is typically left as an exercise to the programmer, and I think that is a mistake, and thus we constantly reinvent the wheel, axles, etc., and have spent likely trillions of dollars in broken code by getting it wrong, and/or attempting to add it in as an after-fact.  Much like the large amounts of changes to get an additional color in on the graphic you&#8217;ve shown.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
