<?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 for matteo caprari</title>
	<atom:link href="http://couch.caprazzi.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://couch.caprazzi.net</link>
	<description></description>
	<lastBuildDate>Thu, 06 Oct 2011 01:42:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by AlexVD</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-199</link>
		<dc:creator>AlexVD</dc:creator>
		<pubDate>Thu, 06 Oct 2011 01:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-199</guid>
		<description>Thanks for this, it was just what i needed.</description>
		<content:encoded><![CDATA[<p>Thanks for this, it was just what i needed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by Darell17</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-198</link>
		<dc:creator>Darell17</dc:creator>
		<pubDate>Tue, 04 Oct 2011 07:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-198</guid>
		<description>Informative post on script!</description>
		<content:encoded><![CDATA[<p>Informative post on script!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Jan Burse</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-197</link>
		<dc:creator>Jan Burse</dc:creator>
		<pubDate>Mon, 05 Sep 2011 03:30:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-197</guid>
		<description>Strange that the compiler generates a valueOf(), it should now that the object has type string.</description>
		<content:encoded><![CDATA[<p>Strange that the compiler generates a valueOf(), it should now that the object has type string.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by Alexander Jeliuc</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-196</link>
		<dc:creator>Alexander Jeliuc</dc:creator>
		<pubDate>Mon, 15 Aug 2011 03:39:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-196</guid>
		<description>Thx for post!</description>
		<content:encoded><![CDATA[<p>Thx for post!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Anonymous</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-195</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 30 Jun 2011 10:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-195</guid>
		<description>Forax,
apparently the option has been there since  Java 6 Update 20. It would be interesting to see if the optimization happens during compile or JIT...

EDIT: javac does not accept that option, so it&#039;s sure a JIT optimization

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html</description>
		<content:encoded><![CDATA[<p>Forax,<br />
apparently the option has been there since  Java 6 Update 20. It would be interesting to see if the optimization happens during compile or JIT&#8230;</p>
<p>EDIT: javac does not accept that option, so it&#8217;s sure a JIT optimization</p>
<p><a href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html" rel="nofollow">http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by forax</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-194</link>
		<dc:creator>forax</dc:creator>
		<pubDate>Wed, 29 Jun 2011 17:01:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-194</guid>
		<description>The is a special VM optimization in JDK7 that recognizes StringBuilder/Buffer pattern and optimize it in order to create only one String if possible (see -XX:+OptimizeStringConcat)</description>
		<content:encoded><![CDATA[<p>The is a special VM optimization in JDK7 that recognizes StringBuilder/Buffer pattern and optimize it in order to create only one String if possible (see -XX:+OptimizeStringConcat)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Anonymous</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-193</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Wed, 29 Jun 2011 11:21:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-193</guid>
		<description>Hey Robert,
interesting observation:
Javadoc for java 1.4 says &quot;String concatenation is implemented through
the StringBuffer class and its append method&quot;
(http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html)
While in java 1.5 it&#039;s &quot;String concatenation is implemented through
the StringBuilder(or StringBuffer) class and its append method&quot; (I&#039;ve
updated the post)

It actually makes sense, as StringBuilder has been introduced as a
faster (non thread-safe) version of StringBuffer.

To answer your question, i  think it&#039;s likely the JIT compiler finds
an opportunity for optimization in a concat loop, but I have no idea
on how to go at testing this, other than disabling the JIT and
comparing the results. Seems to be good material for an other post!

Thanks!</description>
		<content:encoded><![CDATA[<p>Hey Robert,<br />
interesting observation:<br />
Javadoc for java 1.4 says &#8220;String concatenation is implemented through<br />
the StringBuffer class and its append method&#8221;<br />
(<a href="http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html" rel="nofollow">http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html</a>)<br />
While in java 1.5 it&#8217;s &#8220;String concatenation is implemented through<br />
the StringBuilder(or StringBuffer) class and its append method&#8221; (I&#8217;ve<br />
updated the post)</p>
<p>It actually makes sense, as StringBuilder has been introduced as a<br />
faster (non thread-safe) version of StringBuffer.</p>
<p>To answer your question, i  think it&#8217;s likely the JIT compiler finds<br />
an opportunity for optimization in a concat loop, but I have no idea<br />
on how to go at testing this, other than disabling the JIT and<br />
comparing the results. Seems to be good material for an other post!</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by robertmarkbram</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-192</link>
		<dc:creator>robertmarkbram</dc:creator>
		<pubDate>Wed, 29 Jun 2011 11:04:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-192</guid>
		<description>Nice post Matteo,

The Javadoc for String does say that  + is  implemented through the StringBuffer. I wonder if other JVMs do this too (IBM, Google)?

Also, I wonder if the above code gets optimised at all after a few hundred runs? (If there even is any optimisation possible.)

Rob
:)</description>
		<content:encoded><![CDATA[<p>Nice post Matteo,</p>
<p>The Javadoc for String does say that  + is  implemented through the StringBuffer. I wonder if other JVMs do this too (IBM, Google)?</p>
<p>Also, I wonder if the above code gets optimised at all after a few hundred runs? (If there even is any optimisation possible.)</p>
<p>Rob <img src='http://couch.caprazzi.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Anonymous</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-191</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Wed, 29 Jun 2011 10:34:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-191</guid>
		<description>Hi Christian,
I&#039;ve updated the post with your observation.

Thanks.</description>
		<content:encoded><![CDATA[<p>Hi Christian,<br />
I&#8217;ve updated the post with your observation.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Christian Ullenboom</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-190</link>
		<dc:creator>Christian Ullenboom</dc:creator>
		<pubDate>Wed, 29 Jun 2011 10:11:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-190</guid>
		<description>Too add 2 ideas: String has a contact() method which people often forget. And StringBuilder/StringBuffer has a constructor to initialize with a size for the internal buffer to prevent the char array from resizing if the size of segments are known.
</description>
		<content:encoded><![CDATA[<p>Too add 2 ideas: String has a contact() method which people often forget. And StringBuilder/StringBuffer has a constructor to initialize with a size for the internal buffer to prevent the char array from resizing if the size of segments are known.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Anonymous</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-189</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Tue, 28 Jun 2011 14:39:00 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-189</guid>
		<description>Anergy,
you&#039;re right, should be a StringBuilder. Thanks for spotting it.

-teo</description>
		<content:encoded><![CDATA[<p>Anergy,<br />
you&#8217;re right, should be a StringBuilder. Thanks for spotting it.</p>
<p>-teo</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java bytecode, string concatenation and StringBuilder by Anergy</title>
		<link>http://couch.caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/comment-page-1/#comment-184</link>
		<dc:creator>Anergy</dc:creator>
		<pubDate>Tue, 28 Jun 2011 09:54:22 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=684#comment-184</guid>
		<description>StringBuffer is wrong probably in second last code sample.</description>
		<content:encoded><![CDATA[<p>StringBuffer is wrong probably in second last code sample.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Evaluating relative speed of java digest (hashing) algorithms by John Laur</title>
		<link>http://couch.caprazzi.net/posts/evaluating-relative-speed-of-java-digest-hashing-algorithms/comment-page-1/#comment-180</link>
		<dc:creator>John Laur</dc:creator>
		<pubDate>Thu, 23 Jun 2011 21:14:53 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=672#comment-180</guid>
		<description>Personally I recommend using PBKDF2 with HMAC_SHA512, 10000 iterations, and 8 bytes of salt. There are various libraries for PBKDF2, but most do not allow you to choose a hash other than HMAC_SHA1 (it is both the default and the best choice of the algos in the official standard RFC2898; using HMAC_SHA512 is technically bending the rules). http://www.ietf.org/rfc/rfc2898.txt contains the standard. The only real tuning is the # of iterations which should be as high as your application can tolerate without ever going under 4000 or so. 

So if you are going for interoperability you can still go with HMAC_SHA1 and feel pretty good about it. This is the algorithm that is used to generate DK&#039;s for WPA2, so until you hear WPA2 is broken PBKDF2 with HMAC_SHA1 is still a safe bet.

To find an implementation example, just google for PBKDF2 + Your Language of Choice. I found a java one here http://www.rtner.de/software/PBKDF2.html and there is a javascript one here: http://anandam.name/pbkdf2/pbkdf2.js.txt if that is your use case.

Or there are OpenSSL bindings for most languages, and OpenSSL has the function PKCS5_PBKDF2_HMAC_SHA1

Most of these can be adapted to use a different hashing algorithm. Be sure you are not truncating the output of the hash function if possible as PBKDF2 allows for it to be of arbitrary length. HMAC_SHA1 is 20 bytes; HMAC_SHA512 is 64. Store the PBKDF2 parameters with the salt and hash - obscurity here is unnecessary. I use a format like:

$PBKDF2$HMACSHA512:10000:mV8wcrQOkeg=$od7tWGZOH4JxwNyXFDPY4DgSYmTbtWO5zgoX1LgufC036F/OuRethvnJ8PaJP56pqUCXV1ClBPHt/fCMroaE1A==

$$hashfunction:iterations:base64(salt)$base64(hash)

The above is the resultant enoding for the DK derived from &quot;toomanysecrets&quot; with a full 64 byte hash. Any hash of this format can be stored in a char(128) or similar. This hash takes about 0.15s of CPU time to compute with the implementation I used on decent hardware. This is about 6 hashes/second. By comparison your straight SHA512 was operating at about 32,000 hashes/second.</description>
		<content:encoded><![CDATA[<p>Personally I recommend using PBKDF2 with HMAC_SHA512, 10000 iterations, and 8 bytes of salt. There are various libraries for PBKDF2, but most do not allow you to choose a hash other than HMAC_SHA1 (it is both the default and the best choice of the algos in the official standard RFC2898; using HMAC_SHA512 is technically bending the rules). <a href="http://www.ietf.org/rfc/rfc2898.txt" rel="nofollow">http://www.ietf.org/rfc/rfc2898.txt</a> contains the standard. The only real tuning is the # of iterations which should be as high as your application can tolerate without ever going under 4000 or so. </p>
<p>So if you are going for interoperability you can still go with HMAC_SHA1 and feel pretty good about it. This is the algorithm that is used to generate DK&#8217;s for WPA2, so until you hear WPA2 is broken PBKDF2 with HMAC_SHA1 is still a safe bet.</p>
<p>To find an implementation example, just google for PBKDF2 + Your Language of Choice. I found a java one here <a href="http://www.rtner.de/software/PBKDF2.html" rel="nofollow">http://www.rtner.de/software/PBKDF2.html</a> and there is a javascript one here: <a href="http://anandam.name/pbkdf2/pbkdf2.js.txt" rel="nofollow">http://anandam.name/pbkdf2/pbkdf2.js.txt</a> if that is your use case.</p>
<p>Or there are OpenSSL bindings for most languages, and OpenSSL has the function PKCS5_PBKDF2_HMAC_SHA1</p>
<p>Most of these can be adapted to use a different hashing algorithm. Be sure you are not truncating the output of the hash function if possible as PBKDF2 allows for it to be of arbitrary length. HMAC_SHA1 is 20 bytes; HMAC_SHA512 is 64. Store the PBKDF2 parameters with the salt and hash &#8211; obscurity here is unnecessary. I use a format like:</p>
<p>$PBKDF2$HMACSHA512:10000:mV8wcrQOkeg=$od7tWGZOH4JxwNyXFDPY4DgSYmTbtWO5zgoX1LgufC036F/OuRethvnJ8PaJP56pqUCXV1ClBPHt/fCMroaE1A==</p>
<p>$$hashfunction:iterations:base64(salt)$base64(hash)</p>
<p>The above is the resultant enoding for the DK derived from &#8220;toomanysecrets&#8221; with a full 64 byte hash. Any hash of this format can be stored in a char(128) or similar. This hash takes about 0.15s of CPU time to compute with the implementation I used on decent hardware. This is about 6 hashes/second. By comparison your straight SHA512 was operating at about 32,000 hashes/second.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Evaluating relative speed of java digest (hashing) algorithms by Java bytecode, string concatenation and StringBuilder &#124; matteo caprari</title>
		<link>http://couch.caprazzi.net/posts/evaluating-relative-speed-of-java-digest-hashing-algorithms/comment-page-1/#comment-179</link>
		<dc:creator>Java bytecode, string concatenation and StringBuilder &#124; matteo caprari</dc:creator>
		<pubDate>Thu, 23 Jun 2011 09:09:01 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=672#comment-179</guid>
		<description>[...] matteo caprari       Skip to content Home        &#8592; Evaluating relative speed of java digest (hashing) algorithms [...]</description>
		<content:encoded><![CDATA[<p>[...] matteo caprari       Skip to content Home        &larr; Evaluating relative speed of java digest (hashing) algorithms [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Evaluating relative speed of java digest (hashing) algorithms by Matteo Caprari</title>
		<link>http://couch.caprazzi.net/posts/evaluating-relative-speed-of-java-digest-hashing-algorithms/comment-page-1/#comment-178</link>
		<dc:creator>Matteo Caprari</dc:creator>
		<pubDate>Thu, 23 Jun 2011 08:52:32 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=672#comment-178</guid>
		<description>Hi John!
Oh boy, the things that one doesn&#039;t know!
Do you have a link to share for an acceptable way of implementing password hashing? I&#039;d like to extend the post with some timings.

Thanks for commenting :)</description>
		<content:encoded><![CDATA[<p>Hi John!<br />
Oh boy, the things that one doesn&#8217;t know!<br />
Do you have a link to share for an acceptable way of implementing password hashing? I&#8217;d like to extend the post with some timings.</p>
<p>Thanks for commenting <img src='http://couch.caprazzi.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Evaluating relative speed of java digest (hashing) algorithms by John Laur</title>
		<link>http://couch.caprazzi.net/posts/evaluating-relative-speed-of-java-digest-hashing-algorithms/comment-page-1/#comment-177</link>
		<dc:creator>John Laur</dc:creator>
		<pubDate>Wed, 22 Jun 2011 17:44:32 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=672#comment-177</guid>
		<description>Matteo,

Hello!

I wanted to drop in to mention (if only for the sake of others who might read this) that for the specific use case of hashing passwords or decrypting a shared key for a stream cypher (passprhase) or similar situations, a salt+hash is actually a poor thing to do. The unfortunate effects of 30 years of fallout caused by seeing UNIX crypt() protect our most sensitive root passwords has unfortunately led many web developers into the trap of believing that salt+good hash is a reasonable storage mechanism. Consider the password breaches caused by recent exploits at Gawker, Sony, et al. -- all of this data stored salted and hashed passwords, but by the time news broke and actual data began leaking into the wild, most if not all the stored hashes had been broken.

Hashing functions are designed with two goals: 1) be as fast as possible and 2) minimize hash collisions. Salting prevents a precomputed (rainbow table) attack, but when a single modern GPU can roll through billions to trillions of possibilities per second in a brute-force attack, the &quot;strength&quot; of the hash is all but irrelevant. &quot;Better&quot; hashes are only needed to reduce the likelyhood of hash collision or eliminate flaws or weaknesses in earlier algorithms.

So it is in fact the speed of the algorithm which creates and verifies a hash, or rather the lack of it, that makes the most difference with regards to security. So unless one wants to perform a very deep dive into cryptographic theroy, the best approach is usually to code to a standard. The current most widely used method is to use PBKDF2 (RFC 2898) to produce and store a derived key instead of a simple hash. PBKDF2 allows the selection of a few parameters, mainly the salt length, the hash algorithm, and the number of iterations. I believe 64-bit salts, 2000 iterations, and HMAC_SHA256 are around the currently accepted minimums for &quot;strong.&quot; Of course the password requirements themselves must be decently designed to survive a dictionary attack or brute force attach which are still possible (though many orders of magnitude slower) .

If one wants to experiment, there are some alternatives which can be equally good if not better such as bcrypt and scrypt. But as they have not been subjected to as widespread use or scrutiny, often they are not great choices for projects that need to be autited, understood by many people, or need to be somewhat future-proof or portable. 

No matter what, it is all very interesting reading!</description>
		<content:encoded><![CDATA[<p>Matteo,</p>
<p>Hello!</p>
<p>I wanted to drop in to mention (if only for the sake of others who might read this) that for the specific use case of hashing passwords or decrypting a shared key for a stream cypher (passprhase) or similar situations, a salt+hash is actually a poor thing to do. The unfortunate effects of 30 years of fallout caused by seeing UNIX crypt() protect our most sensitive root passwords has unfortunately led many web developers into the trap of believing that salt+good hash is a reasonable storage mechanism. Consider the password breaches caused by recent exploits at Gawker, Sony, et al. &#8212; all of this data stored salted and hashed passwords, but by the time news broke and actual data began leaking into the wild, most if not all the stored hashes had been broken.</p>
<p>Hashing functions are designed with two goals: 1) be as fast as possible and 2) minimize hash collisions. Salting prevents a precomputed (rainbow table) attack, but when a single modern GPU can roll through billions to trillions of possibilities per second in a brute-force attack, the &#8220;strength&#8221; of the hash is all but irrelevant. &#8220;Better&#8221; hashes are only needed to reduce the likelyhood of hash collision or eliminate flaws or weaknesses in earlier algorithms.</p>
<p>So it is in fact the speed of the algorithm which creates and verifies a hash, or rather the lack of it, that makes the most difference with regards to security. So unless one wants to perform a very deep dive into cryptographic theroy, the best approach is usually to code to a standard. The current most widely used method is to use PBKDF2 (RFC 2898) to produce and store a derived key instead of a simple hash. PBKDF2 allows the selection of a few parameters, mainly the salt length, the hash algorithm, and the number of iterations. I believe 64-bit salts, 2000 iterations, and HMAC_SHA256 are around the currently accepted minimums for &#8220;strong.&#8221; Of course the password requirements themselves must be decently designed to survive a dictionary attack or brute force attach which are still possible (though many orders of magnitude slower) .</p>
<p>If one wants to experiment, there are some alternatives which can be equally good if not better such as bcrypt and scrypt. But as they have not been subjected to as widespread use or scrutiny, often they are not great choices for projects that need to be autited, understood by many people, or need to be somewhat future-proof or portable. </p>
<p>No matter what, it is all very interesting reading!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Where are generics stored in java compiled classes? by Bruno Windels</title>
		<link>http://couch.caprazzi.net/posts/where-are-generics-stored-in-java-compiled-classes/comment-page-1/#comment-174</link>
		<dc:creator>Bruno Windels</dc:creator>
		<pubDate>Fri, 01 Apr 2011 21:47:11 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=614#comment-174</guid>
		<description>There is also a pretty good description of the signature attribute in spec pdf of JSR14, The JSR that describes the implementation of generics in Java.

http://www.jcp.org/aboutJava/communityprocess/review/jsr014/

Great article!</description>
		<content:encoded><![CDATA[<p>There is also a pretty good description of the signature attribute in spec pdf of JSR14, The JSR that describes the implementation of generics in Java.</p>
<p><a href="http://www.jcp.org/aboutJava/communityprocess/review/jsr014/" rel="nofollow">http://www.jcp.org/aboutJava/communityprocess/review/jsr014/</a></p>
<p>Great article!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Where are generics stored in java compiled classes? by Where are generics stored in java compiled classes? &#124; matteo caprari &#124; java</title>
		<link>http://couch.caprazzi.net/posts/where-are-generics-stored-in-java-compiled-classes/comment-page-1/#comment-144</link>
		<dc:creator>Where are generics stored in java compiled classes? &#124; matteo caprari &#124; java</dc:creator>
		<pubDate>Thu, 24 Feb 2011 19:13:47 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=614#comment-144</guid>
		<description>[...] więcej: Where are generics stored in java compiled classes? &#124; matteo caprari   cast-instructions, compiler-, generics-were, idea, learning-some, other-things, see-how, [...]</description>
		<content:encoded><![CDATA[<p>[...] więcej: Where are generics stored in java compiled classes? | matteo caprari   cast-instructions, compiler-, generics-were, idea, learning-some, other-things, see-how, [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Matteo Caprari</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-134</link>
		<dc:creator>Matteo Caprari</dc:creator>
		<pubDate>Sat, 08 May 2010 22:51:46 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-134</guid>
		<description>@JeroenPulles E4X seems sexy, but have yet to dive into it. Thanks for the hint.</description>
		<content:encoded><![CDATA[<p>@JeroenPulles E4X seems sexy, but have yet to dive into it. Thanks for the hint.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Jeroen Pulles</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-133</link>
		<dc:creator>Jeroen Pulles</dc:creator>
		<pubDate>Thu, 29 Apr 2010 11:40:46 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-133</guid>
		<description>that should have been: 
var r = &lt;rect x={x} y={10 * offset} /&gt;;</description>
		<content:encoded><![CDATA[<p>that should have been:<br />
var r = &lt;rect x={x} y={10 * offset} /&gt;;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Jeroen Pulles</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-132</link>
		<dc:creator>Jeroen Pulles</dc:creator>
		<pubDate>Thu, 29 Apr 2010 11:34:12 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-132</guid>
		<description>Super, just what I needed. Your javascript backend probably also supports E4X, which makes working with XML much easier: 

var r = ;

r.@width = 100;

r.toXMLString();</description>
		<content:encoded><![CDATA[<p>Super, just what I needed. Your javascript backend probably also supports E4X, which makes working with XML much easier: </p>
<p>var r = ;</p>
<p>r.@width = 100;</p>
<p>r.toXMLString();</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on openid authentication handler for couchdb by Ed</title>
		<link>http://couch.caprazzi.net/posts/openid-authentication-handler-for-couchdb/comment-page-1/#comment-131</link>
		<dc:creator>Ed</dc:creator>
		<pubDate>Mon, 29 Mar 2010 03:36:24 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=496#comment-131</guid>
		<description>Hi Matteo,

This looks very interesting.. But can you give some specifics on which version of couchdb this has been tested with..  I have tried it with trunk (0.12) and 0.11.0 with no luck..  I keep getting the following error: {&quot;error&quot;:&quot;unknown_error&quot;,&quot;reason&quot;:&quot;function_clause&quot;} which I think may be related to my defaults/local.ini so posting you ini file would also be usefull..

Thanks</description>
		<content:encoded><![CDATA[<p>Hi Matteo,</p>
<p>This looks very interesting.. But can you give some specifics on which version of couchdb this has been tested with..  I have tried it with trunk (0.12) and 0.11.0 with no luck..  I keep getting the following error: {&#8220;error&#8221;:&#8221;unknown_error&#8221;,&#8221;reason&#8221;:&#8221;function_clause&#8221;} which I think may be related to my defaults/local.ini so posting you ini file would also be usefull..</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure: managing dependencies and compiling by Apphacker</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-managing-dependencies-and-compiling/comment-page-1/#comment-47</link>
		<dc:creator>Apphacker</dc:creator>
		<pubDate>Mon, 28 Dec 2009 23:48:39 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=154#comment-47</guid>
		<description>I found your explanation a little incomplete and unworkable. I filled in some holes on my own post:

http://blog.apphackers.com/2009/12/28/howto-how-to-use-goog-require-and-goog-provide-for-your-own-code/</description>
		<content:encoded><![CDATA[<p>I found your explanation a little incomplete and unworkable. I filled in some holes on my own post:</p>
<p><a href="http://blog.apphackers.com/2009/12/28/howto-how-to-use-goog-require-and-goog-provide-for-your-own-code/" rel="nofollow">http://blog.apphackers.com/2009/12/28/howto-how-to-use-goog-require-and-goog-provide-for-your-own-code/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CYZ_RGB alpha &#8211; blinkm alternative firmware by Anton Eliasson</title>
		<link>http://couch.caprazzi.net/posts/cyz_rgb-alpha-blinkm-alternative-firmware/comment-page-1/#comment-39</link>
		<dc:creator>Anton Eliasson</dc:creator>
		<pubDate>Mon, 21 Dec 2009 23:17:28 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=3#comment-39</guid>
		<description>I would like to report a small bug in the firmware (rev 289).
usiTwi/UsiTwiMaster.h must be renamed to usiTwiMaster.h (lowercase u) or otherwise it won&#039;t compile on Linux, since it&#039;s case-sensitive. Unfortunately I don&#039;t know subversion well enough to correct this myself so I&#039;m leaving it to you. You should also be aware that there&#039;s an error in the BlinkM datasheet, rev 20081101. In the schematic on page 40, pin 2 &amp; 3 on the attiny45 are swapped (red &amp; green leds). I&#039;ve already mailed them about this so hopefully it will be corrected in the next revision of the datasheet. Good luck with the project.

Regards,
Anton Eliasson</description>
		<content:encoded><![CDATA[<p>I would like to report a small bug in the firmware (rev 289).<br />
usiTwi/UsiTwiMaster.h must be renamed to usiTwiMaster.h (lowercase u) or otherwise it won&#8217;t compile on Linux, since it&#8217;s case-sensitive. Unfortunately I don&#8217;t know subversion well enough to correct this myself so I&#8217;m leaving it to you. You should also be aware that there&#8217;s an error in the BlinkM datasheet, rev 20081101. In the schematic on page 40, pin 2 &amp; 3 on the attiny45 are swapped (red &amp; green leds). I&#8217;ve already mailed them about this so hopefully it will be corrected in the next revision of the datasheet. Good luck with the project.</p>
<p>Regards,<br />
Anton Eliasson</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Matteo Caprari</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-30</link>
		<dc:creator>Matteo Caprari</dc:creator>
		<pubDate>Mon, 14 Dec 2009 16:42:02 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-30</guid>
		<description>Glad to hear that.

If you feel like sharing your charting stuff, drop a line :)</description>
		<content:encoded><![CDATA[<p>Glad to hear that.</p>
<p>If you feel like sharing your charting stuff, drop a line <img src='http://couch.caprazzi.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Per Ejeklint</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-29</link>
		<dc:creator>Per Ejeklint</dc:creator>
		<pubDate>Mon, 14 Dec 2009 15:14:11 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-29</guid>
		<description>Hey, great post! And the timing couldn&#039;t be better, I&#039;m putting together some charting myself (using the sweet gRaphaël library) and the view function you wrote was just what was missing. Thanks!</description>
		<content:encoded><![CDATA[<p>Hey, great post! And the timing couldn&#8217;t be better, I&#8217;m putting together some charting myself (using the sweet gRaphaël library) and the view function you wrote was just what was missing. Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Pete Hodgson</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-24</link>
		<dc:creator>Pete Hodgson</dc:creator>
		<pubDate>Sat, 12 Dec 2009 02:11:12 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-24</guid>
		<description>Really interesting post for a new couchdb user like myself. This clearly demonstrates a nice use case for group_level. It was also fun to see such an elegant use of SVG to render the data.</description>
		<content:encoded><![CDATA[<p>Really interesting post for a new couchdb user like myself. This clearly demonstrates a nice use case for group_level. It was also fun to see such an elegant use of SVG to render the data.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by Adam Kocoloski</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-23</link>
		<dc:creator>Adam Kocoloski</dc:creator>
		<pubDate>Thu, 10 Dec 2009 22:22:23 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-23</guid>
		<description>Hey, cool stuff!  I was wondering about this just the other day.</description>
		<content:encoded><![CDATA[<p>Hey, cool stuff!  I was wondering about this just the other day.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on generating SVG charts with couchdb by cirpo</title>
		<link>http://couch.caprazzi.net/posts/charting-data-with-couchdb/comment-page-1/#comment-22</link>
		<dc:creator>cirpo</dc:creator>
		<pubDate>Thu, 10 Dec 2009 21:52:32 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/posts/charting-data-with-couchdb/#comment-22</guid>
		<description>awesome!
Thanks for sharing! I have nothing specific to say about your post because i&#039;m not into couchdb yet, but it looks very  promising.
I&#039;ll surely give it a try during christmas holiday.

cirpo ...Waiting for your next post... :D</description>
		<content:encoded><![CDATA[<p>awesome!<br />
Thanks for sharing! I have nothing specific to say about your post because i&#8217;m not into couchdb yet, but it looks very  promising.<br />
I&#8217;ll surely give it a try during christmas holiday.</p>
<p>cirpo &#8230;Waiting for your next post&#8230; <img src='http://couch.caprazzi.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by Google Closure: 糟糕的JavaScript &#8211; ALuan</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-11</link>
		<dc:creator>Google Closure: 糟糕的JavaScript &#8211; ALuan</dc:creator>
		<pubDate>Mon, 30 Nov 2009 15:54:14 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-11</guid>
		<description>[...] Learning Closure with goog.net [...]</description>
		<content:encoded><![CDATA[<p>[...] Learning Closure with goog.net [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by Google Closure: 糟糕的JavaScript &#8211; JS More</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-9</link>
		<dc:creator>Google Closure: 糟糕的JavaScript &#8211; JS More</dc:creator>
		<pubDate>Fri, 27 Nov 2009 09:48:06 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-9</guid>
		<description>[...] Learning Closure with goog.net [...]</description>
		<content:encoded><![CDATA[<p>[...] Learning Closure with goog.net [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CYZ_RGB alpha 2 &#8211; feature complete by Enkel</title>
		<link>http://couch.caprazzi.net/posts/cyz_rgb-alpha-2-feature-complete/comment-page-1/#comment-7</link>
		<dc:creator>Enkel</dc:creator>
		<pubDate>Mon, 23 Nov 2009 23:32:48 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=5#comment-7</guid>
		<description>Hi Matteo, I&#039;m having some trouble using your firmware. I&#039;ve built the board using an attiny45v and uploaded the firmware on the chip.
Then the red LED goes on and nothing happens. I&#039;ve tried to use the examples on the blinkM page (the blinkMTester for Arduino actually), but it doesn&#039;t work at all. 
I&#039;ve tried it with pull up resistors and also without, but neither way I get any reply from the blink.
Do you have any test software for Arduino that I can use to check the function of the device?
Thank you in advance,
E.</description>
		<content:encoded><![CDATA[<p>Hi Matteo, I&#8217;m having some trouble using your firmware. I&#8217;ve built the board using an attiny45v and uploaded the firmware on the chip.<br />
Then the red LED goes on and nothing happens. I&#8217;ve tried to use the examples on the blinkM page (the blinkMTester for Arduino actually), but it doesn&#8217;t work at all.<br />
I&#8217;ve tried it with pull up resistors and also without, but neither way I get any reply from the blink.<br />
Do you have any test software for Arduino that I can use to check the function of the device?<br />
Thank you in advance,<br />
E.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by Getting Closure: Don&#8217;t just use it, don&#8217;t just abuse it on Dion Almaer's Blog</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-5</link>
		<dc:creator>Getting Closure: Don&#8217;t just use it, don&#8217;t just abuse it on Dion Almaer's Blog</dc:creator>
		<pubDate>Mon, 23 Nov 2009 16:03:01 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-5</guid>
		<description>[...] Learning Closure with goog.net [...]</description>
		<content:encoded><![CDATA[<p>[...] Learning Closure with goog.net [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Learning Closure. Ajax with goog.net.* by cirpo</title>
		<link>http://couch.caprazzi.net/posts/learning-closure-ajax-with-goog-net/comment-page-1/#comment-4</link>
		<dc:creator>cirpo</dc:creator>
		<pubDate>Thu, 12 Nov 2009 09:51:14 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=51#comment-4</guid>
		<description>http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/</description>
		<content:encoded><![CDATA[<p><a href="http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/" rel="nofollow">http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on book: forms that work by Caroline Jarrett</title>
		<link>http://couch.caprazzi.net/posts/book-forms-that-work/comment-page-1/#comment-3</link>
		<dc:creator>Caroline Jarrett</dc:creator>
		<pubDate>Sat, 24 Oct 2009 14:23:48 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=16#comment-3</guid>
		<description>Glad to hear that you find our book useful.&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Caroline Jarrett</description>
		<content:encoded><![CDATA[<p>Glad to hear that you find our book useful.</p>
<p>Best regards<br />Caroline Jarrett</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CYZ_RGB alpha &#8211; blinkm alternative firmware by bbeagle</title>
		<link>http://couch.caprazzi.net/posts/cyz_rgb-alpha-blinkm-alternative-firmware/comment-page-1/#comment-2</link>
		<dc:creator>bbeagle</dc:creator>
		<pubDate>Tue, 09 Jun 2009 00:02:59 +0000</pubDate>
		<guid isPermaLink="false">http://caprazzi.net/?p=3#comment-2</guid>
		<description>I am building a prototype version of the an RGB LED controller (just to play around with) similar to the BlinkM to try your version of the code. I downloaded your source to try and build it myself. I have not looked at your code yet, and I am not a great AVR coder myself, but if I see anything I can help with I will let you know. I think I may need the &quot;fuse&quot; settings  to program the code into a blank ATtiny45 or ATtiny85. Can you add the fuse setting to you source .zip file.&lt;br /&gt;Unlike the PIC controllers, the fuse settings are not in the source files I believe and I do not think they are in the makefile either.&lt;br /&gt;&lt;br /&gt;Thanks for your work&lt;br /&gt;Darrell</description>
		<content:encoded><![CDATA[<p>I am building a prototype version of the an RGB LED controller (just to play around with) similar to the BlinkM to try your version of the code. I downloaded your source to try and build it myself. I have not looked at your code yet, and I am not a great AVR coder myself, but if I see anything I can help with I will let you know. I think I may need the &quot;fuse&quot; settings  to program the code into a blank ATtiny45 or ATtiny85. Can you add the fuse setting to you source .zip file.<br />Unlike the PIC controllers, the fuse settings are not in the source files I believe and I do not think they are in the makefile either.</p>
<p>Thanks for your work<br />Darrell</p>
]]></content:encoded>
	</item>
</channel>
</rss>

