<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Testing the Clojure way</title>
	<atom:link href="http://newcome.wordpress.com/2012/03/12/testing-the-clojure-way/feed/" rel="self" type="application/rss+xml" />
	<link>http://newcome.wordpress.com/2012/03/12/testing-the-clojure-way/</link>
	<description>I&#039;m bringing cyber back</description>
	<lastBuildDate>Sat, 18 May 2013 22:59:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: nonuby</title>
		<link>http://newcome.wordpress.com/2012/03/12/testing-the-clojure-way/#comment-3156</link>
		<dc:creator><![CDATA[nonuby]]></dc:creator>
		<pubDate>Wed, 06 Jun 2012 02:35:16 +0000</pubDate>
		<guid isPermaLink="false">http://newcome.wordpress.com/?p=1577#comment-3156</guid>
		<description><![CDATA[Makes good sense to me (ex c# dev, same alt .net bullshit), I kind of knew you would hit on redefs before i got to that part,  I just wanted to validate my own intent to use redefs.]]></description>
		<content:encoded><![CDATA[<p>Makes good sense to me (ex c# dev, same alt .net bullshit), I kind of knew you would hit on redefs before i got to that part,  I just wanted to validate my own intent to use redefs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris "Jesdisciple"</title>
		<link>http://newcome.wordpress.com/2012/03/12/testing-the-clojure-way/#comment-3097</link>
		<dc:creator><![CDATA[Chris "Jesdisciple"]]></dc:creator>
		<pubDate>Wed, 14 Mar 2012 00:22:50 +0000</pubDate>
		<guid isPermaLink="false">http://newcome.wordpress.com/?p=1577#comment-3097</guid>
		<description><![CDATA[I&#039;ve been thinking further on this, and I&#039;ll now argue somewhat in the opposite direction...

When I first commented on this post, I noticed that dynamically changing another program, and allowing that to happen, are similar to contributions to FOSS projects. Only, instead of the source taking on a life of its own, the runtime does. And typically, when a program is being dynamically modified, its source is also available (and interpreted or JIT-compiled).

So which is better? Surely there are use cases where each one is more optimal than the other, but I&#039;m thinking modifying the original source, though it might take more work, will generally have a better result. Dynamically modifying a dependency seems more likely to be a quick-and-dirty solution than a result of diligent consideration.

The library-user isn&#039;t likely to totally *break* your program; they&#039;ll make sure it still works for their target use-case. But they might introduce inefficiency or make one piece of your library incompatible with another piece. And then 5 months later their application&#039;s requirements change and they (or their replacement/s) trigger the bug they made.

Conclusion: Dynamic modifications might be useful (though I can&#039;t think of any cases at the moment) but should be written with appropriate fear and trembling. Perhaps the language should put up a bit of a fight to make sure the user really wants to do it.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;ve been thinking further on this, and I&#8217;ll now argue somewhat in the opposite direction&#8230;</p>
<p>When I first commented on this post, I noticed that dynamically changing another program, and allowing that to happen, are similar to contributions to FOSS projects. Only, instead of the source taking on a life of its own, the runtime does. And typically, when a program is being dynamically modified, its source is also available (and interpreted or JIT-compiled).</p>
<p>So which is better? Surely there are use cases where each one is more optimal than the other, but I&#8217;m thinking modifying the original source, though it might take more work, will generally have a better result. Dynamically modifying a dependency seems more likely to be a quick-and-dirty solution than a result of diligent consideration.</p>
<p>The library-user isn&#8217;t likely to totally *break* your program; they&#8217;ll make sure it still works for their target use-case. But they might introduce inefficiency or make one piece of your library incompatible with another piece. And then 5 months later their application&#8217;s requirements change and they (or their replacement/s) trigger the bug they made.</p>
<p>Conclusion: Dynamic modifications might be useful (though I can&#8217;t think of any cases at the moment) but should be written with appropriate fear and trembling. Perhaps the language should put up a bit of a fight to make sure the user really wants to do it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: newcome</title>
		<link>http://newcome.wordpress.com/2012/03/12/testing-the-clojure-way/#comment-3095</link>
		<dc:creator><![CDATA[newcome]]></dc:creator>
		<pubDate>Tue, 13 Mar 2012 03:55:56 +0000</pubDate>
		<guid isPermaLink="false">http://newcome.wordpress.com/?p=1577#comment-3095</guid>
		<description><![CDATA[I see what you mean. I actually used to lament the fact that most of the .NET framework makes everything sealed by default and that methods are not virtual by default like they are in Java. Somehow this seemed different since there was still no possibility that you&#039;d have a private method overridden.

And yet, somehow in Javascript I&#039;m just fine with the fact that someone can replace the implementation of Array.join() if they want to.

Maybe it&#039;s a matter of expectations, and I just need to get used to this new environment?]]></description>
		<content:encoded><![CDATA[<p>I see what you mean. I actually used to lament the fact that most of the .NET framework makes everything sealed by default and that methods are not virtual by default like they are in Java. Somehow this seemed different since there was still no possibility that you&#8217;d have a private method overridden.</p>
<p>And yet, somehow in Javascript I&#8217;m just fine with the fact that someone can replace the implementation of Array.join() if they want to.</p>
<p>Maybe it&#8217;s a matter of expectations, and I just need to get used to this new environment?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris "Jesdisciple"</title>
		<link>http://newcome.wordpress.com/2012/03/12/testing-the-clojure-way/#comment-3094</link>
		<dc:creator><![CDATA[Chris "Jesdisciple"]]></dc:creator>
		<pubDate>Tue, 13 Mar 2012 02:27:51 +0000</pubDate>
		<guid isPermaLink="false">http://newcome.wordpress.com/?p=1577#comment-3094</guid>
		<description><![CDATA[&quot;It is kind of unsettling to think that any code you write might be overridden later from above without your knowing[.]&quot;

Exactly what is the problem with that? Python goes so far as to deem that quality of programs as generally desired. A program, by default, works the way the programmer thought it should work. But the user of your library, or anyone else who might know details of your code&#039;s internals, has broad powers to change it. And that&#039;s a good thing, because they have a better idea what the application is supposed to do. If their changes break your program, that&#039;s their fault and not a flaw of their ability to change your program.

Obviously this is a bad thing in security-sensitive applications (see: XSS), but otherwise I fail to see the problem.]]></description>
		<content:encoded><![CDATA[<p>&#8220;It is kind of unsettling to think that any code you write might be overridden later from above without your knowing[.]&#8221;</p>
<p>Exactly what is the problem with that? Python goes so far as to deem that quality of programs as generally desired. A program, by default, works the way the programmer thought it should work. But the user of your library, or anyone else who might know details of your code&#8217;s internals, has broad powers to change it. And that&#8217;s a good thing, because they have a better idea what the application is supposed to do. If their changes break your program, that&#8217;s their fault and not a flaw of their ability to change your program.</p>
<p>Obviously this is a bad thing in security-sensitive applications (see: XSS), but otherwise I fail to see the problem.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
