QFM118: Elixir Reading List - June 2026
Source: Photo by Jakub Żerdzicki on Unsplash
A small but heavyweight month for the BEAM. tv-labs' Lua 5.3 runtime in pure Elixir gives you a complete Lua VM on the BEAM with zero native code — sandboxed scripting without leaving Elixir — and earns June's only five-hat rating. You Don't Need Kafka argues that what most Kafka adopters actually want — backpressure and fault-tolerant concurrency — has been sitting in the runtime all along.
Elsewhere, Hologram v0.10 pushes Elixir all the way to the browser — events, middleware, and not a line of JavaScript — and Reflections on creating ExCrap without looking at the code is an experiment in trusting verification over inspection: ship a library while never once reading what the machine wrote.
As always, the Quantum Fax Machine Propellor Hat Key will guide your browsing. Enjoy!

Links
This repository implements a complete Lua 5.3 virtual machine in pure Elixir, with a lexer, parser, register-based VM, and standard library all running on the BEAM without NIFs or C dependencies. It enables sandboxed execution of untrusted scripts (from AI agents, games, user-defined rules, etc.) with a simple API for sharing data and functions between Elixir and Lua, where scripts are isolated by default and errors include source location information. The library provides intuitive interfaces like Lua.eval!/2 for execution, Lua.set!/3 for exposing Elixir functions to Lua, and custom APIs via the deflua macro.
Hologram v0.10 introduces a comprehensive client-side event system that enables interactive browser applications to be written entirely in Elixir without JavaScript, supporting keyboard, scroll, resize, click-outside, and scroll-edge events with compile-time validation and modifiers like debounce and throttle. The release also adds server-side middleware and brings comprehensions and error handling to parity between browser and server execution, demonstrated through a full Space Invaders game implemented as pure Elixir driving SVG elements. Global window and document-level event bindings allow developers to handle page-wide events declaratively in templates using the same unified $event syntax.
Kiunye Araya makes the case that most teams reaching for Kafka actually need backpressure and fault-tolerant concurrency, not a distributed log — and on the BEAM that ships with the runtime. GenStage supplies the primitive (demand-driven stages where a slow consumer asks for N events and never gets flooded), while Broadway adds the parts real pipelines need: processor pools, batched writes, per-message failure isolation, graceful drain on deploy, and pluggable producers. The worked example runs Safaricom Daraja-style mobile-money callbacks through RabbitMQ on a single VPS into a reconciliation table, with Broadway.test_message/2 making handler tests trivial — no embedded broker required. The closing rubric is honest: Kafka earns its keep with multiple independent consumer groups, weeks-long replay windows, and genuinely high throughput, and if you land there later, swapping Broadway's producer over to Kafka is a config change rather than a rewrite.
The author created an Elixir library for calculating CRAP (Change Risk Anti-Pattern) scores while deliberately avoiding reading the generated code to test whether AI-written software can be verified through external validation rather than code inspection. The experiment used multiple LLMs (GPT, Gemini, Claude) for initial research, then GPT 5.5 and OpenCode for implementation, developing verification strategies focused on external behavior and product outcomes rather than internal code quality. This approach attempts to answer whether software factories can produce trustworthy code through black-box testing and external metrics alone, rather than traditional code review.
Regards,
M@
[ED: If you'd like to sign up for this content as an email, click here to join the mailing list.]
Originally published on quantumfaxmachine.com and cross-posted on Medium.
hello@matthewsinclair.com | matthewsinclair.com | bsky.app/@matthewsinclair.com | masto.ai/@matthewsinclair | medium.com/@matthewsinclair | xitter/@matthewsinclair
Was this useful?