
Stuff Goes Bad: Erlang in Anger (2016) - mutor
https://www.erlang-in-anger.com/
======
jlouis
Still a recommended book if you need to handle Erlang systems. Either as a
developer or as an operator.

* Still good if you work with Elixir

* Good if you have, say, RabbitMQ or Riak in your stack

* Fred knows his stuff.

~~~
sotojuan
Most great Erlang resources, like this and Designing for Scalability, are very
much recommended for Elixir programmers. It'd be a shame for them to disregard
some of the best OTP resources just because they're in Erlang.

~~~
polack
I'm going to go against the stream an say -1 on "Designing for Scalability".
Not that it isn't a good book, but the title doesn't really reflect the
contents. It's more of a beginners book on Erlang/OTP than of scalability.

~~~
derefr
Do you have a recommendation for a more advanced book on that particular
topic?

I'd also love to see something from the other angle: taking a program that's
already an instantiation of a complex, distributed architecture, written in
e.g. C, and then rewriting it in idiomatic Erlang (or Elixir—especially with
GenStage/Flow stuff) to reduce its code size while retaining the same
distributed-system properties as its ancestor system.

------
ishtu
Related: [http://spawnedshelter.com/](http://spawnedshelter.com/)

~~~
luketherrien
That is an awesome site. Does anyone know if there's a similar resource for
JavaScript that gives high and low level information about the language?

~~~
FLGMwt
There's a "thanks" section at the bottom that linked to
[http://superherojs.com/](http://superherojs.com/) which seems to be the same
thing for JS : )

------
okket
Previous discussions:

[https://news.ycombinator.com/item?id=8330501](https://news.ycombinator.com/item?id=8330501)
(3 years ago, 54 comments)

[https://news.ycombinator.com/item?id=8979267](https://news.ycombinator.com/item?id=8979267)
(3 years ago, 21 comments, dupe)

------
SomeStupidPoint
Erlang (even though I only use it via RabbitMQ) forever changed how I think of
reliable systems.

Hardware has always been a story of reliably operating unreliable parts. It
was eye-opening to see the same concepts applied to software.

Fail fast, fail early!

(Also, Erlang did a _really_ good job of lightweight threading, and how that
interlaces with things like a cluster of servers.)

~~~
whyever
> Hardware has always been a story of reliably operating unreliable parts. It
> was eye-opening to see the same concepts applied to software.

Walter Bright has been advocating this for some time:

[http://www.drdobbs.com/architecture-and-design/safe-
systems-...](http://www.drdobbs.com/architecture-and-design/safe-systems-from-
unreliable-parts/228701716)

~~~
igouy
[http://erlang.org/download/armstrong_thesis_2003.pdf](http://erlang.org/download/armstrong_thesis_2003.pdf)

See 2.10 Related work.

------
mac01021
[http://www.ldoceonline.com/dictionary/do-use-something-in-
an...](http://www.ldoceonline.com/dictionary/do-use-something-in-anger)

(I had never heard this idiom before)

~~~
twoquestions
I've heard it mostly in military contexts, like "That ship has never fired her
guns in anger", but otherwise not.

------
maxfurman
I don't use Erlang or Elixir but I love the idea of this book. Are there any
similar troubleshooting guides for other languages?

~~~
dmix
There is a book like this for Ruby (on Rails?) which I believe is the
inspiration for this Erlang book. I just can't seem to find it at the moment.

It was about improving old/legacy/poorly-built code bases that are in a bad
shape and need to be 'rescued'.

~~~
mononcqc
I have not read any Rails book ever and they could therefore not be the
inspiration for this one :)

The true rationale behind the book was to give a better tool to train new
coworkers that could help us operate the Erlang routing and logging stacks
back when I was still at Heroku, and at the same time to provide similarly
useful resources to other people maintaining similar software in the broader
community.

Most of the operational aspects of Erlang were a bit of black magic, knowing
where to dig through experience, having read the right kind of docs, and
everyone would carry little gists of incantations and anonymous functions to
run on production servers to help figure out what may be going oddly on there
by correctly prodding at the VM.

I wrote the 'recon' library along with Erlang in Anger so that instead of just
being black magic & oral tradition, people would have a better set of well-
encoded practices to help approach the debugging and optimization of running
systems.

~~~
dmix
Fair enough, the landing page and description just seemed similar to the one I
remember for Ruby, that's all. Although that was more about rescuing a project
rather than overcoming common barriers in a programming language.

Sounds like a great basis for an advanced programming book either way.

------
kaycebasques
Erlanger

