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.
Read postTwo 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.
Read postHow we are periodically dumping metrics about our most demanding BEAM processes into an easy-to-query ClickHouse table.
Read postMy own sort of "wrapped" for the 2025 year.
Read postIt can be hard to keep tests asynchronous as Elixir applications grow in size and complexity. Let's see why, and explore fixes.
Read postInspired by others doing this, here's a writeup of the things I use—mostly tech—2024 edition.
Read postThis 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.
Read postA quick walkthrough on how to verify JWTs coming from Apple's App Store APIs using Elixir.
Read postThis is an overview of the HTTP clients we have available in Elixir, as well as when to use each one.
Read postI'm publishing a new video series about network programming in Elixir, where I solve the networking puzzles on Protohackers.
Read postAn experiment in solving AoC 2022 with Rust and some AI (GitHub Copilot and OpenAI's ChatGPT).
Read postAre 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.
Read postAn overview of how we test Elixir applications that interact with AWS.
Read postA short look at mixing property-based tests and example-based tests to get the best of both worlds.
Read postA look into the RabbitMQ topology (exchanges, queues, bindings) and Elixir architecture that we use to perform RPCs over RabbitMQ.
Read postA look at process pools and how to build routing pools (as opposed to checkout pools) using Elixir's built-in Registry.
Read postHow we're managing, evolving, and sharing Protobuf schemas across several services and programming languages.
Read postHow we can use the gen_statem behaviour to implement a resilient state machine that holds a connection to an external service.
Read postI'm retiring a library of mine from Hex. I want to explain why.
Read postA look at the design and mechanics of StreamData, a data generation and property testing library for Elixir.
Read postAn in-depth look at how to use NIFs from Elixir to run native code in the Erlang VM.
Read postAn overview of possible things to do through Elixir macros at compile time.
Read postA look at some strategies to handle TCP connections and data flowing through them.
Read postA showcase of these two Erlang builtin tools and how they can be used from Elixir.
Read post