<?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 for Michael Groner&#039;s Blog</title>
	<atom:link href="http://tech.michaelgroner.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.michaelgroner.com</link>
	<description></description>
	<lastBuildDate>Mon, 21 Dec 2009 15:23:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on MapReduce talk from Lambda Lounge Presentation by Introduction to MapReduce: Q&#38;A with Michael Groner</title>
		<link>http://tech.michaelgroner.com/2009/11/18/mapreduce-talk-from-september-lambda-lounge/#comment-18</link>
		<dc:creator><![CDATA[Introduction to MapReduce: Q&#38;A with Michael Groner]]></dc:creator>
		<pubDate>Mon, 21 Dec 2009 15:23:19 +0000</pubDate>
		<guid isPermaLink="false">http://tech.michaelgroner.com/?p=659#comment-18</guid>
		<description><![CDATA[[...] gave a talk on the MapReduce framework. The 5-minute Lightening Talk was a condensed version of the 45-minute presentation he delivered originally at the St. Louis Lambda Lounge (a local group focused on dynamic and [...]]]></description>
		<content:encoded><![CDATA[<p>[...] gave a talk on the MapReduce framework. The 5-minute Lightening Talk was a condensed version of the 45-minute presentation he delivered originally at the St. Louis Lambda Lounge (a local group focused on dynamic and [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How TDD clarified the Open/Closed Principle for me by michael</title>
		<link>http://tech.michaelgroner.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-11</link>
		<dc:creator><![CDATA[michael]]></dc:creator>
		<pubDate>Thu, 29 Jan 2009 18:25:53 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-11</guid>
		<description><![CDATA[Brian -

Thanks for the question. It really got me thinking.

I hope you don&#039;t mind, but my response grew into a blog post of its own. Please take a look and let me know what you think: http://bit.ly/6mZ0b

- Michael]]></description>
		<content:encoded><![CDATA[<p>Brian -</p>
<p>Thanks for the question. It really got me thinking.</p>
<p>I hope you don&#8217;t mind, but my response grew into a blog post of its own. Please take a look and let me know what you think: <a href="http://bit.ly/6mZ0b" rel="nofollow">http://bit.ly/6mZ0b</a></p>
<p>- Michael</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Which principle was it? Open-closed or dependency inversion? by zyle</title>
		<link>http://tech.michaelgroner.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-15</link>
		<dc:creator><![CDATA[zyle]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-15</guid>
		<description><![CDATA[..and I just had an epiphany, and realized that the STL &quot;for_each&quot; may be another example where OCP seems to apply without the use of base class interfaces; different functors can inject behavior (as you term) it, to perform different tasks, without changing the for_each() library code itself.

Of course, you could argue that even though dynamic polymorphism through a base class isn&#039;t being used here to adhere to an interface, we are in a sense using static polymorphism to enforce the template contract (i.e. for the functor being passed in), but still....]]></description>
		<content:encoded><![CDATA[<p>..and I just had an epiphany, and realized that the STL &#8220;for_each&#8221; may be another example where OCP seems to apply without the use of base class interfaces; different functors can inject behavior (as you term) it, to perform different tasks, without changing the for_each() library code itself.</p>
<p>Of course, you could argue that even though dynamic polymorphism through a base class isn&#8217;t being used here to adhere to an interface, we are in a sense using static polymorphism to enforce the template contract (i.e. for the functor being passed in), but still&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Which principle was it? Open-closed or dependency inversion? by zyle</title>
		<link>http://tech.michaelgroner.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-14</link>
		<dc:creator><![CDATA[zyle]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-14</guid>
		<description><![CDATA[I&#039;ve been reading Robert Martin&#039;s &quot;Agile software development&quot; book, and found myself struggling over the difference between OCP and DIP. No matter which way I looked at it, they both always seemed to converge on the same solution i.e. use abstractions rather than direct dependence. The statement you posted, i.e. &quot;OCP states the goal of not having to modify a class to extend behavior. DIP provides an implementation guideline that we should depend on abstract classes as much as possible.&quot; clears up a lot. Thanks.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;ve been reading Robert Martin&#8217;s &#8220;Agile software development&#8221; book, and found myself struggling over the difference between OCP and DIP. No matter which way I looked at it, they both always seemed to converge on the same solution i.e. use abstractions rather than direct dependence. The statement you posted, i.e. &#8220;OCP states the goal of not having to modify a class to extend behavior. DIP provides an implementation guideline that we should depend on abstract classes as much as possible.&#8221; clears up a lot. Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Which principle was it? Open-closed or dependency inversion? by Matt Campbell</title>
		<link>http://tech.michaelgroner.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-13</link>
		<dc:creator><![CDATA[Matt Campbell]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-13</guid>
		<description><![CDATA[Brian Button recently posited on Twitter:

&lt;div style=&quot;margin-left: 20px&quot;&gt;OCP in 6 words - Structure systems around abstractions, not concretions&lt;/div&gt;

To which Robert Martin replied:

&lt;div style=&quot;margin-left: 20px&quot;&gt;That&#039;s also a reasonable definition of DIP.&lt;/div&gt;

So no, you&#039;re not alone in thinking that there&#039;s some heavy overlap here.  :)]]></description>
		<content:encoded><![CDATA[<p>Brian Button recently posited on Twitter:</p>
<div style="margin-left: 20px">OCP in 6 words &#8211; Structure systems around abstractions, not concretions</div>
<p>To which Robert Martin replied:</p>
<div style="margin-left: 20px">That&#8217;s also a reasonable definition of DIP.</div>
<p>So no, you&#8217;re not alone in thinking that there&#8217;s some heavy overlap here.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Which principle was it? Open-closed or dependency inversion? by Zac</title>
		<link>http://tech.michaelgroner.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-12</link>
		<dc:creator><![CDATA[Zac]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/29/openclose-principle-and-dependency-inversion-principle-ndash-two-sides-same-coin/#comment-12</guid>
		<description><![CDATA[To me, OCP has always seemed like a direct effect of adherence to the other SOLID principles. Kinda the inverse of testability, OCP is a litmus test of the flexibility and extensibility of your design rather than a guide to achieving that flexibility and extensibility.

I&#039;m probably wrong, but that&#039;s how I see it.]]></description>
		<content:encoded><![CDATA[<p>To me, OCP has always seemed like a direct effect of adherence to the other SOLID principles. Kinda the inverse of testability, OCP is a litmus test of the flexibility and extensibility of your design rather than a guide to achieving that flexibility and extensibility.</p>
<p>I&#8217;m probably wrong, but that&#8217;s how I see it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How TDD clarified the Open/Closed Principle for me by Brian Button</title>
		<link>http://tech.michaelgroner.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-10</link>
		<dc:creator><![CDATA[Brian Button]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-10</guid>
		<description><![CDATA[Michael,

I&#039;m glad you get these principles. I learned them from Bob in the very early &#039;90s and have held them very dear since. But in this case, where the act of injecting behavior and data into the classes being tested is the effect you&#039;re seeing, does this seem more closely aligned with the DIP?

The SRP drives you down the road of creating small, coherent, but loosely coupled classes, while the DIP teaches you  how to keep that coupling loose.

Admittedly, I usually think of the OCP from a statically typed language point of view, but even when viewed with an eye towards ruby, injecting behavior seems to favor the DIP.

What do you think?

-- bab]]></description>
		<content:encoded><![CDATA[<p>Michael,</p>
<p>I&#8217;m glad you get these principles. I learned them from Bob in the very early &#8217;90s and have held them very dear since. But in this case, where the act of injecting behavior and data into the classes being tested is the effect you&#8217;re seeing, does this seem more closely aligned with the DIP?</p>
<p>The SRP drives you down the road of creating small, coherent, but loosely coupled classes, while the DIP teaches you  how to keep that coupling loose.</p>
<p>Admittedly, I usually think of the OCP from a statically typed language point of view, but even when viewed with an eye towards ruby, injecting behavior seems to favor the DIP.</p>
<p>What do you think?</p>
<p>&#8211; bab</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How TDD clarified the Open/Closed Principle for me by Michael Groner</title>
		<link>http://tech.michaelgroner.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-9</link>
		<dc:creator><![CDATA[Michael Groner]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-9</guid>
		<description><![CDATA[In my example the &quot;DummyList&quot; was a dummy object, not mock class. That way I was sure I had removed any dependencies on concrete classes. Python shielded me from having to build abstract interfaces with separate implementations but it would be necessary in C++ and Java.

I wanted to go into more code detail in the blog, but was concerned it was getting too long already. If there is some element of my post that you like to see in more detail in a later entry, please let me know.

- Michael]]></description>
		<content:encoded><![CDATA[<p>In my example the &#8220;DummyList&#8221; was a dummy object, not mock class. That way I was sure I had removed any dependencies on concrete classes. Python shielded me from having to build abstract interfaces with separate implementations but it would be necessary in C++ and Java.</p>
<p>I wanted to go into more code detail in the blog, but was concerned it was getting too long already. If there is some element of my post that you like to see in more detail in a later entry, please let me know.</p>
<p>- Michael</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How TDD clarified the Open/Closed Principle for me by Robert 'Groby' Blum</title>
		<link>http://tech.michaelgroner.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-8</link>
		<dc:creator><![CDATA[Robert 'Groby' Blum]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-8</guid>
		<description><![CDATA[I might be confused, but isn&#039;t DummyList just a mock for your list?

Or do you mean you implemented DummyList so it only responds to the necessary methods? (In that case, I&#039;m SOL - static typing... :)]]></description>
		<content:encoded><![CDATA[<p>I might be confused, but isn&#8217;t DummyList just a mock for your list?</p>
<p>Or do you mean you implemented DummyList so it only responds to the necessary methods? (In that case, I&#8217;m SOL &#8211; static typing&#8230; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How TDD clarified the Open/Closed Principle for me by Victor noagbodji</title>
		<link>http://tech.michaelgroner.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-7</link>
		<dc:creator><![CDATA[Victor noagbodji]]></dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://msgroner.wordpress.com/2009/01/22/how-tdd-clarified-openclosed-principle-me-2/#comment-7</guid>
		<description><![CDATA[Great article. It would be nice if you write some tutorials on TDD for the rest of us.]]></description>
		<content:encoded><![CDATA[<p>Great article. It would be nice if you write some tutorials on TDD for the rest of us.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

