<?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: Opening black boxes</title>
	<atom:link href="http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Sat, 11 Feb 2012 01:10:06 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Phillip</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-126549</link>
		<dc:creator>Phillip</dc:creator>
		<pubDate>Sat, 31 Dec 2011 00:06:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-126549</guid>
		<description>Separate branches aren&#039;t costly with Git!</description>
		<content:encoded><![CDATA[<p>Separate branches aren&#8217;t costly with Git!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: GuB</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-120635</link>
		<dc:creator>GuB</dc:creator>
		<pubDate>Fri, 09 Dec 2011 00:13:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-120635</guid>
		<description>Opening a black box may be fine if said box is an inanimate object.
However most black boxes are not inanimate objects, they are more like living animals. And you have to be very careful when opening live animals or you will kill them.
What I want to say is that by modifying actively maintained libraries you won&#039;t benefit from evolutions and bug fixes unless you maintain a separate branch, which is costly. You may also lose the efficiency benefits of shared libraries.</description>
		<content:encoded><![CDATA[<p>Opening a black box may be fine if said box is an inanimate object.<br />
However most black boxes are not inanimate objects, they are more like living animals. And you have to be very careful when opening live animals or you will kill them.<br />
What I want to say is that by modifying actively maintained libraries you won&#8217;t benefit from evolutions and bug fixes unless you maintain a separate branch, which is costly. You may also lose the efficiency benefits of shared libraries.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: You wanted a banana but you got a gorilla holding the banana &#8212; The Endeavour</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-93588</link>
		<dc:creator>You wanted a banana but you got a gorilla holding the banana &#8212; The Endeavour</dc:creator>
		<pubDate>Tue, 19 Jul 2011 12:10:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-93588</guid>
		<description>[...] Opening black boxes How to become a good programmer Where OO has succeeded most    ? X [...]</description>
		<content:encoded><![CDATA[<p>[...] Opening black boxes How to become a good programmer Where OO has succeeded most    ? X [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Psychological encapsulation &#8212; The Endeavour</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-68647</link>
		<dc:creator>Psychological encapsulation &#8212; The Endeavour</dc:creator>
		<pubDate>Wed, 02 Mar 2011 13:53:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-68647</guid>
		<description>[...] Opening black boxes    ? X [...]</description>
		<content:encoded><![CDATA[<p>[...] Opening black boxes    ? X [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-25975</link>
		<dc:creator>John</dc:creator>
		<pubDate>Thu, 15 Oct 2009 11:59:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-25975</guid>
		<description>Doug, along those lines, I remember a company about ten years ago that spoke highly of Microsoft&#039;s first e-commerce framework. They went on to say how they replaced every single line of it with their own code, but they were glad to have had the Microsoft code to start with.</description>
		<content:encoded><![CDATA[<p>Doug, along those lines, I remember a company about ten years ago that spoke highly of Microsoft&#8217;s first e-commerce framework. They went on to say how they replaced every single line of it with their own code, but they were glad to have had the Microsoft code to start with.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Doug Bain</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-25970</link>
		<dc:creator>Doug Bain</dc:creator>
		<pubDate>Thu, 15 Oct 2009 08:56:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-25970</guid>
		<description>I fully agree with your posted statements John.   It does depend very much though in the methods that different individuals use to learn. 

I personally find it considerably easier to start with soming pre-built and learn by adapting it.   Instead of having to work from a blank sheet, and having to figure our syntaxes and methods from scratch, you start from something that has been done.  This becomes considerably easier where the original developer(s) have applied a black box re-use principle.    Going back to Janne&#039;s comment the design is almost entirely reflected in the structure of the code. 

One good example of this that I have applied in the past is the modification of a well known PHP based open source bulletin board PHPBB(2).   I went from a person that had never touched PHP, to a developer that managed to create a Portal Mod for the project.  This was because a) PHP is all encapsulating  b). it used libraries (black box modules) of code and c) the design was reflected in the code. 

All that said, it depends on the mind of the developer.  Some developers think better with a blank sheet and an uncluttered mind - developing code from scratch. Others, like myself, need something to get things moving along.</description>
		<content:encoded><![CDATA[<p>I fully agree with your posted statements John.   It does depend very much though in the methods that different individuals use to learn. </p>
<p>I personally find it considerably easier to start with soming pre-built and learn by adapting it.   Instead of having to work from a blank sheet, and having to figure our syntaxes and methods from scratch, you start from something that has been done.  This becomes considerably easier where the original developer(s) have applied a black box re-use principle.    Going back to Janne&#8217;s comment the design is almost entirely reflected in the structure of the code. </p>
<p>One good example of this that I have applied in the past is the modification of a well known PHP based open source bulletin board PHPBB(2).   I went from a person that had never touched PHP, to a developer that managed to create a Portal Mod for the project.  This was because a) PHP is all encapsulating  b). it used libraries (black box modules) of code and c) the design was reflected in the code. </p>
<p>All that said, it depends on the mind of the developer.  Some developers think better with a blank sheet and an uncluttered mind &#8211; developing code from scratch. Others, like myself, need something to get things moving along.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Janne</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-25962</link>
		<dc:creator>Janne</dc:creator>
		<pubDate>Thu, 15 Oct 2009 03:32:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-25962</guid>
		<description>A library or toolkit that is developed with all the &quot;best practices&quot; and using frameworks such as Boost/STL and so on is effectively a black box whether the code is available or not. It&#039;s too difficult to navigate or make meaningful changes to the code without access to the internal development design documents and long time spent understanding the architecture and details. Faced with such libraries, reimplementing it yourself or simply treating it as a black box may well be the sensible thing to do.</description>
		<content:encoded><![CDATA[<p>A library or toolkit that is developed with all the &#8220;best practices&#8221; and using frameworks such as Boost/STL and so on is effectively a black box whether the code is available or not. It&#8217;s too difficult to navigate or make meaningful changes to the code without access to the internal development design documents and long time spent understanding the architecture and details. Faced with such libraries, reimplementing it yourself or simply treating it as a black box may well be the sensible thing to do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Barry Leiba</title>
		<link>http://www.johndcook.com/blog/2009/10/14/opening-black-boxes/comment-page-1/#comment-25927</link>
		<dc:creator>Barry Leiba</dc:creator>
		<pubDate>Wed, 14 Oct 2009 17:22:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3402#comment-25927</guid>
		<description>I think it depends upon what the code is for.

I don&#039;t expect people to understand how crypto code works, and I don&#039;t WANT them messing with it.  When a string-manipulation library is well tested, debugged, and optimized, I don&#039;t expect that most programmers can go modify it to any improvement, and they&#039;re more likely to expose it to new bugs, such as index-out-of-bounds errors.  And I certainly don&#039;t want people screwing with network libraries unless they really know what they&#039;re doing.

On the other hand, yes, clearly, some higher-level toolkit that I wrote might easily be improved on by my colleagues.  One has to use judgment.</description>
		<content:encoded><![CDATA[<p>I think it depends upon what the code is for.</p>
<p>I don&#8217;t expect people to understand how crypto code works, and I don&#8217;t WANT them messing with it.  When a string-manipulation library is well tested, debugged, and optimized, I don&#8217;t expect that most programmers can go modify it to any improvement, and they&#8217;re more likely to expose it to new bugs, such as index-out-of-bounds errors.  And I certainly don&#8217;t want people screwing with network libraries unless they really know what they&#8217;re doing.</p>
<p>On the other hand, yes, clearly, some higher-level toolkit that I wrote might easily be improved on by my colleagues.  One has to use judgment.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.331 seconds -->

