# Erlang Programming Language

- Page: https://shared.btbytes.com/p/erlang
- Date: 2019-10-28

See also: [elixir](https://shared.btbytes.com/p/elixir) and gleam


## Concepts

- [ferd.ca -> The Zen of Erlang](http://ferd.ca/the-zen-of-erlang.html) [Feb 2016]
- [Erlang Scheduler Details and Why It Matters - Hamidreza Soleimani's Blog](https://hamidreza-s.github.io/erlang/scheduling/real-time/preemptive/migration/2016/02/09/erlang-scheduler-details.html) [Feb 2016]
- [Ode to Erlang](http://web.archive.org/web/20181220163129/https://pattern-match.com/blog/2018/12/11/ode-to-erlang/)
- [Elixir and The Beam: How Concurrency Really Works – Flatiron Labs – Medium](https://medium.com/flatiron-labs/elixir-and-the-beam-how-concurrency-really-works-3cc151cddd61)
- [The soul of Erlang](https://www.youtube.com/watch?v=JvBT4XBdoUE) by Sasa Juric (2019) which shows off the essence of the BEAM. <q>I think it might actually be _easier_ to inspect the BEAM over those other VMs. For one, it is much older and stable. And secondly, the BEAM has a lot of self-introspection features.</q> -- [via](https://news.ycombinator.com/item?id=38184807)

## Scalability

- [How scalable is Erlang?](https://www.quora.com/Just-how-scalable-is-the-Erlang-VM/answer/Ulf-Wiger?srid=557Y&share=1), quora answer by Ulf Winger. [Aug 2015]
- [Whatsapp server architecture](https://www.quora.com/What-is-WhatsApps-server-architecture/answer/Kah-Seng-Tay) [Sep 2014]

## Books / Learning Resouces

- [Spawned Shelter - the best articles, videos and books for learning Erlang, the internals of its virtual machine and other languages that run on top of it](http://spawnedshelter.com/)

- [happi/theBeamBook: A description of the Erlang Runtime System ERTS and the virtual Machine BEAM.](https://github.com/happi/theBeamBook)
- [Adopting Erlang](https://adoptingerlang.org/) is an ongoing effort to gather all the resources that will help you use Erlang in a business. The booksite is divided in three sections focusing particularly on Erlang/OTP’s higher level concepts in the current open source ecosystem, how to use it in production (while setting up a pipeline for continuous development and delivery), and how to build a team when you’re starting from scratch.

## Papers / videos

-   History of Erlang
-   Making Reliable Distributed Systems in the Presence of software errors - PhD thesis of Joe Armstrong
- [Greg Young - The art of destroying software on Vimeo](https://vimeo.com/108441214)

## Emacs

-   [Erlang mode for
    Emacs](http://www.erlang.org/doc/apps/tools/erlang_mode_chapter.html).
-   [Setup and usage
    notes](http://alexott.net/en/writings/emacs-devenv/EmacsErlang.html).

[John Daily](https://x.com/macintux)'s collection of [Erlang links](https://gist.github.com/macintux/6349828).

## Instruction

-   [Learn You Some Erlang](http://learnyousomeerlang.com)
-   [Joe Armstrong's Ph.D. thesis
    (PDF)](http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf)
-   [Introduction to Erlang blog
    series](http://trigonakis.com/blog/series/introduction-to-erlang/)
-   [The Architecture of Open Source Applications: Riak and
    Erlang/OTP](http://www.aosabook.org/en/riak.html)
-   [Getting Started with Erlang User's
    Guide](http://www.erlang.org/doc/getting_started/users_guide.html)
-   [OTP Design Principles User's
    Guide](http://www.erlang.org/doc/design_principles/users_guide.html)


## Documentation

-   [Official Erlang docs](http://erlang.org/doc/)
-   [Alternative presentation of Erlang docs](http://erldocs.com)

## Community


-   [Erlang Solutions](https://www.erlang-solutions.com)
-   [ErlangCentral](http://web.archive.org/web/20130325001904/http://erlangcentral.org/)
-   [Erlware](http://www.erlware.org)
-   [Planet Erlang](http://www.planeterlang.org)
-   [TrapExit (retired, frequently broken)](http://trapexit.org)

## Mailing lists

-   [Erlang
    questions](http://erlang.org/mailman/listinfo/erlang-questions)
-   [Erlang.org list of
    lists](http://www.erlang.org/static/doc/mailinglist.html)

## Advocacy

- [What can i only do in erlang?](http://erlang.org/pipermail/erlang-questions/2014-November/081570.html) / 2014-11-05
-   [Erlang is not a Concurrent Functional Programming
    Language](http://web.archive.org/web/20110526173057/http://www.javalimit.com/2011/05/erlang-is-not-a-concurrent-functional-programming-language.html)
-   [Systems that Run Forever Self-heal and Scale: Lambda Jam keynote by
    Joe
    Armstrong](http://www.infoq.com/presentations/self-heal-scalablesystem)
-   [Erlang's Open Telecom Platform (OTP) Framework: QCon talk by Steve
    Vinoski](http://www.infoq.com/presentations/Erlang-OTP-Behaviors)
-   [Erlang – A survey of the language and its industrial applications
    (PostScript)](http://www.erlang.se/publications/inap96.ps)


## Experience Reports

- [10 Lessons from Decade with Erlang – Erlang Battleground – Medium](https://medium.com/erlang-battleground/erlang-lessons-fe800c51af4f) Oct 2018.

## Style

-   [Solving Embarrassingly Obvious Problems In
    Erlang](http://www.gar1t.com/blog/2012/06/10/solving-embarrassingly-obvious-problems-in-erlang)
-   [More Embarrassingly Obvious
    Problems](http://www.gar1t.com/blog/2012/11/11/more-embarrassingly-obvious-problems/)
-   [Programming Rules and Conventions
    (incomplete)](http://www.erlang.se/doc/programming_rules.shtml)

## Libraries


-   [Kerl](https://github.com/spawngrid/kerl) is analogous to virtualenv
    in python
-   [Expm](http://expm.co/) is the package manager for Erlang and
    Elixir.
-   [distributerl - Building blocks for Erlang/OTP systems using distributed algorithms.](https://code.google.com/p/distributerl/)
- [Rebar3](http://www.rebar3.org/static/guide.html) -- build/distribute erlang apps.
- [recon](https://github.com/ferd) -- Collection of functions and scripts to debug Erlang in production. by [ferd](https://github.com/ferd); see other libs by him on GH.

## NIFs

- [Rustler - Safe Elixir and Erlang NIFs in Rust](http://hansihe.com/2017/02/05/rustler-safe-erlang-elixir-nifs-in-rust.html)

## Tools

- [How to analyse a BEAM core dump](https://www.erlang-solutions.com/blog/how-to-analyse-a-beam-core-dump.html) -- debugging by attaching GDB to a Erlang process.
- [ErlyBerly](https://github.com/andytill/erlyberly) -- Erlang visual tracing tool.


## Projects

- [GitHub Erlang repositories](https://github.com/search?l=Erlang&q=erlang&source=c&type=Repositories)
- [Comprehensive Erlang Archive Network (unclear if still active)](http://cean.process-one.net)
- [Project fifo](https://docs.project-fifo.net/) uses Erlang.

## Exercises


-   [Études for Erlang](http://chimera.labs.oreilly.com/books/1234000000726)
-   [Erlang Programming Exercises](http://www.erlang.org/course/exercises.html)


### General functional programming exercises

-   [Project Euler](http://projecteuler.net)
-   [Programming Praxis](http://programmingpraxis.com)
-   [Rosalind](http://rosalind.info/problems/list-view/)


## Alternative languages targeting the Erlang VM

-   [Joxa](http://joxa.org)
-   [Lisp-flavored Erlang (LFE)](http://lfe.github.io)
-   [Elixir](http://elixir-lang.org)

## Scheduling

- [How Erlang does scheduling | JLOUIS Ramblings](http://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html)

## Misc

- [Mostly Erlang (podcast)](http://mostlyerlang.com)
- [Erlang interviews and resources](http://pdincau.wordpress.com/category/erlang/)
- [John Daily's](https://x.com/macintux) [Erlang resources](https://gist.github.com/macintux/6349828)
- [Why Erlang Syntax is the way the it is](http://erlang.org/pipermail/erlang-questions/2015-December/087223.html)
- [BEAM VM Wisdoms 1.0 documentation](http://web.archive.org/web/20160909122645/http://beam-wisdoms.clau.se/en/latest/)

## Blogs

- [Joe Devivo](http://joedevivo.com/)
