<?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 on: The Erlang Challenge</title>
	<atom:link href="http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/feed/" rel="self" type="application/rss+xml" />
	<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/</link>
	<description>Adventures in Open Source Erlang</description>
	<lastBuildDate>Sun, 06 Dec 2009 10:29:08 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: developers.hover.in &#187; Somethings to rejoice about</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-409249</link>
		<dc:creator>developers.hover.in &#187; Somethings to rejoice about</dc:creator>
		<pubDate>Mon, 18 May 2009 08:24:29 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-409249</guid>
		<description>[...] compared some techniques from many pmap implementations out there, and here are some [...]</description>
		<content:encoded><![CDATA[<p>[...] compared some techniques from many pmap implementations out there, and here are some [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SQL Tutorials</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-404169</link>
		<dc:creator>SQL Tutorials</dc:creator>
		<pubDate>Fri, 01 May 2009 02:37:19 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-404169</guid>
		<description>Does anyone know if there is another language or set of commands beside SQL for talking with databases? 

I&#039;m working on a project and am doing some research thanks</description>
		<content:encoded><![CDATA[<p>Does anyone know if there is another language or set of commands beside SQL for talking with databases? </p>
<p>I&#8217;m working on a project and am doing some research thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SQL Tutorials</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-404168</link>
		<dc:creator>SQL Tutorials</dc:creator>
		<pubDate>Fri, 01 May 2009 02:37:02 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-404168</guid>
		<description>You know, the thing about SQL is, that there is virtually nothing that can replace it. 

Does anyone know if a substitute exists for sql? I mean besides MS SQL and Oracle and all that jazz. Thanks.</description>
		<content:encoded><![CDATA[<p>You know, the thing about SQL is, that there is virtually nothing that can replace it. </p>
<p>Does anyone know if a substitute exists for sql? I mean besides MS SQL and Oracle and all that jazz. Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The (Unofficial) Erlang Blog &#187; Blog Archive &#187; Erlang Challenge Announced</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-100951</link>
		<dc:creator>The (Unofficial) Erlang Blog &#187; Blog Archive &#187; Erlang Challenge Announced</dc:creator>
		<pubDate>Sun, 17 Feb 2008 22:59:12 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-100951</guid>
		<description>[...] last week&#8217;s Arc release and subsequent Arc challenge, Yariv Sadan (ErlyWeb) has announced the Erlang Challenge. The goal is to design &amp; program an advanced &#8220;parallel map&#8221; function that can [...]</description>
		<content:encoded><![CDATA[<p>[...] last week&#8217;s Arc release and subsequent Arc challenge, Yariv Sadan (ErlyWeb) has announced the Erlang Challenge. The goal is to design &amp; program an advanced &#8220;parallel map&#8221; function that can [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martial</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-98011</link>
		<dc:creator>Martial</dc:creator>
		<pubDate>Mon, 11 Feb 2008 10:19:48 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-98011</guid>
		<description>I do like Erlang programming but the Smalltalk continuation-based solution with Seaside looks like the simpler way:
http://www.lukas-renggli.ch/blog/take-the-arc-challenge
Erlang has the advantage of low memory consumption and &#039;infinite&#039; scalability.</description>
		<content:encoded><![CDATA[<p>I do like Erlang programming but the Smalltalk continuation-based solution with Seaside looks like the simpler way:<br />
<a href="http://www.lukas-renggli.ch/blog/take-the-arc-challenge" rel="nofollow">http://www.lukas-renggli.ch/blog/take-the-arc-challenge</a><br />
Erlang has the advantage of low memory consumption and &#8216;infinite&#8217; scalability.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yariv&#8217;s Blog &#187; Blog Archive &#187; More Erlang Fun: Distributed, Fault Tolerant MapReduce</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-97847</link>
		<dc:creator>Yariv&#8217;s Blog &#187; Blog Archive &#187; More Erlang Fun: Distributed, Fault Tolerant MapReduce</dc:creator>
		<pubDate>Mon, 11 Feb 2008 02:13:05 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-97847</guid>
		<description>[...] the Erlang Challenge posting, I showed how to implement a simple distributed parallel map function. You can pass it a [...]</description>
		<content:encoded><![CDATA[<p>[...] the Erlang Challenge posting, I showed how to implement a simple distributed parallel map function. You can pass it a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yariv</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-97344</link>
		<dc:creator>Yariv</dc:creator>
		<pubDate>Sat, 09 Feb 2008 23:42:29 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-97344</guid>
		<description>@Bob There is a slight difference between the use of SpawnFun in this example and calling pmap(Fun, List, [node() &#124; nodes()]) -- in this example, if the list of nodes is not empty, the current node won&#039;t be included in the call to spawn(). Obviously it&#039;s not a very important difference -- when I designed the example, I was just trying to illustrate how in Erlang, spawning processes on remote VM&#039;s is as simple as spawning them on the local VM.

@wingedsubmariner I know about plists. It&#039;s great.</description>
		<content:encoded><![CDATA[<p>@Bob There is a slight difference between the use of SpawnFun in this example and calling pmap(Fun, List, [node() | nodes()]) &#8212; in this example, if the list of nodes is not empty, the current node won&#8217;t be included in the call to spawn(). Obviously it&#8217;s not a very important difference &#8212; when I designed the example, I was just trying to illustrate how in Erlang, spawning processes on remote VM&#8217;s is as simple as spawning them on the local VM.</p>
<p>@wingedsubmariner I know about plists. It&#8217;s great.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wingedsubmariner</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-96890</link>
		<dc:creator>wingedsubmariner</dc:creator>
		<pubDate>Fri, 08 Feb 2008 23:31:39 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-96890</guid>
		<description>I wrote a library to do this a while ago:

http://code.google.com/p/plists/

It will also parallelize many other operations. It supports proper error handling as well, trying to make itself as invisible as possible, while still not sending large lists across processes except when necessary (separate heaps == potential inefficiency). It&#039;s capable of autodetecting the number of of threads Erlang is configured to use on each node and to spawn that many processes -- effectively maxing out a machine.

It&#039;s over one thousand lines of code though, so it fails succinctness.</description>
		<content:encoded><![CDATA[<p>I wrote a library to do this a while ago:</p>
<p><a href="http://code.google.com/p/plists/" rel="nofollow">http://code.google.com/p/plists/</a></p>
<p>It will also parallelize many other operations. It supports proper error handling as well, trying to make itself as invisible as possible, while still not sending large lists across processes except when necessary (separate heaps == potential inefficiency). It&#8217;s capable of autodetecting the number of of threads Erlang is configured to use on each node and to spawn that many processes &#8212; effectively maxing out a machine.</p>
<p>It&#8217;s over one thousand lines of code though, so it fails succinctness.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xichekolas</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-96876</link>
		<dc:creator>Xichekolas</dc:creator>
		<pubDate>Fri, 08 Feb 2008 22:55:50 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-96876</guid>
		<description>@sjs: Ahhh, yeah. That makes total sense.</description>
		<content:encoded><![CDATA[<p>@sjs: Ahhh, yeah. That makes total sense.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Ippolito</title>
		<link>http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/comment-page-1/#comment-96839</link>
		<dc:creator>Bob Ippolito</dc:creator>
		<pubDate>Fri, 08 Feb 2008 21:57:04 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/articles/2008/02/08/the-erlang-challenge/#comment-96839</guid>
		<description>It seems most people are missing the fact that this will distribute the work over all nodes (usually nodes are run on different machines). The data parallel languages cited in the comments will do a great job of this too, almost certainly better than Erlang, but I believe that most of them will only do computation on the local machine.

The equivalent single-node pmap is for Erlang is short too, but less interesting (remove all but the last 3 statements, change SpawnFun to spawn, and remove Nodes from the argument list).

There isn&#039;t really a different method for process creation on the local node versus any other node. It looks like SpawnFun is just handling a case that it really doesn&#039;t need to (bad input). spawn(node(), F) would work just fine (node() is the local node). spawn(F) is just shorter to write, but it&#039;s not necessary.

Realistically you&#039;d probably call pmap(Fun, List, [node() &#124; nodes()]) which would distribute the computation over all nodes that the local node can see, including itself node. He could&#039;ve just as well checked for an empty Nodes and used [node()] instead.

As far as mailbox size goes, it depends on what you mean by &quot;properly&quot;. The answer is probably not -- this isn&#039;t an optimal pmap for very large lists due to that issue.</description>
		<content:encoded><![CDATA[<p>It seems most people are missing the fact that this will distribute the work over all nodes (usually nodes are run on different machines). The data parallel languages cited in the comments will do a great job of this too, almost certainly better than Erlang, but I believe that most of them will only do computation on the local machine.</p>
<p>The equivalent single-node pmap is for Erlang is short too, but less interesting (remove all but the last 3 statements, change SpawnFun to spawn, and remove Nodes from the argument list).</p>
<p>There isn&#8217;t really a different method for process creation on the local node versus any other node. It looks like SpawnFun is just handling a case that it really doesn&#8217;t need to (bad input). spawn(node(), F) would work just fine (node() is the local node). spawn(F) is just shorter to write, but it&#8217;s not necessary.</p>
<p>Realistically you&#8217;d probably call pmap(Fun, List, [node() | nodes()]) which would distribute the computation over all nodes that the local node can see, including itself node. He could&#8217;ve just as well checked for an empty Nodes and used [node()] instead.</p>
<p>As far as mailbox size goes, it depends on what you mean by &#8220;properly&#8221;. The answer is probably not &#8212; this isn&#8217;t an optimal pmap for very large lists due to that issue.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
