[erlang-questions] What are the "Most valuable libraries?"...and a few other questions

Mike Oxford <>
Wed May 18 02:41:19 CEST 2011

On Tue, May 17, 2011 at 5:25 PM, Todd <> wrote:

> The whole "reply-all" debate has stirred me to ask some festering
> questions...
> 1. In general, what are the most valuable libraries to learn, both within
> the Erlang dist and external?

 OTP, gproc to start

> 2. Is there a consolidated/curated repository of libraries that is industry
> standard? I know the erlware folks have a repo...is that both a complete and
> accepted authoritative repo? From reading the list, it sounds like there's
> also a fair bit of stuff scattered about in github, too.

OTP is the industry standard

> 3. How does one easily multithread an app? For instance, there's pmap in
> clojure and something similar in akka that lets you map a function across a
> list, and it allocates threads accordingly...

You spawn more processes.  Erlang handles the SMP portion for you.  There is
some parallelization stuff available for Erlang as well, or roll your own.

> 4. Along that note, does anyone have any ideas as to how to tackle the
> Typesafe 'getting started tutorial?'


> 4b. Side note: is anyone concerned about Akka/Typesafe stealing mindshare?

Dif'rnt stroke fer dif'rnt folks.

> 5. How does one push an app such that it self instantiates it's processes
> across the cluster? I can see how OTP is great at managing an app on a
> single node, but how do you say something like: "create one of these
> processes on each node in the cluster, and restart 1-for-1 if they die"...
> or something similar. I see mention of gproc, but honestly, I don't see how
> to use it. Likewise, if nodes are added to the cluster, how would you ensure
> that the necessary processes are pushed to the new node after it joins the
> cluster?

Use spawn_link/2
spawn_link(Node, Fun) -> pid()

If you have the Pid for your remote supervisor you can just use
supervisor:start_link and give it the remote Pid, or Pid ! <msg> it.

> 6. How do you deploy and live code upgrade in real life? I've been looking
> at some of the work by the 'Dukes of Erl' ... is erlrc what folks commononly
> use?
No idea, I haven't gotten that far yet.  :)

> 7. Does anyone use dynamic load balancing of demand across a cluster (e.g.
> spinning up erlang processes to meet the demand curve?)

We do, to some extent.  We start with a pool and if we exceed that we go
dynamic.  Might be better to just go dynamic and save the shared-state

> 8. What's the best way to integrate w/ other code bases. In akka, you'd use
> camel as an integration bus. What are the common ways to integrate with
> erlang? Is that what ports and nifs are for? Forgive my ignorance, but I
> always considered those as simply ways to write code in a different, perhaps
> more comfortable language...not as integration mechanisms.

Ports and NIFs, yes.  Whether the integration is for performance,
functionality or preferences it's all the same: something external.

Also, I've continued to peck away at various newbie tutorials. Any
> comments/suggestions/corrections are welcome.

See #4.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110517/b8128500/attachment.html>

More information about the erlang-questions mailing list