<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: How to Use Concurrency to Improve Response Time in ErlyWeb Facebook Apps</title>
	<atom:link href="http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/feed/" rel="self" type="application/rss+xml" />
	<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/</link>
	<description>Adventures in Open Source Erlang</description>
	<pubDate>Fri, 16 May 2008 07:13:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: S</title>
		<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-90406</link>
		<dc:creator>S</dc:creator>
		<pubDate>Fri, 25 Jan 2008 04:31:50 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-90406</guid>
		<description>But python is not limited to OS thread! What about stackless and/or greenlets. Those do not cost as much as OS thread and do the same as erlang.</description>
		<content:encoded><![CDATA[<p>But python is not limited to OS thread! What about stackless and/or greenlets. Those do not cost as much as OS thread and do the same as erlang.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yariv</title>
		<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89577</link>
		<dc:creator>Yariv</dc:creator>
		<pubDate>Wed, 23 Jan 2008 06:00:40 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89577</guid>
		<description>@Igor It's not just the capabillity of spawning processes with few LOCs that makes Erlang interesting. It's also 1) the fact that those processes are very cheap and there's no scalability or performance risk in spawning them at request processing time (the same can't be said for OS threads, which Python and Java use -- Google "apache vs yaws" to see what I mean) and 2) the inherent safety in the Erlang concurrency model which guarantees that multiple threads would never try to modify the same data because all data is immutable. These two factors effectively give you a carte blanche for spawning as many processes as you want without worrying about artificial scalability bottlenecks and thorny concurrency issues.</description>
		<content:encoded><![CDATA[<p>@Igor It&#8217;s not just the capabillity of spawning processes with few LOCs that makes Erlang interesting. It&#8217;s also 1) the fact that those processes are very cheap and there&#8217;s no scalability or performance risk in spawning them at request processing time (the same can&#8217;t be said for OS threads, which Python and Java use &#8212; Google &#8220;apache vs yaws&#8221; to see what I mean) and 2) the inherent safety in the Erlang concurrency model which guarantees that multiple threads would never try to modify the same data because all data is immutable. These two factors effectively give you a carte blanche for spawning as many processes as you want without worrying about artificial scalability bottlenecks and thorny concurrency issues.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bryan</title>
		<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89528</link>
		<dc:creator>Bryan</dc:creator>
		<pubDate>Wed, 23 Jan 2008 01:59:15 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89528</guid>
		<description>Totally with you, Yariv.  Many actions that might take a lot of time, I've been spawning new processes for.  Updating Facebook profiles, or even just flushing content to the database - as long as I can show the user a reasonably consistent view (by leaving the in-memory data temporarily out of sync), I let those updates happen in the background.

@Igor:  Erlang *does* help with the failure cases.  Even beyond Kevin's note that inter-process communication is simple, Erlang also has a method for linking processes together, such that even if the background process dies unexpectedly, you can handle the failure in a live process that might know what to do about it.</description>
		<content:encoded><![CDATA[<p>Totally with you, Yariv.  Many actions that might take a lot of time, I&#8217;ve been spawning new processes for.  Updating Facebook profiles, or even just flushing content to the database - as long as I can show the user a reasonably consistent view (by leaving the in-memory data temporarily out of sync), I let those updates happen in the background.</p>
<p>@Igor:  Erlang *does* help with the failure cases.  Even beyond Kevin&#8217;s note that inter-process communication is simple, Erlang also has a method for linking processes together, such that even if the background process dies unexpectedly, you can handle the failure in a live process that might know what to do about it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Smith</title>
		<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89423</link>
		<dc:creator>Kevin Smith</dc:creator>
		<pubDate>Tue, 22 Jan 2008 21:32:56 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89423</guid>
		<description>@Igor - Making the async call reliable in a Java webapp is, I think, a fairly ugly proposition. Actually, I think its ugly in any language that doesn't have Erlang-like message passing semantics.

In one of these other languages, say you're off in another thread making FB call and Bad Things Happen. How do you propagate the failure back to correct owner? I know how to do that in Erlang - just send a message. Java or Python will require me to write more infrastructure to handle the failure correctly.</description>
		<content:encoded><![CDATA[<p>@Igor - Making the async call reliable in a Java webapp is, I think, a fairly ugly proposition. Actually, I think its ugly in any language that doesn&#8217;t have Erlang-like message passing semantics.</p>
<p>In one of these other languages, say you&#8217;re off in another thread making FB call and Bad Things Happen. How do you propagate the failure back to correct owner? I know how to do that in Erlang - just send a message. Java or Python will require me to write more infrastructure to handle the failure correctly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Igor</title>
		<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89395</link>
		<dc:creator>Igor</dc:creator>
		<pubDate>Tue, 22 Jan 2008 19:37:53 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89395</guid>
		<description>Most languages these days include capabilities for kicking off background threads. In Java it takes half a dozen lines of boilerplate code (the number of lines is testament to languages verbosity). Python is comparable to Erlang.

The hard problem is making it reliable. What happens if FB is not available. What about the case where machine running background task crashed? Does Erlang help with any of these?</description>
		<content:encoded><![CDATA[<p>Most languages these days include capabilities for kicking off background threads. In Java it takes half a dozen lines of boilerplate code (the number of lines is testament to languages verbosity). Python is comparable to Erlang.</p>
<p>The hard problem is making it reliable. What happens if FB is not available. What about the case where machine running background task crashed? Does Erlang help with any of these?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Harish Mallipeddi</title>
		<link>http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89308</link>
		<dc:creator>Harish Mallipeddi</dc:creator>
		<pubDate>Tue, 22 Jan 2008 11:28:54 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/01/22/how-to-use-concurrency-to-improve-response-time-in-erlyweb-facebook-apps/#comment-89308</guid>
		<description>Forget about being responsive, you absolutely have to make those profile FBML and newsfeed calls asynchronously because Facebook imposes very stringent timeout periods. I was implementing my app in Python/Django and had to resort to writing my own little daemon to handle these calls.</description>
		<content:encoded><![CDATA[<p>Forget about being responsive, you absolutely have to make those profile FBML and newsfeed calls asynchronously because Facebook imposes very stringent timeout periods. I was implementing my app in Python/Django and had to resort to writing my own little daemon to handle these calls.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
