RSSAmplifier

Blog

Andrea Leopardi

Writing about Elixir, system architecture, and more.

andrealeopardi.comRSS feed ↗20 posts

Latest posts

Elixir's GenStage Demand (a Visual Explainer)

Concurrency gives us more workers; demand tells us when to stop sending them work. This is what I want to point people to when we talk about "demand".

Redis Cluster Support, Without Writing Code

How I experimented with building support for Redis Cluster into Redix (Elixir's Redis client) without writing code, solely relying on AI tooling.

Counting Fast in Erlang with :counters and :atomics

Two BEAM escape hatches for counting fast—shared, mutable, off-heap integer arrays. How :atomics and :counters work, what they guarantee, and when to reach for each.

BEAM Metrics in ClickHouse

How we are periodically dumping metrics about our most demanding BEAM processes into an easy-to-query ClickHouse table.

Quantified Self • 2025

My own sort of "wrapped" for the 2025 year.

How to Async Tests in Elixir

It can be hard to keep tests asynchronous as Elixir applications grow in size and complexity. Let's see why, and explore fixes.

Tech I Use • 2024

Inspired by others doing this, here's a writeup of the things I use—mostly tech—2024 edition.

Reducing Compile-Time Dependencies in Gettext for Elixir

This is how we significantly improved compilation time for Elixir projects that use Gettext, using a few metaprogramming tricks and ten years of Elixir experience since we wrote the first version of this library.

Verifying JWTs from Apple's App Store

A quick walkthrough on how to verify JWTs coming from Apple's App Store APIs using Elixir.

A Breakdown of HTTP Clients in Elixir

This is an overview of the HTTP clients we have available in Elixir, as well as when to use each one.

Protohackers in Elixir

I'm publishing a new video series about network programming in Elixir, where I solve the networking puzzles on Protohackers.

Advent of Code 2022

An experiment in solving AoC 2022 with Rust and some AI (GitHub Copilot and OpenAI's ChatGPT).

Get Rid of Your Old Database Migrations

Are database migrations good? Probably, but are we using them in the right way? In this post, I write about how I think about migrations and what I'm doing to mitigate some of their shortcomings.

Testing AWS in Elixir

An overview of how we test Elixir applications that interact with AWS.

Example-based Tests And Property-based Tests Are Good Friends

A short look at mixing property-based tests and example-based tests to get the best of both worlds.

RPC over RabbitMQ (with Elixir)

A look into the RabbitMQ topology (exchanges, queues, bindings) and Elixir architecture that we use to perform RPCs over RabbitMQ.

Process pools with Elixir's Registry

A look at process pools and how to build routing pools (as opposed to checkout pools) using Elixir's built-in Registry.

Sharing Protobuf schemas across services

How we're managing, evolving, and sharing Protobuf schemas across several services and programming languages.

Persistent connections with gen_statem

How we can use the gen_statem behaviour to implement a resilient state machine that holds a connection to an external service.

A story of regret and retiring a library from Hex

I'm retiring a library of mine from Hex. I want to explain why.