It can be hard to keep tests asynchronous as Elixir applications grow in size and complexity. Let's see why, and explore fixes.| andrealeopardi.com
Inspired by others doing this, here's a writeup of the things I use—mostly tech—2024 edition.| andrealeopardi.com
The Elixir compiler does what most modern compilers have to do: it only recompiles the files it needs to. You change a file, and the compiler figures out all the files that somehow depend on that file. Those are the only files that get recompiled. This way, you get to avoid recompiling big projects when changing only a few files. All good and nice, but it all relies on files not having too many dependent files. That's what was happening with Gettext, Elixir's localization and internationaliza...| Andrea Leopardi
Now the story of an Elixir library and the one author who had no choice but to take it away.| Andrea Leopardi
A look at the design and mechanics of StreamData, a data generation and property testing library for Elixir.| andrealeopardi.com
Erlang supports a way to implement functions in C and use them transparently from Erlang. These functions are called NIFs (native implemented functions). There are two scenarios where NIFs can turn out to be the perfect solution: when you need raw computing speed and when you need to interface to existing C bindings from Erlang. In this article, we're going to take a look at both use cases.| Andrea Leopardi
Macros are a very common way to do metaprogramming in Elixir. There are many resources that explain what macros are and how to use them (much better than I could): there's the Macro chapter from the "Getting Started" guide on Elixir's website, an awesome series of articles by Saša Jurić, and even a book (Metaprogramming Elixir) by Chris McCord. In this article, I'll assume you are familiar with macros and how they work, and I'll talk about another use case of macros that is rarely examined:...| Andrea Leopardi
Elixir is frequently used in network-aware applications because of the core design of Erlang and the Erlang VM. In this context, there's often the need to connect to external services through the network: for example, a classic web application could connect to a relational database and a key-value store, while an application that runs on embedded systems could connect to other nodes on the network.| Andrea Leopardi
A showcase of these two Erlang builtin tools and how they can be used from Elixir.| andrealeopardi.com
A quick walkthrough on how to verify JWTs coming from Apple's App Store APIs using Elixir.| andrealeopardi.com
This is an overview of the HTTP clients we have available in Elixir, as well as when to use each one.| andrealeopardi.com
I'm publishing a new video series about network programming in Elixir, where I solve the networking puzzles on Protohackers.| andrealeopardi.com
An experiment in solving AoC 2022 with Rust and some AI (GitHub Copilot and OpenAI's ChatGPT).| andrealeopardi.com
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.| andrealeopardi.com
How we can use the gen_statem behaviour to implement a resilient state machine that holds a connection to an external service.| andrealeopardi.com
An overview of how we test Elixir applications that interact with AWS.| andrealeopardi.com
A look into the RabbitMQ topology (exchanges, queues, bindings) and Elixir architecture that we use to perform RPCs over RabbitMQ.| andrealeopardi.com
A look at process pools and how to build routing pools (as opposed to checkout pools) using Elixir's built-in Registry.| andrealeopardi.com
How we're managing, evolving, and sharing Protobuf schemas across several services and programming languages.| andrealeopardi.com
A short look at mixing property-based tests and example-based tests to get the best of both worlds.| andrealeopardi.com