March 2, 2026

Inbox vs Locks: choose your chaos

Process-Based Concurrency: Why Beam and OTP Keep Being Right

BEAM vs the rest: tiny inbox workers spark big fights, Node & Go clap back

TLDR: A new guide says Erlang’s BEAM and OTP — tiny inbox-style workers with auto-restart — are still the best way to do lots at once. Comments erupt: some praise built‑in safety, others insist Node and Go are fine, and one skeptic calls mailboxes just locks in disguise.

Variant Systems dropped a guide arguing that BEAM (the Erlang virtual machine) and OTP (Open Telecom Platform) keep nailing concurrency: lots of tiny workers, each with their own state, talking by messages, and auto‑restarting when they crash. The post says today’s AI “agents” keep reinventing this. As Dillon Mulroy put it, everyone keeps converging on the same shape. The comments immediately split into camps. joshsegall fires the sharpest shot: “Switching from locks to mailboxes changes the syntax of failure”—translation: you didn’t solve the coordination headache, you just made it look different. socketcluster upped the drama, claiming Node.js “figured this out long before BEAM”, triggering history buffs to reply “Erlang was doing this in 1986.” Meanwhile, nostalgia rolled in with baud9600 name‑dropping occam and transputers like vintage rock.

More practical voices cheered the “it works” angle. rapsey loved built‑in backpressure: your little workers have mailboxes you can watch, so overload is visible instead of mysterious crashes. gethly shrugged, “Go is good enough,” which became the day’s minimalist meme. The vibe: BEAM folks calmly sip tea while AI frameworks keep rediscovering the actor model, and the wider crowd debates whether inboxes beat shared spreadsheets. Bonus joke: someone described OTP as “IT support for your code”—a supervisor that just reboots misbehaving staff. Cue the “Inbox vs Locks” reaction gifs and a lot of knowing nods.

Key Points

  • The article presents process-based concurrency on the BEAM VM with OTP as a runtime solution offering isolation, message passing, supervision, and fault recovery since 1986.
  • It observes that modern AI and distributed frameworks, especially in Python, independently converge on OTP-like architectures due to problem constraints.
  • Two concurrency approaches are outlined: shared state with locks (e.g., Java, C++, Go, Python, Rust) versus isolated state with message passing (actor model).
  • The actor model is attributed to Carl Hewitt (1973), with Erlang implementing it as a runtime in 1986.
  • Authors provide practitioner context, citing an 80k+ LOC Elixir-based healthcare SaaS handling real-time scheduling, AI documentation, and background jobs; the article begins to define BEAM processes as distinct from OS processes or threads.

Hottest takes

"Switching from locks to mailboxes changes the syntax of failure" — joshsegall
"The Node.js community had figured this out long before BEAM" — socketcluster
"Go is good enough." — gethly
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.