<?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: Finding embarrassing and unhelpful error messages</title>
	<atom:link href="http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Thu, 18 Mar 2010 18:59:21 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Clift Norris</title>
		<link>http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/comment-page-1/#comment-25638</link>
		<dc:creator>Clift Norris</dc:creator>
		<pubDate>Thu, 08 Oct 2009 21:53:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3378#comment-25638</guid>
		<description>Sometimes these errors can be quite funny.  I recently found this in some C# code:
&lt;code&gt;
  MessageBox.Show(&quot;Failed to lunch PDF file viewer.&quot;, &quot;PDF file Error&quot;,  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);                   
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Sometimes these errors can be quite funny.  I recently found this in some C# code:<br />
<code><br />
  MessageBox.Show("Failed to lunch PDF file viewer.", "PDF file Error",  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/comment-page-1/#comment-25599</link>
		<dc:creator>John</dc:creator>
		<pubDate>Wed, 07 Oct 2009 19:29:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3378#comment-25599</guid>
		<description>Barry, so next time I have a math problem, I should see my system administrator? :)

I agree that resource files are a good idea, especially if you&#039;re supporting multiple languages. In that case you could extract the strings from your source code to make sure that everyone is playing by the rules. I could just imagine myself thinking &quot;It&#039;s just this one silly case. I don&#039;t want to go to all the trouble of making an entry in the resource file. Besides, I know the code will never get here. I&#039;ll just pop up a quick message box.&quot; Then when the application is ported to French, you have one English message box. Oops!

By the way, I gave a software demo in France once. The software text was in English, and that was fine with everyone. But the software immediately ran into a problem because the decimal separator is &quot;,&quot; in France rather than &quot;.&quot; I had fired up the software on a French laptop the night before, but I only entered integers so I didn&#039;t see the problem.</description>
		<content:encoded><![CDATA[<p>Barry, so next time I have a math problem, I should see my system administrator? <img src='http://www.johndcook.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I agree that resource files are a good idea, especially if you&#8217;re supporting multiple languages. In that case you could extract the strings from your source code to make sure that everyone is playing by the rules. I could just imagine myself thinking &#8220;It&#8217;s just this one silly case. I don&#8217;t want to go to all the trouble of making an entry in the resource file. Besides, I know the code will never get here. I&#8217;ll just pop up a quick message box.&#8221; Then when the application is ported to French, you have one English message box. Oops!</p>
<p>By the way, I gave a software demo in France once. The software text was in English, and that was fine with everyone. But the software immediately ran into a problem because the decimal separator is &#8220;,&#8221; in France rather than &#8220;.&#8221; I had fired up the software on a French laptop the night before, but I only entered integers so I didn&#8217;t see the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Barry Leiba</title>
		<link>http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/comment-page-1/#comment-25598</link>
		<dc:creator>Barry Leiba</dc:creator>
		<pubDate>Wed, 07 Oct 2009 19:14:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3378#comment-25598</guid>
		<description>This is a case where internationalization rules help.  In order to make sure that programs can be properly translated into other languages, most software companies now require all messages that users may see to be isolated into separate modules or &quot;resource files&quot;.  One side effect of that is that it&#039;s easy to find and review them all.

I&#039;m reminded of one silly case of this from the early 1980s.  A program I was working on had a &quot;calculator mode&quot; built into it, just for convenience and because it was easy.  Instead of typing a command to the program (pre-GUI days, of course), you could type something like &quot;6 * 5&quot;, and it would type back &quot;30&quot;.  If you typed &quot;6 / 0&quot;, the response was, &quot;You can not divide by zero.&quot;

The messages were being reviewed by the technical writers, who enforced a rule that every error message had to have an explanation in the manual, and had to tell you what you could do about it.  This makes sense, in general, but, well, there are always exceptions.  Not here, though, and they used the catch-all resolution: the released version of the message became, &quot;You can not divide by zero.  Contact your system administrator.&quot;</description>
		<content:encoded><![CDATA[<p>This is a case where internationalization rules help.  In order to make sure that programs can be properly translated into other languages, most software companies now require all messages that users may see to be isolated into separate modules or &#8220;resource files&#8221;.  One side effect of that is that it&#8217;s easy to find and review them all.</p>
<p>I&#8217;m reminded of one silly case of this from the early 1980s.  A program I was working on had a &#8220;calculator mode&#8221; built into it, just for convenience and because it was easy.  Instead of typing a command to the program (pre-GUI days, of course), you could type something like &#8220;6 * 5&#8243;, and it would type back &#8220;30&#8243;.  If you typed &#8220;6 / 0&#8243;, the response was, &#8220;You can not divide by zero.&#8221;</p>
<p>The messages were being reviewed by the technical writers, who enforced a rule that every error message had to have an explanation in the manual, and had to tell you what you could do about it.  This makes sense, in general, but, well, there are always exceptions.  Not here, though, and they used the catch-all resolution: the released version of the message became, &#8220;You can not divide by zero.  Contact your system administrator.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/comment-page-1/#comment-25584</link>
		<dc:creator>John</dc:creator>
		<pubDate>Wed, 07 Oct 2009 14:36:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3378#comment-25584</guid>
		<description>Irving, I agree on both points: developers need to learn from the text reviews and stored procedures don&#039;t eliminate SQL injection problems. Building SQL statements by concatenating strings isn&#039;t necessarily insecure, but it&#039;s something to look at carefully.</description>
		<content:encoded><![CDATA[<p>Irving, I agree on both points: developers need to learn from the text reviews and stored procedures don&#8217;t eliminate SQL injection problems. Building SQL statements by concatenating strings isn&#8217;t necessarily insecure, but it&#8217;s something to look at carefully.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Irving Reid</title>
		<link>http://www.johndcook.com/blog/2009/10/07/finding-embarrassing-and-unhelpful-error-messages/comment-page-1/#comment-25583</link>
		<dc:creator>Irving Reid</dc:creator>
		<pubDate>Wed, 07 Oct 2009 14:29:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=3378#comment-25583</guid>
		<description>Bulk review of the messages in a program can be quite useful, but it&#039;s important to close the feedback loop back to the developer to teach them how to write useful error messages in future.

One quibble: Stored procedures don&#039;t solve SQL injection bugs (and they cause lots of other headaches). The important change is to use prepared statements and pass the user-supplied data in as parameters.</description>
		<content:encoded><![CDATA[<p>Bulk review of the messages in a program can be quite useful, but it&#8217;s important to close the feedback loop back to the developer to teach them how to write useful error messages in future.</p>
<p>One quibble: Stored procedures don&#8217;t solve SQL injection bugs (and they cause lots of other headaches). The important change is to use prepared statements and pass the user-supplied data in as parameters.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
