We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Admit when you’re wrong
People in the Elixir community shouldn't be butthurt about DHH's Campfire benchmarks. We should use them as an opportunity to look at the state of the...
Trapping exits so terminate/2 actually runs
A GenServer that flushes buffered work in terminate/2 loses it when its supervisor shuts it down, unless the process traps exits:...
Keeping compile_env values out of runtime.exs
Application.compile_env/3 bakes a value into the module when it compiles. If config/runtime.exs sets the same key, the two can disagree without anyone...
Sorting DateTime lists with Enum.sort/2
Enum.sort/1 puts January 31 after February 1:...
Setting updated_at yourself in Repo.update_all/3
Repo.update_all/3 writes the columns you give it and nothing else, so updated_at keeps its old value:...
How we use ETS as a live code-graph database in Synapse MCP
We have built/building Synapse MCP — a tool that gives AI agents a persistent map of your codebase — and one design question came up early: where does...
Running doctests against the database
Doctests are straightforward until an example calls Repo. A plain ExUnit case doesn't check out an Ecto sandbox connection, so run database-backed doc...
Keeping Oban's time units explicit
Oban's Lifeline and Pruner accept raw integers in different units: rescue_after is milliseconds, while max_age is seconds.
On current Oban releases, ...
Catching GenServer.call/3 timeout exits
GenServer.call/3 does not return {:error, :timeout} when the server misses its deadline. It exits the caller instead....
Keeping self() straight in on_exit callbacks
An on_exit callback looks like it belongs to the test that registered it, but self() inside the callback is not the test PID:...
Clearing inherited variables in System.cmd
Passing env: [] to System.cmd/3 does not clear the child environment....
Running Task.async_stream/3 for side effects
Calling Task.async_stream/3 does not start any tasks:...
Keeping timeouts active while tracing tests
A test can stop timing out when you rerun it with --trace:...
Starting only what a FLAME runner needs
When FLAME boots a remote runner, it starts your application there, so your application has to decide which supervision children belong on that runner...
Keeping stale gzip assets out of Phoenix tests
I spent too long debugging a LiveView hook in ElixirDrops because the browser kept running old JavaScript. The source and freshly built app.js were co...
copied to clipboard