Digests » 74

this week's favorite

How Supervisors Work

In Erlang (and Elixir) supervisors are processes which manage child processes and restart them when they crash. In this post we're going to take a look at the details of how supervisors are implemented. I had a rough idea of how these they worked, but I didn't understand the specifics. I felt like learning some stuff and figured I'd share it with you <3.

Elixir, Ruby, don’t fight. Talk.

Anyway, there are still a lot of things in Ruby world, that don’t exist in Elixir yet. To resolve that problem. I’ve done a research. Tried to figure it out if both worlds can talk to each other. And the answer is yes. They can. I’ll try to describe few ways how to do it.

Replacing GenEvent by a Supervisor + GenServer

The downsides of GenEvent have been extensively documented. For those reasons, the Elixir team has a long term plan of deprecating GenEvent. Meanwhile, we are introducing tools, such as Registry (upcoming on Elixir v1.4) and GenStage, which better address domains developers would consider using GenEvent for.

How to Capture All Errors Returned by a Function Call in Elixir

Elixir is an unusual language because it functions as a kind of a wrapper around another language. It utilizes Erlang and its rock solid libraries to build new concepts on top of it. Erlang is also different compared to what one may call usual or mainstream languages, e.g. Java, C++, Python, Ruby, etc. in that it’s a functional programming language, designed with distributed computing in mind.


Ecto adjacency list and tree traversal

Ecto adjacency list and tree traversal using CTEs. Arbor uses a parent_id field and CTEs to create simple deep tree-like SQL hierarchies.