<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Filipe Manana&#039;s blog</title>
	<atom:link href="http://fdmanana.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fdmanana.wordpress.com</link>
	<description>a technical blog</description>
	<lastBuildDate>Wed, 08 Dec 2010 18:50:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fdmanana.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Filipe Manana&#039;s blog</title>
		<link>http://fdmanana.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fdmanana.wordpress.com/osd.xml" title="Filipe Manana&#039;s blog" />
	<atom:link rel='hub' href='http://fdmanana.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Adding posix_fallocate to Erlang/OTP</title>
		<link>http://fdmanana.wordpress.com/2010/12/08/adding-posix_fallocate-to-erlangotp/</link>
		<comments>http://fdmanana.wordpress.com/2010/12/08/adding-posix_fallocate-to-erlangotp/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 18:50:28 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[OTP]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=179</guid>
		<description><![CDATA[posix_fallocate is a POSIX optional system call that allows to reserve space for a file. It guarantees that subsequent writes will not fail if the total written amount doesn&#8217;t exceed the allocated amount of space. Its big advantage is that when the space is allocated, the kernel tries to allocate contiguous disk blocks, which will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=179&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>posix_fallocate is a POSIX optional system call that allows to reserve space for a file. It guarantees that subsequent writes will not fail if the total written amount doesn&#8217;t exceed the allocated amount of space.</p>
<p>Its big advantage is that when the space is allocated, the kernel tries to allocate contiguous disk blocks, which will speed up IO operations.</p>
<p>It was recently submitted and accepted to Erlang/OTP:</p>
<p><a href="http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1716:201012:mdkoigfchoccmjhpglji#b">http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1716:201012:mdkoigfchoccmjhpglji#b</a></p>
<p><a href="https://github.com/erlang/otp/commit/ea3dfb992c769a7d47de1892284b125212d13179">https://github.com/erlang/otp/commit/ea3dfb992c769a7d47de1892284b125212d13179</a></p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/erlang/'>Erlang</a>, <a href='http://fdmanana.wordpress.com/category/otp/'>OTP</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=179&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/12/08/adding-posix_fallocate-to-erlangotp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>Purely Functional Data Structures</title>
		<link>http://fdmanana.wordpress.com/2010/10/05/purely-functional-data-structures/</link>
		<comments>http://fdmanana.wordpress.com/2010/10/05/purely-functional-data-structures/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 10:48:18 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[Functional programming]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=173</guid>
		<description><![CDATA[A good finding at google books, &#8220;Purely Functional Data Structures&#8221; by Chris Okasaki: Purely Functional Data Structures (Chris Okasaki) Now in my TOREAD list. Filed under: Algorithms, Functional programming<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=173&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A good finding at google books, &#8220;Purely Functional Data Structures&#8221; by Chris Okasaki:</p>
<p><a href="http://books.google.ca/books?id=SxPzSTcTalAC&amp;lpg=PP1&amp;dq=chris%20okasaki%20purely%20functional%20data%20structures&amp;pg=PP1#v=onepage&amp;q&amp;f=false">Purely Functional Data Structures (Chris Okasaki)</a></p>
<p>Now in my TOREAD list.</p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/algorithms/'>Algorithms</a>, <a href='http://fdmanana.wordpress.com/category/functional-programming/'>Functional programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=173&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/10/05/purely-functional-data-structures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>Streaming the body of HTTP POST/PUT requests with Erlang OTP</title>
		<link>http://fdmanana.wordpress.com/2010/09/27/streaming-the-body-of-http-postput-requests-with-erlang-otp/</link>
		<comments>http://fdmanana.wordpress.com/2010/09/27/streaming-the-body-of-http-postput-requests-with-erlang-otp/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 13:50:21 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[OTP]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=168</guid>
		<description><![CDATA[Yesterday I submitted a patch to the Erlang OTP erlang-patches mailing list to add a feature, to the httpc module, that has been lacking for a long time: Streaming the body of HTTP PUT and POST requests. It has just been merged into OTP&#8217;s pu branch: http://github.com/erlang/otp/commit/0ae050e3240f1aa68d8d648a36191246f33374b4 http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1483:201009:fcbeggiaekkjadoghldl#b Hopefully it will get into the next [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=168&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I submitted a patch to the Erlang OTP erlang-patches mailing list to add a feature, to the <a href="http://erlang.org/doc/man/httpc.html">httpc</a> module, that has been lacking for a long time:</p>
<p>Streaming the body of HTTP PUT and POST requests.</p>
<p>It has just been merged into OTP&#8217;s <b>pu</b> branch:</p>
<p><a href="http://github.com/erlang/otp/commit/0ae050e3240f1aa68d8d648a36191246f33374b4">http://github.com/erlang/otp/commit/0ae050e3240f1aa68d8d648a36191246f33374b4</a></p>
<p><a href="http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1483:201009:fcbeggiaekkjadoghldl#b"></p>
<p>http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1483:201009:fcbeggiaekkjadoghldl#b</a></p>
<p>Hopefully it will get into the next R14 release.</p>
<p><b>UPDATE:</b> A few days after I submitted another patch on top of that one:</p>
<p><a href="http://github.com/erlang/otp/commit/2809acda106cdd081746d2f2b7d4ddd8c96eff76">http://github.com/erlang/otp/commit/2809acda106cdd081746d2f2b7d4ddd8c96eff76</a></p>
<p><a href="http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1483:201009:fcbeggiaekkjadoghldl#b"></p>
<p>http://www.erlang.org/cgi-bin/ezmlm-cgi?3:sss:1483:201009:fcbeggiaekkjadoghldl#b</a></p>
<p>It adds support for automatically chunking (HTTP chunked Transfer-Encoding) the payload based on what the streaming function returns on each call.</p>
<p><b>UPDATE:</b> Did some simplifications to the implementation and API when it automatically adds chunked-transfer encoding headers. The new full patch:<br />
<a href="https://github.com/erlang/otp/commit/6ec259d2828ac44ee71c7b32392497ba1712ed48">https://github.com/erlang/otp/commit/6ec259d2828ac44ee71c7b32392497ba1712ed48</a></p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/erlang/'>Erlang</a>, <a href='http://fdmanana.wordpress.com/category/functional-programming/'>Functional programming</a>, <a href='http://fdmanana.wordpress.com/category/otp/'>OTP</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=168&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/09/27/streaming-the-body-of-http-postput-requests-with-erlang-otp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>The new SSL implementation in Erlang OTP</title>
		<link>http://fdmanana.wordpress.com/2010/09/24/the-new-ssl-implementation-in-erlang-otp/</link>
		<comments>http://fdmanana.wordpress.com/2010/09/24/the-new-ssl-implementation-in-erlang-otp/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 18:28:31 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[OTP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=158</guid>
		<description><![CDATA[Recently, I was trying the new SSL implementation of OTP. This new implementation appeared in the R12 series and is now the default one in R14. Unlike the &#8220;old&#8221; implementation, this one is mostly done in Erlang (instead of being basically a wrapper around the OpenSSL library) and only uses the cryptographic functions that the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=158&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently, I was trying the new SSL implementation of OTP. This new implementation appeared in the R12 series and is now the default one in R14. Unlike the &#8220;old&#8221; implementation, this one is mostly done in Erlang (instead of being basically a wrapper around the OpenSSL library) and only uses the cryptographic functions that the OpenSSL library provides.</p>
<p>The motivation to try it out, was that I was having often (but not very often) errors like the following from the &#8220;old&#8221; SSL implementation:</p>
<pre>
<code>
** {error,{badinfo,{tcp,#Port,
                        &lt;&lt;"\r\n6d\r\n,\n{\"seq\":70,\"id\":\"97b36d5003934d0c9dd58057b05fa167
\",\"changes\":[{\"rev\":\"1-0d6deda5b380ae207ba87a7a3a32d0a1\"}]}\r\n6d\r\n,\n{\"seq\":71,\"id\":
\"8a1c475b8dc5426e9172d6b970ae7c03\",\"changes\":[{\"rev
\":\"1-72851f645fb6ab77f36866cbe505d82c\"}]}\r\n6d\r\n,\n{\"seq\":72,\"id\":
\"fdb1d5b1c5b24ce481463ad668c13c40\",\"changes\":[{\"rev\":\"1-
c37b5444eec8375631c326a0e77ca427\"}]}\r\n6d\r\n,\n{\"seq\":73,\"id\":
\"b612465dafc44699b09d8bef5d4d4d8d\",\"changes\":[{\"rev\":\"1-
be951f78ba830f5a1002abe0ce479c2d\"}]}\r\n6d\r\n,\n{\"seq\":74,\"id\":
\"d2c2b5a771ef4b57b6d58fce2808cf7c\",\"changes\":[{\"rev\":\"1-
c628443ff4dd7c3d9b4fd226727e2841\"}]}\r\n6d\r\n,\n{\"seq\":75,\"id\":
\"8d669c377f08442981ce2d18a21d920b\",\"changes\":[{\"rev
\":\"1-6db3a14c76701b87b0686412093ac103\"}]}\r\n6d\r\n,\n{\"seq\":76,\"id\":
\"367bf0948d9d459582d187c9232844b8\",\"changes\":[{\"rev
\":\"1-16ae7cf1c04c4f7c024493de1f18c8ed\"}]}\r\n6d\r\n,\n{\"seq\":77,\"id\":
\"f2c805327ae740098e5db221c3f27b4b\",\"changes\":[{\"rev\":\"1-
b22aa541f7e353a4cd430a9293239c77\"}]}\r\n6d\r\n,\n{\"seq\":78,\"id\":
\"6ddf8033cec845c8986ee4bd03ff8ed6\",\"changes\":[{\"rev
\":\"1-23f5957d250f5079277e6e4a86def1f1\"}]}\r\n6d\r\n,\n{\"seq\":79,\"id\":
\"738365bd4fed44158516211847c13616\",\"changes\":[{\"rev
\":\"1-6dcd375366f107fb2575c8eda6c6bdec\"}]}\r\n6d\r\n,\n{\"seq\":80,\"id\":
\"2d66c797761b4506934d00b2fd260f90\",\"changes\":[{\"rev\":\"1-
cc7dddd31fd753a9b4577607ce321cef\"}]}\r\n6d\r\n,\n{\"seq\":81,\"id\":
\"0c01c012d4f540a3a015d57681a0af4f\",\"changes\":[{\"rev\":\"1-
ff288fbba546fbfbf78c602e2fa39ea2\"}]}\r\n6d\r\n,\n{\"seq\":82,\"id\":
\"dc8a7ff04d37428ea83c3515a801bd32\",\"changes\":[{\"rev\":\"1-2"&gt;&gt;}}}
</code>
</pre>
<p>(Yes, this was CouchDB related). So I tried the following code in OTP R13B03 and R13B04:</p>
<pre>
<code>
test() -&gt;
    Body = iolist_to_binary([
        "GET / HTTP/1.1\r\n",
        "Host: ", ?HOST, "\r\n",
        "Accept: */*\r\n",
        "Connection: close\r\n", "\r\n"
    ]),
    application:start(crypto),
    application:start(public_key),
    application:start(ssl),
    Options = [
                {ssl_imp, new},
                binary,
                {nodelay, true},
                {active, false},
                {verify, verify_peer},
                {depth, 3},
                {cacertfile, "/etc/ssl/certs/ca-certificates.crt"}
    ],
    {ok, S} = ssl:connect(?HOST, 443, Options),
    ok = ssl:send(S, Body),
    loop(S),
    ssl:close(S).

loop(S) -&gt;
    ssl:setopts(S, [{active, once}]),
    receive
    {ssl, S, Data} -&gt;
        io:format("received data:  ~p~n", [Data]),
        loop(S);
    {ssl_closed, S} -&gt;
        io:format("socket closed", []);
    {ssl_error, S, Error} -&gt;
        io:format("socket error:  ~p", [Error])
    end.
</code>
</pre>
<p>And I was getting the following stack trace when ssl:connect/3 was called:</p>
<pre>
<code>
=ERROR REPORT==== 17-Sep-2010::18:33:04 ===
SSL: 1056: error:{error,
                  {badmatch,
                   {error,
                    {asn1,
                     {'Type not compatible with table constraint',
                      {{badmatch,{error,{asn1,{wrong_tag,{5,16}}}}},
                       [{'OTP-PUB-KEY','dec_Dss-Parms',2},
                        {'OTP-PUB-KEY',dec_SignatureAlgorithm,2},
                        {'OTP-PUB-KEY',dec_OTPTBSCertificate,2},
                        {'OTP-PUB-KEY',dec_OTPCertificate,2},
                        {'OTP-PUB-KEY',decode,2},
                        {pubkey_cert_records,decode_cert,1},
                        {public_key,pkix_decode_cert,2},
                        {ssl_certificate_db,add_certs,3}]}}}}}} /etc/ssl/certs/ca-certificates.crt
  [{ssl_connection,init_certificates,2},
   {ssl_connection,ssl_init,2},
   {ssl_connection,init,1},
   {gen_fsm,init_it,6},
   {proc_lib,init_p_do_apply,3}]
</code>
</pre>
<p>I was finding it weird, since the trusted certificates files I was providing was in the PEM format (supported according to the man page) and it worked with the &#8220;old&#8221; SSL implementation.</p>
<p>I posted a message to the erlang-bugs mailing list reporting the issue, since it seemed to me that it was a regression:</p>
<p><a href="http://www.erlang.org/cgi-bin/ezmlm-cgi?2:sss:2031:201009:nkpigljldefpimkjppbn#b">http://www.erlang.org/cgi-bin/ezmlm-cgi?2:sss:2031:201009:nkpigljldefpimkjppbn#b</a></p>
<p>It turned out to be a true regression.<br />
Fortunatelly, Ingela Anderton Andin, from the OTP team, quickly responded and worked on a few patches against the R14B release that I tried out until it worked. Those patches are all available at her github account:  <a href="http://github.com/IngelaAndin">http://github.com/IngelaAndin</a></p>
<p>(I must say github is one of my favourite free services on the Web, congratulations to the creators and maintainers).</p>
<p>A special thanks to Ingela for her quick response.<br />
I squashed the relevant commits into a single patch to apply against R14B and it&#8217;s available here:</p>
<p><a href="http://gist.github.com/594325"></p>
<p>http://gist.github.com/594325</a></p>
<p>Since Ubuntu is using R13B03 and can not update to R14B so soon (it&#8217;s a very recent release and  besides desktopcouch/couchdb, they have other Erlang OTP dependents), <a href="http://twitter.com/sstatik/status/25400017336">I prepared them an equivalent patch to apply against R13B03</a> (the ssl and public_key code has quite a lot of diferences between R13 and R14), available in the following github gist:</p>
<p><a href="http://gist.github.com/594316">http://gist.github.com/594316</a></p>
<p>Also, as part of that same erlang-bugs thread, it was also proposed a suggestion for adding an extra possible value passed to the certificate validation chain function (option verify_fun) that allows for distinguishing between unknown CAs (not listed in the trusted certificates file) and certificates self-signed by the peer (something common in intranets). This because currently, as of R14B, the term <b>{bad_term, unknown_ca}</b> is used to signal both cases (unknown CA and self-signed ceritificate.</p>
<p>It turns out that the suggestion was accepted by the OTP team and is now available in development branches (will make it into the next OTP R14 series release):</p>
<p><a href="http://github.com/IngelaAndin/otp/commit/3962e4f5d7a496c32862b05eeab026837a6ff681">http://github.com/IngelaAndin/otp/commit/3962e4f5d7a496c32862b05eeab026837a6ff681</a></p>
<p>After that commit, an unknown CA error is still represented by the term <b>{bad_cert, unknown_ca}</b> and a self-signed certificate is now represented by the term <b>{bad_cert, selfsigned_peer}</b> (the &#8220;old&#8221; SSL implementation allowed to distinguish both cases as well).</p>
<p><b>Conclusion:</b></p>
<p>If you use the new SSL implementation (default on R14), don&#8217;t except to be able to use the certificates file in a Ubuntu system (and also in a <a href="http://distrowatch.com/table.php?distribution=caixamagica">Linux Caixa Mágica</a> system). You&#8217;ll have to apply one of those patches available in the gists mentioned above.</p>
<p>I&#8217;m a bit surprised that I was the first one finding and reporting this issue/regression.</p>
<p>A big thanks to <a href="http://github.com/IngelaAndin">Ingela Andin</a> from the OTP team for the quick response.</p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/couchdb/'>CouchDB</a>, <a href='http://fdmanana.wordpress.com/category/erlang/'>Erlang</a>, <a href='http://fdmanana.wordpress.com/category/otp/'>OTP</a>, <a href='http://fdmanana.wordpress.com/category/gnulinux/ubuntu/'>Ubuntu</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=158&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/09/24/the-new-ssl-implementation-in-erlang-otp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>List concatenation in Erlang</title>
		<link>http://fdmanana.wordpress.com/2010/09/02/list-concatenation-in-erlang/</link>
		<comments>http://fdmanana.wordpress.com/2010/09/02/list-concatenation-in-erlang/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:38:59 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Functional programming]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=148</guid>
		<description><![CDATA[Recently I looked at the myth that tells us that the list concatenation operator in Erlang is inefficient. This is mentioned at The Eight Myths of Erlang Performance section 2.4. The meaning of &#8220;inefficient&#8221; here is in comparison with other approaches. A common approach I see very often in Erlang code is: lists:flatten( [ List1, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=148&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I looked at the myth that tells us that the list concatenation operator in Erlang is inefficient.<br />
This is mentioned at <a href="http://www.erlang.org/doc/efficiency_guide/myths.html">The Eight Myths of Erlang Performance</a> section 2.4.</p>
<p>The meaning of &#8220;inefficient&#8221; here is in comparison with other approaches. A common approach I see very often in Erlang code is:</p>
<p>lists:flatten( [ List1, List2 ] )</p>
<p>I decided to write a little performance test that compares the following approaches:</p>
<ul>
<li>List1 ++ List2</li>
<li>lists:flatten( [ List1, List2 ] )</li>
<li>lists:append( List1, List2 )</li>
<li>lists:append( [ List1, List2 ] )</li>
</ul>
<p>The tests&#8217; code is:</p>
<pre>
<code>
-module(teste).
-compile(export_all).

-define(ITERS, 100).
-define(LIST_SIZE, 1000000).

concat_plus_plus(L1, L2) -&gt; L1 ++ L2.

run() -&gt;
    crypto:start(),

    {ok, T1, Dev1} = run_test(?ITERS, ?MODULE, concat_plus_plus, fun gen_args_2/0),
    io:format("Operator ++: ~p iterations, each list with ~p elements, "
        "average time of ~p milisecs, standard deviation: ~p~n",
        [?ITERS, ?LIST_SIZE, T1, Dev1]),

    {ok, T2, Dev2} = run_test(?ITERS, lists, flatten, fun gen_args_1/0),
    io:format("lists:flatten: ~p iterations, each list with ~p elements, "
        "average time of ~p milisecs, standard deviation: ~p~n",
        [?ITERS, ?LIST_SIZE, T2, Dev2]),

    {ok, T3, Dev3} = run_test(?ITERS, lists, append, fun gen_args_2/0),
    io:format("lists:append(L1, L2): ~p iterations, each list with ~p elements, "
        "average time of ~p milisecs, standard deviation: ~p~n",
        [?ITERS, ?LIST_SIZE, T3, Dev3]),

    {ok, T4, Dev4} = run_test(?ITERS, lists, append, fun gen_args_1/0),
    io:format("lists:append( [L1, L2] ): ~p iterations, each list with ~p elements, "
        "average time of ~p milisecs, standard deviation: ~p~n",
        [?ITERS, ?LIST_SIZE, T4, Dev4]).

run_test(Times, Mod, Fun, GenArgs) -&gt;
    Ts = lists:foldl(
        fun(_, Acc) -&gt;
           Args = GenArgs(),
           {T, _} = timer:tc(Mod, Fun, Args),
           [T | Acc]
        end,
        [], lists:seq(1, Times)),
    Avg = lists:sum(Ts) / length(Ts),
    {ok, round(Avg / 1000), round(std_dev(Ts, Avg) / 1000)}.

std_dev(Values, Avg) -&gt;
    Sums = lists:foldl(
        fun(V, Acc) -&gt; D = V - Avg, Acc + (D * D) end,
        0, Values),
    math:sqrt(Sums / (length(Values) - 1)).

gen_args_2() -&gt;
    L1 = binary_to_list(crypto:rand_bytes(?LIST_SIZE)),
    L2 = binary_to_list(crypto:rand_bytes(?LIST_SIZE)),
    [L1, L2].

gen_args_1() -&gt;
    L1 = binary_to_list(crypto:rand_bytes(?LIST_SIZE)),
    L2 = binary_to_list(crypto:rand_bytes(?LIST_SIZE)),
    [[L1, L2]].
</code>
</pre>
<p>Running the tests 3 times in a row:</p>
<pre>
<code>
Erlang R13B04 (erts-5.7.5)  [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.5  (abort with ^G)
1&gt; c(teste).
{ok,teste}
2&gt; teste:run().
Operator ++: 100 iterations, each list with 1000000 elements, average time of 32 milisecs,
standard deviation: 23
lists:flatten: 100 iterations, each list with 1000000 elements, average time of 138 milisecs,
standard deviation: 39
lists:append(L1, L2): 100 iterations, each list with 1000000 elements, average time of 59 milisecs,
standard deviation: 6
lists:append( [L1, L2] ): 100 iterations, each list with 1000000 elements, average time of 82 milisecs,
standard deviation: 18
ok
3&gt; teste:run().
Operator ++: 100 iterations, each list with 1000000 elements, average time of 66 milisecs,
standard deviation: 22
lists:flatten: 100 iterations, each list with 1000000 elements, average time of 151 milisecs,
standard deviation: 51
lists:append(L1, L2): 100 iterations, each list with 1000000 elements, average time of 34 milisecs,
standard deviation: 22
lists:append( [L1, L2] ): 100 iterations, each list with 1000000 elements, average time of 98 milisecs,s
tandard deviation: 38
ok
4&gt;
4&gt; teste:run().
Operator ++: 100 iterations, each list with 1000000 elements, average time of 35 milisecs,
standard deviation: 26
lists:flatten: 100 iterations, each list with 1000000 elements, average time of 155 milisecs,
standard deviation: 52
lists:append(L1, L2): 100 iterations, each list with 1000000 elements, average time of 63 milisecs,
standard deviation: 15
lists:append( [L1, L2] ): 100 iterations, each list with 1000000 elements, average time of 89 milisecs,
standard deviation: 34
ok
5&gt;
</code>
</pre>
<p>So in the end either the ++ operator or the lists:append function are the best approaches.</p>
<p>I&#8217;m wondering if this applies to Caml as well (operator @ versus functions in the List module).<br />
The <a href="http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html">List module man page for Caml</a> explicitily says that the implementation for the functions append, concat and flatten are not tail recursive. This gives me the idea that underneath they&#8217;re not implemented in C but in pure Caml.<br />
My Caml skills are now too rusty, and would need some time to write similar test code in Caml.<br />
Maybe I&#8217;ll do it for a future post.</p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/erlang/'>Erlang</a>, <a href='http://fdmanana.wordpress.com/category/functional-programming/'>Functional programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=148&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/09/02/list-concatenation-in-erlang/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>My CouchDB retrospective</title>
		<link>http://fdmanana.wordpress.com/2010/07/14/my-couchdb-retrospective/</link>
		<comments>http://fdmanana.wordpress.com/2010/07/14/my-couchdb-retrospective/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 22:58:34 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=136</guid>
		<description><![CDATA[This is a summary about how I got into the Apache CouchDB community. By late summer 2009, my friend Sérgio Veiga told me he was using Erlang for his job and how cool the language is as well as the Erlang OTP platform. He knew I was a fan of OCaml and Prolog back in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=136&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a summary about how I got into the Apache CouchDB community.</p>
<p>By late summer 2009, my friend <a href="http://sergioveiga.com/">Sérgio Veiga</a> told me he was using Erlang for his job and how cool the language is as well as the Erlang OTP platform. He knew I was a fan of OCaml and Prolog back in the academic years, and so I would immediately embrace Erlang.</p>
<p>I started by reading <a href="http://armstrongonsoftware.blogspot.com/">Joe Armstrong&#8217;s</a> book Programmning Erlang. Then I was thinking about creating some Erlang project but hadn&#8217;t ideas for creating something useful and original and I didn&#8217;t felt like porting some library or framework from some other language. So I decided to google for existing open source projects done in Erlang. Amongst the first I found was CouchDB.</p>
<p>Back then I was not familiar at all with NoSQL. The closest thing I knew about was probably memcached . At the moment my job was related to Java enterprise (J2EE, Spring, Hibernate, etc), so I immediately started to sympathize with CouchDB&#8217;s simplicity and base principles. I started to realize how unnecessarily complex (and counter productive) the Java enterprise + Oracle + Hibernate world is.</p>
<p>So I decided to start contributing to CouchDB. I started searching for the simplest tasks in the Apache Software Foundation&#8217;s issue tracking system (JIRA) just to get to know better CouchDB. <a href="https://issues.apache.org/jira/browse/COUCHDB-550">The first issue I tackled</a> was for Futon, the administration Web UI. This task only involved JavaScript, CSS and HTML. It very straightforward.</p>
<p>Afterwards I started looking into issues involving the Erlang side of CouchDB. The first JIRA issue involving Erlang that I solved was in fact a minor new feature for the CouchDB 0.11 release. <a href="https://issues.apache.org/jira/browse/COUCHDB-558">This issue</a> was a challenge at the time because it implied understanding the existing HTTP server layer code, some HTTP details I was not aware of (chunked transfer encoding, Content-MD5 header, content encodings) and the code for streaming attachments into a DB (forced me to learn how the core DB code words, the storage details). <a href="http://www.davispj.com/">Paul Davis</a> helped me improving the patch and getting it committed (thanks Paul). That feature also originated <a href="http://code.google.com/p/mochiweb/issues/detail?id=48">a small patch for the Mochiweb project</a>.</p>
<p>Those 2 patches (CouchDB ticket 558 and Mochiweb) were the first real Erlang code I ever wrote.</p>
<p>I then started looking for more (complex) issues to solve in their JIRA system and started following the development mailing list and the IRC channel. By far most of the contributions I gave were targeted at solving existing bugs or implementing features requested by the community. Bringing completely new ideas to the project was never easy, as I had never developed an application using CouchDB (not even today), yet I was able to contribute with code.</p>
<p>Last month I was elected committer and today Apache CouchDB 1.0.0 was released. For me it has been a very rewarding experience for 2 reasons: </p>
<ul>
<li>Technically I learned a LOT &#8211; from Erlang and OTP principles to an alternative paradigm for data modeling and  storage, many HTTP REST details and a new vision of JavaScript and its potential (<a href="http://couchapp.org/">CouchApps</a> and CouchDB related projects implemented with <a href="http://nodejs.org/">node.js</a>). This learning was not just a result from reading existing code and writing new code but it was also a result from the interaction with the committers and other developers.</li>
<p></p>
<li>The community. CouchDB&#8217;s community is very friendly, helpful and dedicated. This community has been growing fast.</li>
</ul>
<p>CouchDB is growing and taking a unique direction towards data modeling, replication and Web applications.</p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/couchdb/'>CouchDB</a>, <a href='http://fdmanana.wordpress.com/category/erlang/'>Erlang</a>, <a href='http://fdmanana.wordpress.com/category/javascript/'>JavaScript</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=136&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/07/14/my-couchdb-retrospective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>Embracing Concurrency at Scale</title>
		<link>http://fdmanana.wordpress.com/2010/06/24/embracing-concurrency-at-scale/</link>
		<comments>http://fdmanana.wordpress.com/2010/06/24/embracing-concurrency-at-scale/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 16:10:26 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[Distributed Systems]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=132</guid>
		<description><![CDATA[A very good talk about distributed systems and high concurrency given by Justin Sheehy: http://www.infoq.com/presentations/Embracing-Concurrency-At-Scale Filed under: Algorithms, Distributed Systems<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=132&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A very good talk about distributed systems and high concurrency given by Justin Sheehy:</p>
<p><a href="http://www.infoq.com/presentations/Embracing-Concurrency-At-Scale">http://www.infoq.com/presentations/Embracing-Concurrency-At-Scale</a></p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/algorithms/'>Algorithms</a>, <a href='http://fdmanana.wordpress.com/category/distributed-systems/'>Distributed Systems</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=132&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/06/24/embracing-concurrency-at-scale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>OAuth</title>
		<link>http://fdmanana.wordpress.com/2010/06/21/oauth/</link>
		<comments>http://fdmanana.wordpress.com/2010/06/21/oauth/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 22:45:42 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[networking]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=129</guid>
		<description><![CDATA[I&#8217;m now reading all (or most of) the OAuth implementation details: http://hueniverse.com/oauth/guide/ It was about time to read it&#8230; Filed under: networking, Security<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=129&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m now reading all (or most of) the OAuth implementation details:</p>
<p><a href="http://hueniverse.com/oauth/guide/">http://hueniverse.com/oauth/guide/</a></p>
<p>It was about time to read it&#8230;</p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/networking/'>networking</a>, <a href='http://fdmanana.wordpress.com/category/security/'>Security</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=129&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/06/21/oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>2 interesting articles</title>
		<link>http://fdmanana.wordpress.com/2010/06/16/2-interesting-articles/</link>
		<comments>http://fdmanana.wordpress.com/2010/06/16/2-interesting-articles/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 10:48:20 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=124</guid>
		<description><![CDATA[Today Wout Mertens sent a mail to CouchDB&#8217;s development mailing list pointing to 2 interesting articles: http://fdmanana.files.wordpress.com/2010/06/you_are_doing_it_wrong_server_performance.pdf and http://fdmanana.files.wordpress.com/2010/06/cache-oblivious-string-btrees.pdf Filed under: Articles<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=124&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today Wout Mertens sent a mail to CouchDB&#8217;s development mailing list pointing to 2 interesting articles:</p>
<p><a href="http://fdmanana.files.wordpress.com/2010/06/you_are_doing_it_wrong_server_performance.pdf">http://fdmanana.files.wordpress.com/2010/06/you_are_doing_it_wrong_server_performance.pdf</a></p>
<p>and</p>
<p><a href="http://fdmanana.files.wordpress.com/2010/06/cache-oblivious-string-btrees.pdf">http://fdmanana.files.wordpress.com/2010/06/cache-oblivious-string-btrees.pdf</a></p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/articles/'>Articles</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=124&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/06/16/2-interesting-articles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
		<item>
		<title>Combining Events and Threads for Scalable Network Services</title>
		<link>http://fdmanana.wordpress.com/2010/06/08/combining-events-and-threads-for-scalable-network-services/</link>
		<comments>http://fdmanana.wordpress.com/2010/06/08/combining-events-and-threads-for-scalable-network-services/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 20:59:19 +0000</pubDate>
		<dc:creator>fdmanana</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://fdmanana.wordpress.com/?p=116</guid>
		<description><![CDATA[Just found this interesting article: http://fdmanana.files.wordpress.com/2010/06/combining_events_and_threads.pdf Filed under: Articles<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=116&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just found this interesting article:</p>
<p><a href="http://fdmanana.files.wordpress.com/2010/06/combining_events_and_threads.pdf">http://fdmanana.files.wordpress.com/2010/06/combining_events_and_threads.pdf</a></p>
<br />Filed under: <a href='http://fdmanana.wordpress.com/category/articles/'>Articles</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fdmanana.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fdmanana.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fdmanana.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fdmanana.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fdmanana.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fdmanana.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fdmanana.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fdmanana.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fdmanana.wordpress.com&amp;blog=4095020&amp;post=116&amp;subd=fdmanana&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fdmanana.wordpress.com/2010/06/08/combining-events-and-threads-for-scalable-network-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2917e5688cd7ddb0b78e822a51b2179d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fdmanana</media:title>
		</media:content>
	</item>
	</channel>
</rss>
