<?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 for Paolo Capriotti</title>
	<atom:link href="http://pcapriotti.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://pcapriotti.wordpress.com</link>
	<description>KDE hacking and more</description>
	<pubDate>Mon, 07 Jul 2008 06:53:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>Comment on Some thoughts on git by Rick</title>
		<link>http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2664</link>
		<dc:creator>Rick</dc:creator>
		<pubDate>Thu, 03 Jul 2008 12:44:09 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2664</guid>
		<description>@Quintesse: If you want Mercurial support for Eclipse try  http://www.vectrace.com/mercurialeclipse/

It has advanced A LOT in very short time, sure you will find it quite feature complete.</description>
		<content:encoded><![CDATA[<p>@Quintesse: If you want Mercurial support for Eclipse try  <a href="http://www.vectrace.com/mercurialeclipse/" rel="nofollow">http://www.vectrace.com/mercurialeclipse/</a></p>
<p>It has advanced A LOT in very short time, sure you will find it quite feature complete.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Some thoughts on git by Dustin</title>
		<link>http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2663</link>
		<dc:creator>Dustin</dc:creator>
		<pubDate>Thu, 03 Jul 2008 04:21:31 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2663</guid>
		<description>I don't see the problem with the source code.  I had the opposite experience, really.

I wanted to add a feature to git.  I found it fairly easy to figure out where to put it and how to write it.  I did make a couple of mistakes in my initial version (which were pointed out to me early).  Making git do what I wanted it to do was easy.  The hard part was getting it accepted.

Junio has got to be one of the busiest software volunteers on the planet, but he meticulously reviewed my code for both style and function.  I had to send it through several times and wrote *way* more unit tests than code.  In the end, it made my confidence *really* high.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t see the problem with the source code.  I had the opposite experience, really.</p>
<p>I wanted to add a feature to git.  I found it fairly easy to figure out where to put it and how to write it.  I did make a couple of mistakes in my initial version (which were pointed out to me early).  Making git do what I wanted it to do was easy.  The hard part was getting it accepted.</p>
<p>Junio has got to be one of the busiest software volunteers on the planet, but he meticulously reviewed my code for both style and function.  I had to send it through several times and wrote *way* more unit tests than code.  In the end, it made my confidence *really* high.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Some thoughts on git by pcapriotti</title>
		<link>http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2662</link>
		<dc:creator>pcapriotti</dc:creator>
		<pubDate>Wed, 18 Jun 2008 00:50:03 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2662</guid>
		<description>@David
Of course browsing through the code of a large and complex system is always somewhat painful. I was just reporting that my experience with it has been particularly unpleasant if I compare it with the effort needed to understand other (also big and complex) code bases that I worked with.
About the exit on failure thing, it's not about spawning a subprocess. Exiting from a subprocess is ok. The point is that if you call exit in a library, the calling process will terminate, and that's almost never what you want.</description>
		<content:encoded><![CDATA[<p>@David<br />
Of course browsing through the code of a large and complex system is always somewhat painful. I was just reporting that my experience with it has been particularly unpleasant if I compare it with the effort needed to understand other (also big and complex) code bases that I worked with.<br />
About the exit on failure thing, it&#8217;s not about spawning a subprocess. Exiting from a subprocess is ok. The point is that if you call exit in a library, the calling process will terminate, and that&#8217;s almost never what you want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Some thoughts on git by David</title>
		<link>http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2661</link>
		<dc:creator>David</dc:creator>
		<pubDate>Tue, 17 Jun 2008 23:42:32 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2661</guid>
		<description>With reference to your comments about Git's source code, I do not believe your arguments are valid. Unix philosophy is about many things, one of them is isolating functionality into small programs so that errors in one program do not corrupt the others. Git does this. Another is emphasizing the importance of data structures in system design. Git does this.

Large functions are not correlated with higher defect rates (http://www.informationweek.com/news/software/open_source/showArticle.jhtml?articleID=207801458). You can watch Steve McConnell wrestle with this in CC/2e if you care to read about it. He suggests giving up at around 150 lines (and I tend to agree), but I think this has more to do with wearing out your page up/page down keys than with code quality.

Why are you trying to understand the source code without a serious investment of time and energy? There are two possibilities: A) (most likely) have an axe to grind and are trying very hard to find problems with Git or B) (less likely but possible) you have very serious misconceptions about software design. Large software systems are inherently complex, and you have to make a major investement of time and energy in order to understand them. You say browsing the source files is painful...of course it is painful! It is painful because you are not familiar with the rules of the Git project, and that pain is your mind stretching to fathom the
vastness of the new mental terrain.

You say the API is lacking in part because some of the programs call exit() on failure. You should learn how to open a pipe to a subprocess. Try this:
$ python
&#62;&#62;&#62; import subprocess
&#62;&#62;&#62; help(subprocess)

Git is not perfect, but your criticisms are very weak.</description>
		<content:encoded><![CDATA[<p>With reference to your comments about Git&#8217;s source code, I do not believe your arguments are valid. Unix philosophy is about many things, one of them is isolating functionality into small programs so that errors in one program do not corrupt the others. Git does this. Another is emphasizing the importance of data structures in system design. Git does this.</p>
<p>Large functions are not correlated with higher defect rates (http://www.informationweek.com/news/software/open_source/showArticle.jhtml?articleID=207801458). You can watch Steve McConnell wrestle with this in CC/2e if you care to read about it. He suggests giving up at around 150 lines (and I tend to agree), but I think this has more to do with wearing out your page up/page down keys than with code quality.</p>
<p>Why are you trying to understand the source code without a serious investment of time and energy? There are two possibilities: A) (most likely) have an axe to grind and are trying very hard to find problems with Git or B) (less likely but possible) you have very serious misconceptions about software design. Large software systems are inherently complex, and you have to make a major investement of time and energy in order to understand them. You say browsing the source files is painful&#8230;of course it is painful! It is painful because you are not familiar with the rules of the Git project, and that pain is your mind stretching to fathom the<br />
vastness of the new mental terrain.</p>
<p>You say the API is lacking in part because some of the programs call exit() on failure. You should learn how to open a pipe to a subprocess. Try this:<br />
$ python<br />
&gt;&gt;&gt; import subprocess<br />
&gt;&gt;&gt; help(subprocess)</p>
<p>Git is not perfect, but your criticisms are very weak.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Some thoughts on git by Jim Keller</title>
		<link>http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2660</link>
		<dc:creator>Jim Keller</dc:creator>
		<pubDate>Wed, 28 May 2008 20:38:15 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/10/08/some-thoughts-on-git/#comment-2660</guid>
		<description>&#62;Who cares about windows?

You have to understand that companies have a variety of people of varying skillsets who all need to use the repository. It's not reasonable to ask a graphic designer or an HTML/CSS coder to move from Windows to UNIX and use a command line tool to do their commits. 

A lot of times, the programmer ego comes into play and people say "if so and so can't figure it out, they're just dumb/ bad at their job/etc", but it doesn't make sense to spend significant time and money training people to use an immature system just because it's theoretically the latest and greatest.</description>
		<content:encoded><![CDATA[<p>&gt;Who cares about windows?</p>
<p>You have to understand that companies have a variety of people of varying skillsets who all need to use the repository. It&#8217;s not reasonable to ask a graphic designer or an HTML/CSS coder to move from Windows to UNIX and use a command line tool to do their commits. </p>
<p>A lot of times, the programmer ego comes into play and people say &#8220;if so and so can&#8217;t figure it out, they&#8217;re just dumb/ bad at their job/etc&#8221;, but it doesn&#8217;t make sense to spend significant time and money training people to use an immature system just because it&#8217;s theoretically the latest and greatest.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Rewriting from scratch by Riccardo Iaconelli</title>
		<link>http://pcapriotti.wordpress.com/2008/04/27/rewriting-from-scratch/#comment-2659</link>
		<dc:creator>Riccardo Iaconelli</dc:creator>
		<pubDate>Thu, 08 May 2008 20:39:14 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/?p=40#comment-2659</guid>
		<description>oh yeah!</description>
		<content:encoded><![CDATA[<p>oh yeah!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Rewriting from scratch by Corno</title>
		<link>http://pcapriotti.wordpress.com/2008/04/27/rewriting-from-scratch/#comment-2654</link>
		<dc:creator>Corno</dc:creator>
		<pubDate>Mon, 28 Apr 2008 12:50:20 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/?p=40#comment-2654</guid>
		<description>I'm missing my favorite one: "It's not meta enough" :D</description>
		<content:encoded><![CDATA[<p>I&#8217;m missing my favorite one: &#8220;It&#8217;s not meta enough&#8221; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on skema 0.1 by Dot</title>
		<link>http://pcapriotti.wordpress.com/2007/11/19/skema-01/#comment-2637</link>
		<dc:creator>Dot</dc:creator>
		<pubDate>Wed, 16 Jan 2008 19:11:53 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/11/19/skema-01/#comment-2637</guid>
		<description>This rocks! Do you plan to make a 0.2 release?</description>
		<content:encoded><![CDATA[<p>This rocks! Do you plan to make a 0.2 release?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on skema 0.1 by The return of &#8220;Top English WP Blogs&#8221; &#171; conduong.co.cc</title>
		<link>http://pcapriotti.wordpress.com/2007/11/19/skema-01/#comment-2318</link>
		<dc:creator>The return of &#8220;Top English WP Blogs&#8221; &#171; conduong.co.cc</dc:creator>
		<pubDate>Sun, 16 Dec 2007 10:47:29 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/11/19/skema-01/#comment-2318</guid>
		<description>[...] skema 0.1 I have just released skema, a very simple tool I wrote to automate some repetitive coding tasks. Nothing fancy, just a [&#8230;] [...]</description>
		<content:encoded><![CDATA[<p>[...] skema 0.1 I have just released skema, a very simple tool I wrote to automate some repetitive coding tasks. Nothing fancy, just a [&#8230;] [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A smart logger by WoundedLion</title>
		<link>http://pcapriotti.wordpress.com/2007/03/11/a-smart-logger/#comment-2292</link>
		<dc:creator>WoundedLion</dc:creator>
		<pubDate>Fri, 14 Dec 2007 23:39:53 +0000</pubDate>
		<guid isPermaLink="false">http://pcapriotti.wordpress.com/2007/03/11/a-smart-logger/#comment-2292</guid>
		<description>Good point. Return value optimization is not guaranteed, but merely allowed, by the standard and implemented in most compilers worth their salt. 

To make it foolproof, however, you could add an "active" flag to the LogHelper which is set by LogHelper::operator&#60;&#60;(). The destructor would not forward the log message unless this flag was set. 

Then, at least you would still avoid the complexity of implementing the full ownership transfer logic and also the cost all of those intermediate LogHelper constructor calls.</description>
		<content:encoded><![CDATA[<p>Good point. Return value optimization is not guaranteed, but merely allowed, by the standard and implemented in most compilers worth their salt. </p>
<p>To make it foolproof, however, you could add an &#8220;active&#8221; flag to the LogHelper which is set by LogHelper::operator&lt;&lt;(). The destructor would not forward the log message unless this flag was set. </p>
<p>Then, at least you would still avoid the complexity of implementing the full ownership transfer logic and also the cost all of those intermediate LogHelper constructor calls.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
