posts

25 entries
Elixir's GenStage Demand (a Visual Explainer)Concurrency gives us more workers; demand tells us when to stop sending them work. This is…Redis Cluster Support, Without Writing CodeHow I experimented with building support for Redis Cluster into Redix (Elixir's Redis clie…Counting Fast in Erlang with :counters and :atomicsTwo BEAM escape hatches for counting fast—shared, mutable, off-heap integer arrays. How :a…BEAM Metrics in ClickHouseHow we are periodically dumping metrics about our most demanding BEAM processes into an ea…Quantified Self • 2025My own sort of "wrapped" for the 2025 year.How to Async Tests in ElixirIt can be hard to keep tests asynchronous as Elixir applications grow in size and complexi…Tech I Use • 2024Inspired by others doing this, here's a writeup of the things I use—mostly tech—2024 editi…Reducing Compile-Time Dependencies in Gettext for ElixirThis is how we significantly improved compilation time for Elixir projects that use Gettex…Verifying JWTs from Apple's App StoreA quick walkthrough on how to verify JWTs coming from Apple's App Store APIs using Elixir.A Breakdown of HTTP Clients in ElixirThis is an overview of the HTTP clients we have available in Elixir, as well as when to us…Protohackers in ElixirI'm publishing a new video series about network programming in Elixir, where I solve the n…Advent of Code 2022An experiment in solving AoC 2022 with Rust and some AI (GitHub Copilot and OpenAI's ChatG…Get Rid of Your Old Database MigrationsAre database migrations good? Probably, but are we using them in the right way? In this po…Testing AWS in ElixirAn overview of how we test Elixir applications that interact with AWS.Example-based Tests And Property-based Tests Are Good FriendsA short look at mixing property-based tests and example-based tests to get the best of bot…RPC over RabbitMQ (with Elixir)A look into the RabbitMQ topology (exchanges, queues, bindings) and Elixir architecture th…Process pools with Elixir's RegistryA look at process pools and how to build routing pools (as opposed to checkout pools) usin…Sharing Protobuf schemas across servicesHow we're managing, evolving, and sharing Protobuf schemas across several services and pro…Persistent connections with gen_statemHow we can use the gen_statem behaviour to implement a resilient state machine that holds…A story of regret and retiring a library from HexI'm retiring a library of mine from Hex. I want to explain why.The guts of a property testing libraryA look at the design and mechanics of StreamData, a data generation and property testing l…Using C from Elixir with NIFsAn in-depth look at how to use NIFs from Elixir to run native code in the Erlang VM.Compile-time work with Elixir macrosAn overview of possible things to do through Elixir macros at compile time.Handling TCP connections in ElixirA look at some strategies to handle TCP connections and data flowing through them.Tokenizing and parsing in Elixir with yecc and leexA showcase of these two Erlang builtin tools and how they can be used from Elixir.