<?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: Civilization, B.S.O.D.</title>
	<atom:link href="http://www.foresight.org/nanodot/?feed=rss2&#038;p=3662" rel="self" type="application/rss+xml" />
	<link>http://www.foresight.org/nanodot/?p=3662</link>
	<description>examining transformative technology</description>
	<lastBuildDate>Wed, 03 Apr 2013 18:23:47 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: TheRadicalModerate</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-866034</link>
		<dc:creator>TheRadicalModerate</dc:creator>
		<pubDate>Thu, 14 Jan 2010 06:12:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-866034</guid>
		<description>@Felix--

Actually, it&#039;s the Space Shuttle that had the five identical computers that voted on each other&#039;s answers--except when the primary flight system code decided to occasionally put an entire minor cycle&#039;s worth of I/O in the wrong cycle.  (Gotta love those IBM guys from Oswego--nothing like a scheduled I/O architecture that you decide to implement on an asynchronous, interrupt-driven serial bus.  For you aficionados of space program software bugs, this is the problem that caused the last-minute scrub of the first Shuttle launch.)  

And it was really only four computers that voted on each other&#039;s output--the fifth ran the Backup Flight System, which was independently coded so that if there was a software bug that took out the four primaries simultaneously, the crew could switch over to the fifth computer and still fly the vehicle.

