---
title: Andrea Leopardi
description: The personal website of Andrea Leopardi, with articles about Elixir, distributed systems, software platforms, testing, and system design.
canonical: https://andrealeopardi.com/
last-updated: 2026-08-24
---

# Andrea Leopardi

Andrea Leopardi is a software engineer from Italy. He works as a platform engineer at [Knock](https://knock.app) and has been a member of the [Elixir](https://elixir-lang.org) core team since 2016. His work focuses on Elixir, distributed systems, software platforms, testing, and system design.

He writes technical articles, teaches, and speaks at software events. He co-authored *Testing Elixir* and wrote *Network Programming in Elixir and Erlang*. This site is his public home for articles, teaching material, books, talks, travel notes, and open-source work.

## Site sections

- [Posts](https://andrealeopardi.com/posts/): Technical writing about Elixir and software systems
- [Teaching](https://andrealeopardi.com/teaching/): Livebooks, videos, and guides
- [Talks](https://youtube.com/playlist?list=PLd7I3U4fDsUJfNM-N7Kyss66gmml_OSDq): Conference talks and other videos
- [Books](https://andrealeopardi.com/books/): Books by Andrea
- [Uses](https://andrealeopardi.com/uses/): Hardware and software that Andrea uses
- [Travels](https://andrealeopardi.com/travels/): Places that Andrea visited
- [Now](https://andrealeopardi.com/now/): What Andrea is doing now

## Recent posts

- [Elixir's GenStage Demand (a Visual Explainer)](https://andrealeopardi.com/posts/genstage-demand-visualized/): 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](https://andrealeopardi.com/posts/redis-cluster-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](https://andrealeopardi.com/posts/erlang-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](https://andrealeopardi.com/posts/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](https://andrealeopardi.com/posts/quantified-self-2025/): My own sort of "wrapped" for the 2025 year.
- [How to Async Tests in Elixir](https://andrealeopardi.com/posts/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](https://andrealeopardi.com/posts/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](https://andrealeopardi.com/posts/refactoring-gettext-to-speed-up-compilation/): 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](https://andrealeopardi.com/posts/verifying-apple-jwts/): A quick walkthrough on how to verify JWTs coming from Apple's App Store APIs using Elixir.
- [A Breakdown of HTTP Clients in Elixir](https://andrealeopardi.com/posts/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.

## Contact

- [GitHub](https://github.com/whatyouhide)
- Email: hi@andrealeopardi.com
- RSS: https://andrealeopardi.com/feed.xml
