<?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 Parsnips.net</title>
	<atom:link href="http://parsnips.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://parsnips.net</link>
	<description>Like a Carrot</description>
	<lastBuildDate>Wed, 09 Feb 2011 16:27:44 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
	<item>
		<title>Comment on What prevents problems from being solved? by Olufemi Adebayo Oyekan</title>
		<link>http://parsnips.net/what-prevents-problems-from-being-solved/comment-page-1/#comment-396</link>
		<dc:creator>Olufemi Adebayo Oyekan</dc:creator>
		<pubDate>Wed, 09 Feb 2011 16:27:44 +0000</pubDate>
		<guid isPermaLink="false">http://parsnips.net/?p=177#comment-396</guid>
		<description>Extremely strong, as usual.</description>
		<content:encoded><![CDATA[<p>Extremely strong, as usual.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on What prevents problems from being solved? by Tweets that mention What prevents problems from being solved? &#124; Parsnips.net -- Topsy.com</title>
		<link>http://parsnips.net/what-prevents-problems-from-being-solved/comment-page-1/#comment-395</link>
		<dc:creator>Tweets that mention What prevents problems from being solved? &#124; Parsnips.net -- Topsy.com</dc:creator>
		<pubDate>Sun, 06 Feb 2011 03:12:42 +0000</pubDate>
		<guid isPermaLink="false">http://parsnips.net/?p=177#comment-395</guid>
		<description>[...] This post was mentioned on Twitter by Brandon Hays, Michael Parsons. Michael Parsons said: Draft of a post mortem. http://parsnips.net/?p=177 [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Brandon Hays, Michael Parsons. Michael Parsons said: Draft of a post mortem. <a href="http://parsnips.net/?p=177" rel="nofollow">http://parsnips.net/?p=177</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mike Parsons by Larry Parsons</title>
		<link>http://parsnips.net/michael_parsons/comment-page-1/#comment-195</link>
		<dc:creator>Larry Parsons</dc:creator>
		<pubDate>Sat, 04 Sep 2010 15:08:44 +0000</pubDate>
		<guid isPermaLink="false">http:/?page_id=2#comment-195</guid>
		<description>You are involved somehow in the delivery of babies?  Could you elaborate?  And - what does this have to do with delivering food? (are you against bottle feeding?  If not, are you a Similac or Enfamil man?  Iron fortified or straight up?)  Finally, is P-Q4 a manly opening, or is it a statistical copout only fit for a pathetic weakling?  Just wondering.

Uncle Larry</description>
		<content:encoded><![CDATA[<p>You are involved somehow in the delivery of babies?  Could you elaborate?  And &#8211; what does this have to do with delivering food? (are you against bottle feeding?  If not, are you a Similac or Enfamil man?  Iron fortified or straight up?)  Finally, is P-Q4 a manly opening, or is it a statistical copout only fit for a pathetic weakling?  Just wondering.</p>
<p>Uncle Larry</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Spring2 DTG Presentation by Alexei</title>
		<link>http://parsnips.net/spring2-dtg-presentation/comment-page-1/#comment-87</link>
		<dc:creator>Alexei</dc:creator>
		<pubDate>Thu, 08 Jul 2010 17:07:46 +0000</pubDate>
		<guid isPermaLink="false">http://parsnips.net/?p=117#comment-87</guid>
		<description>Hi Mike,

Thank you for your response. 

You see, I am not much of an architect. In fact I am not even a back end developer. I am front end developer with all my skills focused on UI implementation. Consequently, I by no means can judge code generation in general (that is to indicate it as a sign of a bad design). 

In my comments I was mostly interested in question: whether you think it is convenient to work with?

Basically I just do not like the feeling that the code is written for me using some predefined set of rules. I do not feel that I am in control of the process. If I want to extend the schema in some unpredicted way then I must write another set of rules over the existing one, and another one, and another...

And as it is with any layer of abstraction, the more you are getting involved in the process, the more intimate knowledge of the mechanism you must possess to be able to fix inevitable issues.
At some point, it may become clear that it would be much cleaner and simpler approach just to write the code for each separate case without attempt to generalize it, make it uniform and generate bulk of the code.

Again, if you have time to read an article which I referred to in my comment (http://www.joelonsoftware.com/articles/fog0000000024.html) you&#039;ll understand the ideas I am trying to express.

Thanks,

Alexei













It just does not</description>
		<content:encoded><![CDATA[<p>Hi Mike,</p>
<p>Thank you for your response. </p>
<p>You see, I am not much of an architect. In fact I am not even a back end developer. I am front end developer with all my skills focused on UI implementation. Consequently, I by no means can judge code generation in general (that is to indicate it as a sign of a bad design). </p>
<p>In my comments I was mostly interested in question: whether you think it is convenient to work with?</p>
<p>Basically I just do not like the feeling that the code is written for me using some predefined set of rules. I do not feel that I am in control of the process. If I want to extend the schema in some unpredicted way then I must write another set of rules over the existing one, and another one, and another&#8230;</p>
<p>And as it is with any layer of abstraction, the more you are getting involved in the process, the more intimate knowledge of the mechanism you must possess to be able to fix inevitable issues.<br />
At some point, it may become clear that it would be much cleaner and simpler approach just to write the code for each separate case without attempt to generalize it, make it uniform and generate bulk of the code.</p>
<p>Again, if you have time to read an article which I referred to in my comment (<a href="http://www.joelonsoftware.com/articles/fog0000000024.html" rel="nofollow">http://www.joelonsoftware.com/articles/fog0000000024.html</a>) you&#8217;ll understand the ideas I am trying to express.</p>
<p>Thanks,</p>
<p>Alexei</p>
<p>It just does not</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Spring2 DTG Presentation by parsnips</title>
		<link>http://parsnips.net/spring2-dtg-presentation/comment-page-1/#comment-85</link>
		<dc:creator>parsnips</dc:creator>
		<pubDate>Thu, 08 Jul 2010 03:49:12 +0000</pubDate>
		<guid isPermaLink="false">http://parsnips.net/?p=117#comment-85</guid>
		<description>Hey Alexei,

Thanks for your comments!

As far as reuse goes, I can definitely see where you&#039;re coming from.   For what seamless uses the dtg for (data access), I think there exists much better techniques to use (NHibernate for example) which eliminates the need to generate mapping code, and allows greater flexibility in maintaining the software.   We already see in our code for example in VendorLocation which you&#039;ve touched a lot, where adding a simple property requires changes on many many many many files.  I think something is definitely amiss there.  Unfortunately, I was not with Seamless when they picked how to do persistence :(

Template inheritance is a very interesting topic to me... I assume you&#039;re aware of the Django framework, and the .Net port of it (NDjango)... I think it is a very good candidate to replace NVelocity as our template processor, for that very reason.  I&#039;m interested in your thoughts about code generation, in general... Do you believe that it is a sign of bad design?  I mean, if you have a situation where code generation seems like a good option, is it because you&#039;ve simply not modeled the problem correctly with inheritance or with application of some well thought out design pattern?

Again thanks for the comments!

Mike</description>
		<content:encoded><![CDATA[<p>Hey Alexei,</p>
<p>Thanks for your comments!</p>
<p>As far as reuse goes, I can definitely see where you&#8217;re coming from.   For what seamless uses the dtg for (data access), I think there exists much better techniques to use (NHibernate for example) which eliminates the need to generate mapping code, and allows greater flexibility in maintaining the software.   We already see in our code for example in VendorLocation which you&#8217;ve touched a lot, where adding a simple property requires changes on many many many many files.  I think something is definitely amiss there.  Unfortunately, I was not with Seamless when they picked how to do persistence <img src='http://parsnips.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Template inheritance is a very interesting topic to me&#8230; I assume you&#8217;re aware of the Django framework, and the .Net port of it (NDjango)&#8230; I think it is a very good candidate to replace NVelocity as our template processor, for that very reason.  I&#8217;m interested in your thoughts about code generation, in general&#8230; Do you believe that it is a sign of bad design?  I mean, if you have a situation where code generation seems like a good option, is it because you&#8217;ve simply not modeled the problem correctly with inheritance or with application of some well thought out design pattern?</p>
<p>Again thanks for the comments!</p>
<p>Mike</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Spring2 DTG Presentation by Alexei</title>
		<link>http://parsnips.net/spring2-dtg-presentation/comment-page-1/#comment-82</link>
		<dc:creator>Alexei</dc:creator>
		<pubDate>Thu, 24 Jun 2010 16:18:55 +0000</pubDate>
		<guid isPermaLink="false">http://parsnips.net/?p=117#comment-82</guid>
		<description>Mike,

Thank you for the interesting information. The only question is... Do you really think such code generation technique is convenient to use and extensible enough?

But, first of all, I definitely have doubts regarding the statement that &quot;The power of code generation, is code - reuse&quot;.

I used to think of code as a set of instructions on the language which is actually interpreted/compiled and executed.

Let&#039;s assume we have entity A and entity B and we want to generate business objects for these two entities. As far as I understand, after the entities are processed by your code generation tool we will have two identical code files for the two entities with the only difference in the name of the actual class. And we will have the same templated code stamped numerous times for each new entity. 

But what about inheritance and usage of generics? Is there a notion of templates&#039; inheritance in nVelocity templating engine? Can I have a template for entity B to be inherited from template for entity A? Or, from different point of view, is it possible to say, using this mechanism, that entity B is derived from entity A?

If not, then I would not name it &quot;code reuse&quot;. I&#039;d say it is quite the opposite - code duplication and I do not see code reuse neither on the templates&#039; level nor on the level of the resulting generated code.
From the other perspective, it seems to me that if you have exactly the same code generated for different entities it is really difficult to get optimal performance. 

In essence it reminds me about the discussion in one great article I read many years ago: http://www.joelonsoftware.com/articles/fog0000000024.html

I would say that this pattern is doomed to be buried under the heap of special cases, custom attributes, ad hoc templates, discrepancies between the generated code and the one edited manually, and sooner or later it&#039;ll become very-very difficult to maintain the mechanism.

But, sorry, of course I may be wrong, so long live DTG:)</description>
		<content:encoded><![CDATA[<p>Mike,</p>
<p>Thank you for the interesting information. The only question is&#8230; Do you really think such code generation technique is convenient to use and extensible enough?</p>
<p>But, first of all, I definitely have doubts regarding the statement that &#8220;The power of code generation, is code &#8211; reuse&#8221;.</p>
<p>I used to think of code as a set of instructions on the language which is actually interpreted/compiled and executed.</p>
<p>Let&#8217;s assume we have entity A and entity B and we want to generate business objects for these two entities. As far as I understand, after the entities are processed by your code generation tool we will have two identical code files for the two entities with the only difference in the name of the actual class. And we will have the same templated code stamped numerous times for each new entity. </p>
<p>But what about inheritance and usage of generics? Is there a notion of templates&#8217; inheritance in nVelocity templating engine? Can I have a template for entity B to be inherited from template for entity A? Or, from different point of view, is it possible to say, using this mechanism, that entity B is derived from entity A?</p>
<p>If not, then I would not name it &#8220;code reuse&#8221;. I&#8217;d say it is quite the opposite &#8211; code duplication and I do not see code reuse neither on the templates&#8217; level nor on the level of the resulting generated code.<br />
From the other perspective, it seems to me that if you have exactly the same code generated for different entities it is really difficult to get optimal performance. </p>
<p>In essence it reminds me about the discussion in one great article I read many years ago: <a href="http://www.joelonsoftware.com/articles/fog0000000024.html" rel="nofollow">http://www.joelonsoftware.com/articles/fog0000000024.html</a></p>
<p>I would say that this pattern is doomed to be buried under the heap of special cases, custom attributes, ad hoc templates, discrepancies between the generated code and the one edited manually, and sooner or later it&#8217;ll become very-very difficult to maintain the mechanism.</p>
<p>But, sorry, of course I may be wrong, so long live DTG:)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

