<?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 on: Model Binding isn&#8217;t just for the web</title>
	<atom:link href="http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/</link>
	<description>Startups, open source, and coffee.</description>
	<lastBuildDate>Mon, 08 Apr 2013 10:47:37 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: jmarnold</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-159</link>
		<dc:creator>jmarnold</dc:creator>
		<pubDate>Sun, 21 Oct 2012 20:10:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-159</guid>
		<description>Hey, you know I always appreciate constructive criticism, Darren. 

I think the biggest mistake with this post was approaching it from a &quot;Hey, check out this interface&quot; vs. &quot;Hey, look at this sample code that uses it&quot;.

I&#039;m not saying that the method isn&#039;t awkward. It&#039;s a visitor pattern that just didn&#039;t have a great place to go without introducing unnecessary complexity in achieving the goals we had.</description>
		<content:encoded><![CDATA[<p>Hey, you know I always appreciate constructive criticism, Darren. </p>
<p>I think the biggest mistake with this post was approaching it from a &#8220;Hey, check out this interface&#8221; vs. &#8220;Hey, look at this sample code that uses it&#8221;.</p>
<p>I&#8217;m not saying that the method isn&#8217;t awkward. It&#8217;s a visitor pattern that just didn&#8217;t have a great place to go without introducing unnecessary complexity in achieving the goals we had.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: darrencauthon</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-158</link>
		<dc:creator>darrencauthon</dc:creator>
		<pubDate>Sun, 21 Oct 2012 14:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-158</guid>
		<description>&quot;You provide the data and we do the magic.&quot;  

That&#039;s the thing -- the &quot;us&quot; in FUBU seems to be a tight group.  The call to put a &quot;WriteReport&quot; in such a low-level interface, and from scratch (it was included in the first commit) seems so obtuse, and I&#039;d be really surprised that there&#039;s no backlash against that.  I&#039;ve shown this interface to a few of my programming friends with a simple question &quot;What is wrong here?&quot; and everybody pointed at that method.   The same benefits could be had by putting it in another interface and tagging both on any implementing class.  

I don&#039;t mean to make it a Ruby/C# thing, I&#039;m just trying to point out that the thing being abstracted is, essentially, an object.  

Don&#039;t worry, I won&#039;t keep pestering you on this. :)  Have a good weekend!</description>
		<content:encoded><![CDATA[<p>&#8220;You provide the data and we do the magic.&#8221;  </p>
<p>That&#8217;s the thing &#8212; the &#8220;us&#8221; in FUBU seems to be a tight group.  The call to put a &#8220;WriteReport&#8221; in such a low-level interface, and from scratch (it was included in the first commit) seems so obtuse, and I&#8217;d be really surprised that there&#8217;s no backlash against that.  I&#8217;ve shown this interface to a few of my programming friends with a simple question &#8220;What is wrong here?&#8221; and everybody pointed at that method.   The same benefits could be had by putting it in another interface and tagging both on any implementing class.  </p>
<p>I don&#8217;t mean to make it a Ruby/C# thing, I&#8217;m just trying to point out that the thing being abstracted is, essentially, an object.  </p>
<p>Don&#8217;t worry, I won&#8217;t keep pestering you on this. <img src='http://lostechies.com/josharnold/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Have a good weekend!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jmarnold</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-157</link>
		<dc:creator>jmarnold</dc:creator>
		<pubDate>Sat, 20 Oct 2012 03:24:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-157</guid>
		<description>I think you&#039;re focusing on the wrong thing here. At no point in the process does the API require anyone to implement IValueSource. I&#039;m thinking that I miscommunicated that.


IValueSource is the lowest level interface we have. We have APIs that sit on top of this ad make everything much more seemless.
Think about it more like this: you provide data and we do the magic. On top of that, we provide detailed diagnostics to answer the &quot;what/who/how/why&quot; of the entire process.I&#039;m not going to split hairs with you on Ruby vs. .NET. Different strokes, man. If you&#039;re in a static language and WANT to use it, then this lets you do exactly that.</description>
		<content:encoded><![CDATA[<p>I think you&#8217;re focusing on the wrong thing here. At no point in the process does the API require anyone to implement IValueSource. I&#8217;m thinking that I miscommunicated that.</p>
<p>IValueSource is the lowest level interface we have. We have APIs that sit on top of this ad make everything much more seemless.<br />
Think about it more like this: you provide data and we do the magic. On top of that, we provide detailed diagnostics to answer the &#8220;what/who/how/why&#8221; of the entire process.I&#8217;m not going to split hairs with you on Ruby vs. .NET. Different strokes, man. If you&#8217;re in a static language and WANT to use it, then this lets you do exactly that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: darrencauthon</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-156</link>
		<dc:creator>darrencauthon</dc:creator>
		<pubDate>Sat, 20 Oct 2012 02:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-156</guid>
		<description>I don&#039;t mean to be a troll about this, but seeing this method on this class blew me away.  You say that testing and diagnostics are important, but what&#039;s the method?  &quot;WriteReport&quot;.  Write a report about what?  What if I want a report that doesn&#039;t fit IValueReport? (which, btw, has a dependency tossed right back to IValueSource, on some method called &quot;StartSource&quot;)  

This seems like a textbook &quot;before&quot; refactoring example, where the teacher gets the class to identify which part doesn&#039;t fit.  The &quot;after&quot; is always to separate the two responsibilities into their own separate class.  But to knowingly mix these two, and at such a low-level thing like a &quot;value source,&quot; doesn&#039;t seem that useful at all.  In all of the places that devs use &quot;value sources&quot; for settings, form post data, CSVs, or whatever, no one ever says &quot;Ok, the work&#039;s done, now it&#039;s time to add a report.&quot;

I&#039;ve been doing Ruby full-time for a year or so.  Do you know what we call &quot;the notion of a source of values?&quot;  An object.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t mean to be a troll about this, but seeing this method on this class blew me away.  You say that testing and diagnostics are important, but what&#8217;s the method?  &#8221;WriteReport&#8221;.  Write a report about what?  What if I want a report that doesn&#8217;t fit IValueReport? (which, btw, has a dependency tossed right back to IValueSource, on some method called &#8220;StartSource&#8221;)  </p>
<p>This seems like a textbook &#8220;before&#8221; refactoring example, where the teacher gets the class to identify which part doesn&#8217;t fit.  The &#8220;after&#8221; is always to separate the two responsibilities into their own separate class.  But to knowingly mix these two, and at such a low-level thing like a &#8220;value source,&#8221; doesn&#8217;t seem that useful at all.  In all of the places that devs use &#8220;value sources&#8221; for settings, form post data, CSVs, or whatever, no one ever says &#8220;Ok, the work&#8217;s done, now it&#8217;s time to add a report.&#8221;</p>
<p>I&#8217;ve been doing Ruby full-time for a year or so.  Do you know what we call &#8220;the notion of a source of values?&#8221;  An object.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jmarnold</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-155</link>
		<dc:creator>jmarnold</dc:creator>
		<pubDate>Fri, 19 Oct 2012 15:45:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-155</guid>
		<description>That may be true, but it&#039;s not dogmatic for sake of being unreasonable. SOLID is a vehicle for helping us implement our vision. One important part of that vision happens to be traceability.

When push comes to shove, I think it&#039;s OK to let that vision drive a design decision even if it&#039;s a little on the awkward side (i.e., forcing you to implement a no-op).

It&#039;s not something we take lightly. We obsess over those decisions for some time before biting the bullet.</description>
		<content:encoded><![CDATA[<p>That may be true, but it&#8217;s not dogmatic for sake of being unreasonable. SOLID is a vehicle for helping us implement our vision. One important part of that vision happens to be traceability.</p>
<p>When push comes to shove, I think it&#8217;s OK to let that vision drive a design decision even if it&#8217;s a little on the awkward side (i.e., forcing you to implement a no-op).</p>
<p>It&#8217;s not something we take lightly. We obsess over those decisions for some time before biting the bullet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: darrencauthon</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-154</link>
		<dc:creator>darrencauthon</dc:creator>
		<pubDate>Fri, 19 Oct 2012 15:40:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-154</guid>
		<description>I thought Fubu was all about SOLID?  SRP?</description>
		<content:encoded><![CDATA[<p>I thought Fubu was all about SOLID?  SRP?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jmarnold</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-153</link>
		<dc:creator>jmarnold</dc:creator>
		<pubDate>Fri, 19 Oct 2012 15:37:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-153</guid>
		<description>Diagnostics is a first class citizen. This is why that method is there. 

There are a handful of generic/reusable implementations of IValueSource that take care of all the details for you and let you work with more primitive types (e.g., IDictionary).</description>
		<content:encoded><![CDATA[<p>Diagnostics is a first class citizen. This is why that method is there. </p>
<p>There are a handful of generic/reusable implementations of IValueSource that take care of all the details for you and let you work with more primitive types (e.g., IDictionary).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: darrencauthon</title>
		<link>http://lostechies.com/josharnold/2012/10/19/model-binding-isnt-just-for-the-web/#comment-152</link>
		<dc:creator>darrencauthon</dc:creator>
		<pubDate>Fri, 19 Oct 2012 15:32:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/josharnold/?p=176#comment-152</guid>
		<description>IValueSource has a WriteReport method.

throw new MethodNotImplementedException(); ?</description>
		<content:encoded><![CDATA[<p>IValueSource has a WriteReport method.</p>
<p>throw new MethodNotImplementedException(); ?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
