"config.exs is Simple" and Other Lies
summary
Claim: Elixir configuration is code not data, so config.exs runs as Elixir code and can have side effects, ordering issues and unreliability between compile time and runtime. Examples: Mix loads config files specially, Erlang logger is configured earlier so changes may not apply, Oban treats a nil plugin list differently than [] leading to surprising merges (Oban list vs nil merge), and adding a MIME at compile time forced CI to recompile. Recommendation: prefer runtime init callbacks, sane defaults in mix.exs, and avoid compile-time config.
AI-written summary · about
chapters (20)
- 0:00Introduction
- 1:05Simple vs easy in software
- 2:13Complexity of user manuals
- 5:46Real users of your app
- 7:37Excessive config options
- 9:06Elixir config locations
- 11:01Why config.ex feels simple
- 12:31Dangers of imperative config
- 15:03Config loading timing issues
- 17:14Security risks in exec config
- 18:19Runtime vs compile-time traps
- 19:52Config loading pitfalls
- 21:13No perfect config solution
- 22:25Avoid config when possible
- 24:35Sensible defaults & safety
- 26:00Mix.exs as config tool
- 27:23Complexity of Mix.exs
- 28:50Elixir ease vs complexity
- 30:38Config complexity gotchas
- 30:58Q&A: Umbrella project configs
related talks
45mWhat Elixir is about
32mThe Excitement of Elixir
32mConfiguration Is (riskier than?) Code
18mEverything-as-Code: It's time to fix configurations
32mWriting Command Line Applications with Elixir
28mCode Spelunking for Knowledge and Profit
48mKeynote Catalyse Change
16mBuilding an interactive CLI app in Elixir
