Digests » 133

this week's favorite

Introduction to OTP, GenServers and Supervisors

In the previous articles, we have covered how to work with the processes in Elixir on a low level. We have also covered what kind of wrappers exist around processes. That can help us to avoid writing that low-level code. Yes, I am mentioning Agents and Tasks now. Now it’s time to get familiar with OTP and its features called GenServer and Supervisors. Let’s dive in.

Fast Full-text Search with Ecto and PostgreSQL

I recently built a full-text recipe search feature using Ecto and PostgreSQL for Mealthy.com. You can try it out there, if you like. I thought this was interesting enough to write up (with Mealthy's permission).

Designing scalable application with Elixir: from umbrella project to distributed system

Elixir/Erlang OTP abstractions enforce developers to split programs into independent parts. While “gen_servers” encapsulate parts of business logic on micro-level, “applications” present a more general (“service”) part of the system. Complex programs written in Elixir are always a collection of communicating OTP applications.

Quaff that potion: saving $millions with Elixir and Erlang

We slashed our DynamoDB costs by over 75% using Kinesis, DynamoDB streams, and Erlang/OTP (and now Elixir) to implement a global cache warming system. We present that system and two new open-source libraries for processing Kinesis and DynamoDB streams in a similar way using Elixir and Erlang.

Elixir port of NanoID, a secure and URL-friendly unique ID generator

Safe. It uses cryptographically strong random APIs and guarantees a proper distribution of symbols. Compact. It uses a larger alphabet than UUID (A-Za-z0-9_~) and has a similar number of unique IDs in just 21 symbols instead of 36.