Digests » 166
this week's favorite
Back after the summer holidays, this blog will now change tracks and start a series of blog posts about Static Single Assignment (SSA). This first installment will set the scene for the posts that follow by looking at the traps and pitfalls one can fall into when trying to optimize BEAM assembly code.
TL;DR. Only use exceptions for truly exceptional cases. Try OK.
Tracing as a tool is immensely productive. It cannot be overestimated - especially in production, but also in development when debugging our own mistakes. In the previous article I covered why we should use that facility and why they invented it in the first place.
Elixir has a great REPL(iex) which allows you to run arbitrary code and see its results. And the same `iex` can be used to start your mix app with an attached REPL. If you are using phoenix you can get this up by running `iex -S mix phx.server` instead of `mix phx.server`.
I recently did a live coding session on a 3d audio server built in Elixir. This project involves quite a complicated supervision tree where GenServers are created and destroyed dynamically based on users joining a room and moving around. As such this requires in-depth logging of processes in the application