<?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 Daniel Pitts' Tech Blog</title>
	<atom:link href="http://virtualinfinity.net/wordpress/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://virtualinfinity.net/wordpress</link>
	<description>Daniel Pitts' Tech Blog</description>
	<pubDate>Sat, 05 Jul 2008 19:43:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>Comment on OpenID by Daniel</title>
		<link>http://virtualinfinity.net/wordpress/uncategorized/2008/04/05/openid/#comment-207</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Sun, 20 Apr 2008 15:47:17 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/uncategorized/2008/04/05/openid/#comment-207</guid>
		<description>I thought that the great strength of OpenID was that it was open, so that anybody could manage ids, and anybody could confirm ids :-)</description>
		<content:encoded><![CDATA[<p>I thought that the great strength of OpenID was that it was open, so that anybody could manage ids, and anybody could confirm ids <img src='http://virtualinfinity.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on OpenID by Aviad Ben Dov</title>
		<link>http://virtualinfinity.net/wordpress/uncategorized/2008/04/05/openid/#comment-205</link>
		<dc:creator>Aviad Ben Dov</dc:creator>
		<pubDate>Sat, 12 Apr 2008 13:15:51 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/uncategorized/2008/04/05/openid/#comment-205</guid>
		<description>It is, but the great strength of OpenID is that someone else manages your secure identity. I find it better to use something like  &lt;a href="http://myopenid.com" rel="nofollow"&gt;myOpenID&lt;/a&gt; or &lt;a href="https://pip.verisignlabs.com/" rel="nofollow"&gt;Verisign&lt;/a&gt; for it.. Just my thought. :)</description>
		<content:encoded><![CDATA[<p>It is, but the great strength of OpenID is that someone else manages your secure identity. I find it better to use something like  <a href="http://myopenid.com" rel="nofollow">myOpenID</a> or <a href="https://pip.verisignlabs.com/" rel="nofollow">Verisign</a> for it.. Just my thought. <img src='http://virtualinfinity.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why is C so slow? Java vs. C benchmark. by Daniel</title>
		<link>http://virtualinfinity.net/wordpress/java/2007/12/08/why-is-c-so-slow/#comment-193</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Fri, 15 Feb 2008 03:42:40 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/uncategorized/2007/12/08/why-is-c-so-slow/#comment-193</guid>
		<description>@ahmet
I know its not a good benchmark.  This post was actually a little tongue-in-cheek.  People frequently benchmark C/C++ vs Java in just this manor in order to defame Java.  I used the same invalid benchmark, and found that the results were actually reversed on my system.</description>
		<content:encoded><![CDATA[<p>@ahmet<br />
I know its not a good benchmark.  This post was actually a little tongue-in-cheek.  People frequently benchmark C/C++ vs Java in just this manor in order to defame Java.  I used the same invalid benchmark, and found that the results were actually reversed on my system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why is C so slow? Java vs. C benchmark. by ahmet</title>
		<link>http://virtualinfinity.net/wordpress/java/2007/12/08/why-is-c-so-slow/#comment-187</link>
		<dc:creator>ahmet</dc:creator>
		<pubDate>Sat, 09 Feb 2008 23:07:52 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/uncategorized/2007/12/08/why-is-c-so-slow/#comment-187</guid>
		<description>try with java 1.6 update 4. you will possibly get better results with Java. Still, just looping is not really a good benchmark.</description>
		<content:encoded><![CDATA[<p>try with java 1.6 update 4. you will possibly get better results with Java. Still, just looping is not really a good benchmark.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java Concurrency In Practice by Daniel Pitts&#8217; Tech Blog &#187; Blog Archive &#187; Swing Concurrency</title>
		<link>http://virtualinfinity.net/wordpress/technical-book-recommendations/java-concurrency-in-practice/#comment-185</link>
		<dc:creator>Daniel Pitts&#8217; Tech Blog &#187; Blog Archive &#187; Swing Concurrency</dc:creator>
		<pubDate>Sat, 09 Feb 2008 18:01:16 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/?page_id=9#comment-185</guid>
		<description>[...] Hopefully at this point you&#8217;ve learned the basics of what it takes to write a proper Swing program. From here, I suggest reading Concurrency in Swing from the Java tutorials. For a much more complete understanding of the why&#8217;s and how&#8217;s of Java concurrency, I suggest buying and reading Java Concurrency in Practice. [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Hopefully at this point you&#8217;ve learned the basics of what it takes to write a proper Swing program. From here, I suggest reading Concurrency in Swing from the Java tutorials. For a much more complete understanding of the why&#8217;s and how&#8217;s of Java concurrency, I suggest buying and reading Java Concurrency in Practice. [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Sensitivity: A Case for Convention. by Daniel</title>
		<link>http://virtualinfinity.net/wordpress/program-design/2008/01/28/a-case-for-convention/#comment-138</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Tue, 29 Jan 2008 16:23:18 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/program-design/2008/01/28/a-case-for-convention/#comment-138</guid>
		<description>I was actually going to mention the double-danger of this in CVS/SVN on windows. I have had issues changing the case of a file/directory changing (I develop on Linux) causing problems for others (who often use windows).

BTW. SVN uses bdb to store your files, so the names are OS independent (i.e. SVN server on Windows can still handle FOO and Foo).

The solution I found for this was to have the Windows users check out the whole module from scratch again.</description>
		<content:encoded><![CDATA[<p>I was actually going to mention the double-danger of this in CVS/SVN on windows. I have had issues changing the case of a file/directory changing (I develop on Linux) causing problems for others (who often use windows).</p>
<p>BTW. SVN uses bdb to store your files, so the names are OS independent (i.e. SVN server on Windows can still handle FOO and Foo).</p>
<p>The solution I found for this was to have the Windows users check out the whole module from scratch again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Sensitivity: A Case for Convention. by Aviad Ben Dov</title>
		<link>http://virtualinfinity.net/wordpress/program-design/2008/01/28/a-case-for-convention/#comment-134</link>
		<dc:creator>Aviad Ben Dov</dc:creator>
		<pubDate>Tue, 29 Jan 2008 04:48:30 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/program-design/2008/01/28/a-case-for-convention/#comment-134</guid>
		<description>Wow. This happened to me but in a worst-case-scenario. I was reviewing some old code, when I noticed a class which was called "concreteClass" (that is, the class' name started with a non-capital letter). I refactored it for renaming (to "ConcreteClass"), it was successful, I checked it into SVN, and viola! Done.

Later on, when other people checked out that file, their local SVN client got stumbled on it - apparently, it didn't DELETE the old file when I renamed it, so it tried to check out Both types of files ("concreteClass" AND "ConcreteClass") and since they were using Windows computers it just didn't work. Obviously it didn't give a reasonable error to find why it was getting stuck but luckily we managed to deduce it was due to these two filenames with conflicting names under Windows (Our SVN repository is kept on a Unix machine so it had no problem keeping the files like that itself.)

Phew. Longer response than I thought it would be. :)</description>
		<content:encoded><![CDATA[<p>Wow. This happened to me but in a worst-case-scenario. I was reviewing some old code, when I noticed a class which was called &#8220;concreteClass&#8221; (that is, the class&#8217; name started with a non-capital letter). I refactored it for renaming (to &#8220;ConcreteClass&#8221;), it was successful, I checked it into SVN, and viola! Done.</p>
<p>Later on, when other people checked out that file, their local SVN client got stumbled on it - apparently, it didn&#8217;t DELETE the old file when I renamed it, so it tried to check out Both types of files (&#8221;concreteClass&#8221; AND &#8220;ConcreteClass&#8221;) and since they were using Windows computers it just didn&#8217;t work. Obviously it didn&#8217;t give a reasonable error to find why it was getting stuck but luckily we managed to deduce it was due to these two filenames with conflicting names under Windows (Our SVN repository is kept on a Unix machine so it had no problem keeping the files like that itself.)</p>
<p>Phew. Longer response than I thought it would be. <img src='http://virtualinfinity.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Shrinking Source Code: Java initialization by Newton&#8217;s Inlaws : Itsy bitsy Java</title>
		<link>http://virtualinfinity.net/wordpress/java/esoteric-java-features/2007/10/20/shrinking-source-code/#comment-99</link>
		<dc:creator>Newton&#8217;s Inlaws : Itsy bitsy Java</dc:creator>
		<pubDate>Thu, 17 Jan 2008 11:33:55 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/java/esoteric-java-features/2007/10/20/shrinking-source-code-dont-try-this-at-home/#comment-99</guid>
		<description>[...] characters) According to Virtual Infinity (where I got this post):  Enum types in Java are actually classes. Furthermore, they are [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] characters) According to Virtual Infinity (where I got this post):  Enum types in Java are actually classes. Furthermore, they are [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Almost Useful: Java Type Intersection. by Piotr Kobzda</title>
		<link>http://virtualinfinity.net/wordpress/java/esoteric-java-features/2007/11/23/type-intersection/#comment-83</link>
		<dc:creator>Piotr Kobzda</dc:creator>
		<pubDate>Wed, 12 Dec 2007 19:10:49 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/java/esoteric-java-features/2007/11/23/type-intersection/#comment-83</guid>
		<description>Yes, we shouldn't have to do that.  However, we can!

The reason intersection types are not implemented for direct use is in the way the JVM works, and Java 5 is chosen to be implemented.  Currently, there is no special runtime type to represent intersection type, it's always compiled as the erasure of its first bound.

Implementing it in a different way most probably requires some changes in the JVM and/or generation of synthetic classes.  From a number of reasons it was a change the Java architects wanted to avoid.  But, who knows?  Maybe future versions will support that?...


P.S.  Thank you for formatting my previous comment, but there are still some incompleteness in my code caused by a replay form.

In my original example a reference holder was declared as:
&lt;pre class="code"&gt;
public class ListRef&#60;T extends List&#60;String&#62; &#38; RandomAccess&#62; {
    public final T value;

    public ListRef(T value) {
        this.value = value;
    }
}
&lt;/pre&gt;
Example method implementation as:
&lt;pre class="code"&gt;
public ListRef&#60;?&#62; foo() {
    return new ListRef&#60;ArrayList&#60;String&#62;&#62;(new ArrayList&#60;String&#62;());
}
&lt;/pre&gt;
And sample use snippet as:
&lt;pre class="code"&gt;
ListRef&#60;?&#62; listRef = foo();
List&#60;String&#62; list = listRef.value;
RandomAccess ra = listRef.value;
...
&lt;/pre&gt;
</description>
		<content:encoded><![CDATA[<p>Yes, we shouldn&#8217;t have to do that.  However, we can!</p>
<p>The reason intersection types are not implemented for direct use is in the way the JVM works, and Java 5 is chosen to be implemented.  Currently, there is no special runtime type to represent intersection type, it&#8217;s always compiled as the erasure of its first bound.</p>
<p>Implementing it in a different way most probably requires some changes in the JVM and/or generation of synthetic classes.  From a number of reasons it was a change the Java architects wanted to avoid.  But, who knows?  Maybe future versions will support that?&#8230;</p>
<p>P.S.  Thank you for formatting my previous comment, but there are still some incompleteness in my code caused by a replay form.</p>
<p>In my original example a reference holder was declared as:</p>
<pre class="code">
public class ListRef&lt;T extends List&lt;String&gt; &amp; RandomAccess&gt; {
    public final T value;

    public ListRef(T value) {
        this.value = value;
    }
}
</pre>
<p>Example method implementation as:</p>
<pre class="code">
public ListRef&lt;?&gt; foo() {
    return new ListRef&lt;ArrayList&lt;String&gt;&gt;(new ArrayList&lt;String&gt;());
}
</pre>
<p>And sample use snippet as:</p>
<pre class="code">
ListRef&lt;?&gt; listRef = foo();
List&lt;String&gt; list = listRef.value;
RandomAccess ra = listRef.value;
...
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Almost Useful: Java Type Intersection. by Daniel</title>
		<link>http://virtualinfinity.net/wordpress/java/esoteric-java-features/2007/11/23/type-intersection/#comment-82</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Wed, 12 Dec 2007 18:09:58 +0000</pubDate>
		<guid isPermaLink="false">http://virtualinfinity.net/wordpress/java/esoteric-java-features/2007/11/23/type-intersection/#comment-82</guid>
		<description>Hmm, thats interesting, but it is still a hack that shouldn't have to be. Anyway, I think I would have this:
&lt;pre class="code"&gt;
public class RandomAccessListDelegate&#60;E, T extends &#60;List&#60;E&gt; &#038; RandomAccess&gt; implements RandomAccess, List&#60;E&gt; {
  private final T delegate;
  private RandomAccessListDelegate(T delegate) {
    this.delegate = delegate;
  }
  public static &#60;E, T extends &#60;List&#60;E&gt; &#038; RandomAccess&gt; RandomAccessListDelegate&#60;E, T&gt; create(T delegate) {
    return new RandomAccessListDelegate&lt;E, T&gt;(delegate);
  }
  public T getDelegate() { return delegate; }
  // Delegate all methods to delegate
  // [code snipped]
}
&lt;/pre&gt;
Still, I shouldn't have to jump this hoop.</description>
		<content:encoded><![CDATA[<p>Hmm, thats interesting, but it is still a hack that shouldn&#8217;t have to be. Anyway, I think I would have this:</p>
<pre class="code">
public class RandomAccessListDelegate&lt;E, T extends &lt;List&lt;E> &#038; RandomAccess> implements RandomAccess, List&lt;E> {
  private final T delegate;
  private RandomAccessListDelegate(T delegate) {
    this.delegate = delegate;
  }
  public static &lt;E, T extends &lt;List&lt;E> &#038; RandomAccess> RandomAccessListDelegate&lt;E, T> create(T delegate) {
    return new RandomAccessListDelegate<e , T>(delegate);
  }
  public T getDelegate() { return delegate; }
  // Delegate all methods to delegate
  // [code snipped]
}
</e></pre>
<p>Still, I shouldn&#8217;t have to jump this hoop.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
