2026
Teaching LFE to Format Itself, Part 2: Someone Already Solved This
Looking for a principled way to decide layout, we found Racket's raco fmt and the 2023 paper beneath it — a provably optimal pretty-printer. It was exactly what we needed, with exactly one problem: it is slowest precisely on the S-expressions a Lisp formatter sees most.
Teaching LFE to Format Itself, Part 1: A Hand-Written Formatter
The origin of LFE's code formatter — the hand-written engine that shipped inside rebar3_lfe, the one genuinely hard BEAM-specific obstacle (comments), and the maintainability wall that taught us we'd been writing the formatting convention as code when it wanted to be data.
LFE Friday - maps:get/3
Reopening LFE Friday with the safe map read: maps:get/3 hands back a default instead of crashing on a missing key — plus the one eager-evaluation gotcha to know.
Bringing Types to LFE: Lessons from Haskell, the Typed Lisps, and Gleam
Why we started building a gradual type system for Lisp Flavoured Erlang — a tour through how Haskell, Go, Rust, Typed Racket, Coalton, and Typed Clojure each spell the same small idea, the ergonomic quibbles that pushed us, and the strategic moves we borrowed from Gleam.
Graph Theory in LFE: A Knowledge Graph of Erlang Itself
A deep, hands-on tour of graph theory in LFE — built on a real corpus of 1,664 Erlang concept cards, driven by the graffeo library, and unfolded slowly enough to teach the mathematics underneath each query.
Lykn: A Lisp Born from LFE
How fourteen years with Lisp Flavoured Erlang led to a new language — and how that language came home to power lfe.io.
Welcome to the New LFE Blog
After many years on Jekyll, the LFE blog has moved into the same Cobalt-powered home as lfe.io itself. Here's what changed, what stayed, and what we learned along the way.