Ah, it brings back fond memories:  those carefree days of programming in HAL/S, a language with all the bizarreness of APL and the gracelessness of Fortran, to say nothing of the fun of hand-compiling AP-101 hex patches.  (NASA would only let us recompile the whole system every few months.  I think that this was their version of source code control.)</description>
		<content:encoded><![CDATA[<p>@Felix&#8211;</p>
<p>Actually, it&#8217;s the Space Shuttle that had the five identical computers that voted on each other&#8217;s answers&#8211;except when the primary flight system code decided to occasionally put an entire minor cycle&#8217;s worth of I/O in the wrong cycle.  (Gotta love those IBM guys from Oswego&#8211;nothing like a scheduled I/O architecture that you decide to implement on an asynchronous, interrupt-driven serial bus.  For you aficionados of space program software bugs, this is the problem that caused the last-minute scrub of the first Shuttle launch.)  </p>
<p>And it was really only four computers that voted on each other&#8217;s output&#8211;the fifth ran the Backup Flight System, which was independently coded so that if there was a software bug that took out the four primaries simultaneously, the crew could switch over to the fifth computer and still fly the vehicle.</p>
<p>Ah, it brings back fond memories:  those carefree days of programming in HAL/S, a language with all the bizarreness of APL and the gracelessness of Fortran, to say nothing of the fun of hand-compiling AP-101 hex patches.  (NASA would only let us recompile the whole system every few months.  I think that this was their version of source code control.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865992</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Mon, 11 Jan 2010 04:05:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865992</guid>
		<description>Programming has &quot;Design by contract&quot;. http://en.wikipedia.org/wiki/Design_by_contract

This starts to get at the feedback loops you describe. These contracts are typically enabled during testing cycles to expose issues and turned off when running in production to save resources.

Another developer tool is automated unit tests. 
http://en.wikipedia.org/wiki/Unit_testing

These tests are used to gather feedback during the development process. They are extremely useful for pushing different scenarios through software subsystems and components to find potential issues.

Agreed, building robust, runtime based feedback systems is where we need to get, but these two solid software engineering tools help for now.</description>
		<content:encoded><![CDATA[<p>Programming has &#8220;Design by contract&#8221;. <a href="http://en.wikipedia.org/wiki/Design_by_contract" rel="nofollow">http://en.wikipedia.org/wiki/Design_by_contract</a></p>
<p>This starts to get at the feedback loops you describe. These contracts are typically enabled during testing cycles to expose issues and turned off when running in production to save resources.</p>
<p>Another developer tool is automated unit tests.<br />
<a href="http://en.wikipedia.org/wiki/Unit_testing" rel="nofollow">http://en.wikipedia.org/wiki/Unit_testing</a></p>
<p>These tests are used to gather feedback during the development process. They are extremely useful for pushing different scenarios through software subsystems and components to find potential issues.</p>
<p>Agreed, building robust, runtime based feedback systems is where we need to get, but these two solid software engineering tools help for now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Walter Sobchak</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865991</link>
		<dc:creator>Walter Sobchak</dc:creator>
		<pubDate>Mon, 11 Jan 2010 03:23:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865991</guid>
		<description>Good take, but ESR is ahead of you and has the plan: &lt;a href=&quot;http://esr.ibiblio.org/?p=1551&quot; rel=&quot;nofollow&quot;&gt;Complex Adaptive Systems&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Good take, but ESR is ahead of you and has the plan: <a href="http://esr.ibiblio.org/?p=1551" rel="nofollow">Complex Adaptive Systems</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: C++ Developer</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865990</link>
		<dc:creator>C++ Developer</dc:creator>
		<pubDate>Mon, 11 Jan 2010 03:04:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865990</guid>
		<description>I think restaurants and patrons are more apt than carpenters and woodpeckers:  If you saw many restaurants&#039; kitchens, you&#039;d never eat there. But you don&#039;t demand too see them, or even think about it (often). You presume it&#039;s passed some minimal inspection and is fine. It, you know, &lt;i&gt;seems&lt;/i&gt; fine, doesn&#039;t it?

Of course, with software such minimal inspections often fall apart as the inspector can&#039;t just measure bacteria. (And I&#039;ve seen some pretty horrendous software that&#039;s passed layers of independent review.) 

So where does that leave us? Perhaps pretty much where we are. Perhaps companies should publish the tests they&#039;ve run (though that gives the competition a lot of free work). And how meaningful would that be?

To bring forward and generalize your &quot;moral railroad&quot; thoughts: &lt;i&gt;we &lt;/i&gt;(people and software) pretty much all want the right thing already: for the trains not to crash, the restaurant patrons not to get sick, the software not to crash. Further, we can measure how much we &quot;want&quot; each by how much we&#039;ve spent (training or testing for people or software), though with diminishing returns. So we agonize (hopefully) over whether we&#039;ve done enough. And here we are.</description>
		<content:encoded><![CDATA[<p>I think restaurants and patrons are more apt than carpenters and woodpeckers:  If you saw many restaurants&#8217; kitchens, you&#8217;d never eat there. But you don&#8217;t demand too see them, or even think about it (often). You presume it&#8217;s passed some minimal inspection and is fine. It, you know, <i>seems</i> fine, doesn&#8217;t it?</p>
<p>Of course, with software such minimal inspections often fall apart as the inspector can&#8217;t just measure bacteria. (And I&#8217;ve seen some pretty horrendous software that&#8217;s passed layers of independent review.) </p>
<p>So where does that leave us? Perhaps pretty much where we are. Perhaps companies should publish the tests they&#8217;ve run (though that gives the competition a lot of free work). And how meaningful would that be?</p>
<p>To bring forward and generalize your &#8220;moral railroad&#8221; thoughts: <i>we </i>(people and software) pretty much all want the right thing already: for the trains not to crash, the restaurant patrons not to get sick, the software not to crash. Further, we can measure how much we &#8220;want&#8221; each by how much we&#8217;ve spent (training or testing for people or software), though with diminishing returns. So we agonize (hopefully) over whether we&#8217;ve done enough. And here we are.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: M. Report</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865989</link>
		<dc:creator>M. Report</dc:creator>
		<pubDate>Mon, 11 Jan 2010 02:29:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865989</guid>
		<description>I have told you once, I have told you twice, what I tell you three times is true:
Software _and_
hardware redundancy;
Different designs for each of the six bits.

EMP is a greater
threat, and harder
to protect against;
Good business opp-
ortunity there.</description>
		<content:encoded><![CDATA[<p>I have told you once, I have told you twice, what I tell you three times is true:<br />
Software _and_<br />
hardware redundancy;<br />
Different designs for each of the six bits.</p>
<p>EMP is a greater<br />
threat, and harder<br />
to protect against;<br />
Good business opp-<br />
ortunity there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ErikZ</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865985</link>
		<dc:creator>ErikZ</dc:creator>
		<pubDate>Sun, 10 Jan 2010 22:19:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865985</guid>
		<description>&quot;I say your civilization because as soon as we started thinking for you it really became our civilization...&quot;
~Agent Smith</description>
		<content:encoded><![CDATA[<p>&#8220;I say your civilization because as soon as we started thinking for you it really became our civilization&#8230;&#8221;<br />
~Agent Smith</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Felix Kasza</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865984</link>
		<dc:creator>Felix Kasza</dc:creator>
		<pubDate>Sun, 10 Jan 2010 22:04:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865984</guid>
		<description>So assume the renderer gets feedback that there already is something where it wishes to paint the next bit of text. All that means is that the renderer will assume that the page creator _wants_ the overprinting effect -- unless you have three separate renderers, written by three separate teams, with Chinese walls in between, and sharing not a single line of code (and running on separate OSes, too). In that case, you can let them vote, by majority, which colour a pixel should be.

We do things like that (in space vehicles, for example) -- but even there, we do not do it completely. Apollo modules, for instance, had five computers, but they were the same model running the same code. _And_ the software they ran was as simple and minimal as possible. For something as complex and incomplete as the HTML spec, you can forget voting.

Felix.</description>
		<content:encoded><![CDATA[<p>So assume the renderer gets feedback that there already is something where it wishes to paint the next bit of text. All that means is that the renderer will assume that the page creator _wants_ the overprinting effect &#8212; unless you have three separate renderers, written by three separate teams, with Chinese walls in between, and sharing not a single line of code (and running on separate OSes, too). In that case, you can let them vote, by majority, which colour a pixel should be.</p>
<p>We do things like that (in space vehicles, for example) &#8212; but even there, we do not do it completely. Apollo modules, for instance, had five computers, but they were the same model running the same code. _And_ the software they ran was as simple and minimal as possible. For something as complex and incomplete as the HTML spec, you can forget voting.</p>
<p>Felix.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865983</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Sun, 10 Jan 2010 21:30:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865983</guid>
		<description>You need to look into the Erlang programming language, developed by Erickson for programming telephone switches.  Software components developed in Erlang are designed to crash cleanly in the presence of errors and be restarted automatically and quickly by other software components (called supervisors).  That way you don&#039;t have to try to detect and respond rationally to every possible failure case, but instead &quot;just fail&quot; and count on another piece of software to clean up and restart whatever portions of the system failed, transparently.   Everything in an Erlang system has the sort of multi-layered feedback you are are talking about.   It does take a fair amount of CPU cycles, and a somewhat unusual programming style, but the results are impressive.  Using this sort of error-resiliant programming, Erickson achieved uptime percentages of up to &quot;eight nines&quot; (99.999999% availability, or a maximum of 1/3 of a second of downtime per year).</description>
		<content:encoded><![CDATA[<p>You need to look into the Erlang programming language, developed by Erickson for programming telephone switches.  Software components developed in Erlang are designed to crash cleanly in the presence of errors and be restarted automatically and quickly by other software components (called supervisors).  That way you don&#8217;t have to try to detect and respond rationally to every possible failure case, but instead &#8220;just fail&#8221; and count on another piece of software to clean up and restart whatever portions of the system failed, transparently.   Everything in an Erlang system has the sort of multi-layered feedback you are are talking about.   It does take a fair amount of CPU cycles, and a somewhat unusual programming style, but the results are impressive.  Using this sort of error-resiliant programming, Erickson achieved uptime percentages of up to &#8220;eight nines&#8221; (99.999999% availability, or a maximum of 1/3 of a second of downtime per year).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Micha Elyi</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865982</link>
		<dc:creator>Micha Elyi</dc:creator>
		<pubDate>Sun, 10 Jan 2010 21:22:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865982</guid>
		<description>Hey, TheRadicalModerate, it&#039;s not just any old chestnut, that&#039;s a chestnut of &lt;a href=&quot;http://www.amazon.com/Gerald-M.-Weinberg/e/B000AP8TZ8/ref=sr_tc_2_0&quot; rel=&quot;nofollow&quot;&gt;Gerald Weinberg&#039;s&lt;/a&gt; invention published in &lt;i&gt;Computer information systems: an introduction to data processing&lt;/i&gt; by Gerald M. Weinberg and Dennis P. Geller, Little, Brown computer systems series, 1985 p.113.</description>
		<content:encoded><![CDATA[<p>Hey, TheRadicalModerate, it&#8217;s not just any old chestnut, that&#8217;s a chestnut of <a href="http://www.amazon.com/Gerald-M.-Weinberg/e/B000AP8TZ8/ref=sr_tc_2_0" rel="nofollow">Gerald Weinberg&#8217;s</a> invention published in <i>Computer information systems: an introduction to data processing</i> by Gerald M. Weinberg and Dennis P. Geller, Little, Brown computer systems series, 1985 p.113.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JMHawkins</title>
		<link>http://www.foresight.org/nanodot/?p=3662#comment-865981</link>
		<dc:creator>JMHawkins</dc:creator>
		<pubDate>Sun, 10 Jan 2010 20:47:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.foresight.org/nanodot/?p=3662#comment-865981</guid>
		<description>As someone who writes software (probably even the software that renders the page you&#039;re viewing) I can say that the &quot;problem&quot; with writing robust software is that it is a couple of orders of magnitude more expensive than writing software that works &quot;most of the time.&quot;  It&#039;s all well and good to say &quot;well, than that&#039;s how we should do it&quot; but unless you&#039;re paying for it, that doesn&#039;t really help.  If I decided to create a browser, or a phone, or the software for any other typical commercial product, the way suggested here, I&#039;d go broke because nobody would buy it.  Everyone would buy my competitor&#039;s product that had 10x the features at 1/10th the price and crashed every couple of weeks.  

The problem (and hence the solution) is with the folks writing the checks, not the folks writing the code.  The comment about woodpeckers wiping out houses built like software is pretty funny, but the homeowner is the guy who wouldn&#039;t pay more than $49.00 for the entire house (and there are a whole bunch of wannabe homeowners complaining that even $49 is too expensive - houses ought to be built for free, as a hobby I guess).  

After a couple of generations of this, the bulk of software engineers don&#039;t have the mindset to create really robust software (why should they?  Nobody rewards it).  Plus, the development of techniques to ensure robustness have lagged behind where they could be.  

When your wife bought her iPhone, did she do it because iPhones have a reputation as being more reliable than a standard old dumb cell phone that maybe can do texting?  Or did she buy it because it has that touch screen where you can slide stuff around with your finger and download all kinds of cool and useful apps?

It has to be a consumer revolution to fix this problem, but I really don&#039;t see the consumers revolting any time soon.</description>
		<content:encoded><![CDATA[<p>As someone who writes software (probably even the software that renders the page you&#8217;re viewing) I can say that the &#8220;problem&#8221; with writing robust software is that it is a couple of orders of magnitude more expensive than writing software that works &#8220;most of the time.&#8221;  It&#8217;s all well and good to say &#8220;well, than that&#8217;s how we should do it&#8221; but unless you&#8217;re paying for it, that doesn&#8217;t really help.  If I decided to create a browser, or a phone, or the software for any other typical commercial product, the way suggested here, I&#8217;d go broke because nobody would buy it.  Everyone would buy my competitor&#8217;s product that had 10x the features at 1/10th the price and crashed every couple of weeks.  </p>
<p>The problem (and hence the solution) is with the folks writing the checks, not the folks writing the code.  The comment about woodpeckers wiping out houses built like software is pretty funny, but the homeowner is the guy who wouldn&#8217;t pay more than $49.00 for the entire house (and there are a whole bunch of wannabe homeowners complaining that even $49 is too expensive &#8211; houses ought to be built for free, as a hobby I guess).  </p>
<p>After a couple of generations of this, the bulk of software engineers don&#8217;t have the mindset to create really robust software (why should they?  Nobody rewards it).  Plus, the development of techniques to ensure robustness have lagged behind where they could be.  </p>
<p>When your wife bought her iPhone, did she do it because iPhones have a reputation as being more reliable than a standard old dumb cell phone that maybe can do texting?  Or did she buy it because it has that touch screen where you can slide stuff around with your finger and download all kinds of cool and useful apps?</p>
<p>It has to be a consumer revolution to fix this problem, but I really don&#8217;t see the consumers revolting any time soon.</p>
]]></content:encoded>
	</item>
</channel>
</rss>