<?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 on: NullPointerExceptions Are Not Helpful</title>
	<atom:link href="http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/</link>
	<description>Robert Fischer and Brian Hurt on Punditry, Programming Languages, and Other Religious Issues</description>
	<pubDate>Mon, 08 Sep 2008 07:49:16 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: My Frustrations with REXML: Ruby&#8217;s Standard Library for Reading/Writing XML; or, Ruby&#8217;s Problem Is Its Type System, and Don&#8217;t Try to Tell Me Otherwise &#124; Enfranchised Mind</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-33698</link>
		<dc:creator>My Frustrations with REXML: Ruby&#8217;s Standard Library for Reading/Writing XML; or, Ruby&#8217;s Problem Is Its Type System, and Don&#8217;t Try to Tell Me Otherwise &#124; Enfranchised Mind</dc:creator>
		<pubDate>Thu, 21 Aug 2008 18:41:49 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-33698</guid>
		<description>[...] BEEN FIXED WITH STATIC TYPING. Even more if you have a type system which can check nulls for you. Null pointers/&#8221;nil when you didn&#8217;t expect it!&#8221; errors are totally solvable problems. The fact [...]</description>
		<content:encoded><![CDATA[<p>[...] BEEN FIXED WITH STATIC TYPING. Even more if you have a type system which can check nulls for you. Null pointers/&#8221;nil when you didn&#8217;t expect it!&#8221; errors are totally solvable problems. The fact [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Upped The Recent Post/Popular Post Widget Count &#124; Enfranchised Mind</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-33668</link>
		<dc:creator>Upped The Recent Post/Popular Post Widget Count &#124; Enfranchised Mind</dc:creator>
		<pubDate>Tue, 12 Aug 2008 19:33:24 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-33668</guid>
		<description>[...] NullPointerExceptions Are Not Helpful [...]</description>
		<content:encoded><![CDATA[<p>[...] NullPointerExceptions Are Not Helpful [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; 7 Actually Useful Things You Didn&#8217;t Know Static Typing Could Do: An Introduction for the Dynamic Language Enthusiast</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-33001</link>
		<dc:creator>Enfranchised Mind &#187; 7 Actually Useful Things You Didn&#8217;t Know Static Typing Could Do: An Introduction for the Dynamic Language Enthusiast</dc:creator>
		<pubDate>Mon, 14 Apr 2008 14:50:57 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-33001</guid>
		<description>[...] right. If you switch to Ocaml, the compiler will guaranty that you never see a $!# NullPointerException (or equivalent) again. Ever. [...]</description>
		<content:encoded><![CDATA[<p>[...] right. If you switch to Ocaml, the compiler will guaranty that you never see a $!# NullPointerException (or equivalent) again. Ever. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-32911</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Sat, 29 Mar 2008 16:55:30 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-32911</guid>
		<description>Also note that @nullable and @notnull are &lt;EM&gt;type annotations&lt;/EM&gt;, in the sense of Ocaml or Haskell types (Ocaml calls nullable values "options", Haskell "maybes"- same idea).

Which means that not only should this capability (among others) be expressed in the type system, the compiler should be able to deduce whether or not a particular value is nullable or not automatically- the annotation should be optional.  Again, Haskell, Ocaml, et. al. do precisely this this.</description>
		<content:encoded><![CDATA[<p>Also note that @nullable and @notnull are <em>type annotations</em>, in the sense of Ocaml or Haskell types (Ocaml calls nullable values &#8220;options&#8221;, Haskell &#8220;maybes&#8221;- same idea).</p>
<p>Which means that not only should this capability (among others) be expressed in the type system, the compiler should be able to deduce whether or not a particular value is nullable or not automatically- the annotation should be optional.  Again, Haskell, Ocaml, et. al. do precisely this this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-32900</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Thu, 27 Mar 2008 18:10:47 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-32900</guid>
		<description>In this case, the NPE was coming out of Hibernate.  My IDE will not fix that.</description>
		<content:encoded><![CDATA[<p>In this case, the NPE was coming out of Hibernate.  My IDE will not fix that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-32899</link>
		<dc:creator>Marc</dc:creator>
		<pubDate>Thu, 27 Mar 2008 17:53:39 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-32899</guid>
		<description>I like JetBrains' solution to the problem:

http://www.jetbrains.com/idea/documentation/howto.html

There's no reason to ever get an NPE if you're using that.</description>
		<content:encoded><![CDATA[<p>I like JetBrains&#8217; solution to the problem:</p>
<p><a href="http://www.jetbrains.com/idea/documentation/howto.html" rel="nofollow">http://www.jetbrains.com/idea/documentation/howto.html</a></p>
<p>There&#8217;s no reason to ever get an NPE if you&#8217;re using that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; My Frustrations with REXML: Ruby&#8217;s Standard Library for Reading/Writing XML; or, Ruby&#8217;s Problem Is Its Type System, and Don&#8217;t Try to Tell Me Otherwise</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-32872</link>
		<dc:creator>Enfranchised Mind &#187; My Frustrations with REXML: Ruby&#8217;s Standard Library for Reading/Writing XML; or, Ruby&#8217;s Problem Is Its Type System, and Don&#8217;t Try to Tell Me Otherwise</dc:creator>
		<pubDate>Mon, 24 Mar 2008 21:59:56 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-32872</guid>
		<description>[...] BEEN FiXED WITH STATIC TYPING. Even more if you have a type system which can check nulls for you. Null pointers/&#8221;nil when you didn&#8217;t expect it!&#8221; errors are totally solvable problems. The fact [...]</description>
		<content:encoded><![CDATA[<p>[...] BEEN FiXED WITH STATIC TYPING. Even more if you have a type system which can check nulls for you. Null pointers/&#8221;nil when you didn&#8217;t expect it!&#8221; errors are totally solvable problems. The fact [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; Some final Patterns</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-32074</link>
		<dc:creator>Enfranchised Mind &#187; Some final Patterns</dc:creator>
		<pubDate>Sun, 16 Dec 2007 18:26:06 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-32074</guid>
		<description>[...] This code is pretty common:  T out = null; if(someTest(in)) { out = value1; } else if(someOtherTest(in)) { out = value2; } else { out = value3; } doSomethingWith(out)  If you change T out = null; to just final T out;, the compiler will check that all code paths leading to &#8220;doSomethingWith(out)&#8221; will lead to &#8220;out&#8221; being assigned. And you can wipe out one more null in your code, which means one fewer opportunity for a NullPointerException to sneak out of your library and piss me off. [...]</description>
		<content:encoded><![CDATA[<p>[...] This code is pretty common:  T out = null; if(someTest(in)) { out = value1; } else if(someOtherTest(in)) { out = value2; } else { out = value3; } doSomethingWith(out)  If you change T out = null; to just final T out;, the compiler will check that all code paths leading to &#8220;doSomethingWith(out)&#8221; will lead to &#8220;out&#8221; being assigned. And you can wipe out one more null in your code, which means one fewer opportunity for a NullPointerException to sneak out of your library and piss me off. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: scott</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-31132</link>
		<dc:creator>scott</dc:creator>
		<pubDate>Mon, 25 Jun 2007 04:21:28 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-31132</guid>
		<description>I think that's Las Vegas debugging, technically ;)</description>
		<content:encoded><![CDATA[<p>I think that&#8217;s Las Vegas debugging, technically ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert</title>
		<link>http://enfranchisedmind.com/blog/2007/06/13/nullpointerexceptions-are-not-helpful/#comment-31111</link>
		<dc:creator>Robert</dc:creator>
		<pubDate>Mon, 18 Jun 2007 17:12:58 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/06/13/255#comment-31111</guid>
		<description>Blargh. 

&lt;code&gt;ParserContext&lt;/code&gt; is an undocumented interface, whose implementation is being passed in.

This is where abstraction ceases to be fun.</description>
		<content:encoded><![CDATA[<p>Blargh. </p>
<p><code>ParserContext</code> is an undocumented interface, whose implementation is being passed in.</p>
<p>This is where abstraction ceases to be fun.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
