Lovely Week with Elixir
I learned Elixir a few weeks ago as a quarantine self-improvement project and pretty much loved it. There are some warts, as in any language. As someone who&#x27;s primarily worked in Go and Java in the past and has also been learning Rust I don&#x27;t super love the optional typing thing, and I end up missing higher-level data constructs like interfaces and traits.<p>But there are some great language features, like guards and pattern matching, that are hard to give up when you go back to other languages.<p>Plus it&#x27;s great to have OTP goodies like GenServer at your fingertips if you run into performance bottlenecks (which you may not!). The OTP APIs are a bit weird coming from other languages but not too bad.<p>Other things I&#x27;ve liked:<p>1. Ecto is simply the best DB library I&#x27;ve encountered in any language. I&#x27;d almost recommend learning Elixir just to be able to use Ecto.<p>2. Plug provides great HTTP ergonomics highly reminiscent of Go&#x27;s context-based middleware approach. Having direct access to the full request&#x2F;response lifecycle is a win.<p>3. Phoenix is nice because it&#x27;s essentially just Plug with some convenient helpers on top. Strikes a really nice balance between configuration and convention by letting you use only what you need. Haven&#x27;t tried LiveView as I&#x27;d prefer to handcraft my own JS but probably worth a shot.<p>4. Absinthe is the best GraphQL framework I&#x27;ve encountered after many others in other languages left me completely cold.