Status columns with boolean flags are implicit finite-state machines in denial — they allow hundreds of illegal states, scatter transition logic across the codebase, and offer no concurrency safety. The post argues for replacing this pattern with an explicit FSM using the Elixir Finitomata library, which compiles a plain-text state diagram into a GenServer-backed machine. Benefits include compile-time validation of transitions, structural prevention of illegal states, built-in concurrency serialization via the actor model, first-class failure and timeout handling, automatic history tracking, and a dedicated testing API. Objections like 'over-engineering' or 'academic' are addressed directly.
Table of contents
The Anatomy of the Thing You BuiltWhat Is Actually Wrong HereNow Do It With an Actual Finite AutomatonPoint by Point, Why This One WinsThe Objections, and Why They FoldThe Point5K Impressions