Digests » 284

this week's favorite

Why, when and how to optimize your recursion

Sometimes you have to recursively iterate over a possibly too large set of data. Find out how to protect yourself from running out of memory.

Building a Custom Page for Phoenix Live Dashboard

One of the most interesting features provided by Phoenix Live Dashboard is the ability to define your own pages, so that you can quickly and reliably extend a Live Dashboard instance with sections that are tailored to your application domain.

Remote code execution in Elixir-based Paginator

In August of this year I found a remote code execution vulnerability in the Elixir-based Paginator open-source project from Duffel (a UK-based startup in the flight searching space). The vulnerability has the CVE number CVE-2020-15150 assigned. Since Duffel seemed to use Paginator for its own REST API it seems likely that an attacker exploiting this vulnerability would have been able to execute code on Duffel’s (cloud) assets.

The Road to the JIT

As long as Erlang has existed, there has always been the need and the ambition to make it faster. This blog post is a history lesson that outlines the major Erlang implementations and attempts to improve the performance of Erlang.

Learn By Example: Understanding the ampersand in Elixir

Seeing the ampersand for the first time in Elixir I wanted to dig deep into what it meant. The first & effectively either gets a reference to the original function or starts an anonymous function. Any ampersand after the first that references the positional argument passed to it. You could use this to write very concise anonymous functions.