enjoying every byte No images? Click here I am on vacation. This newsletter is only partially for you and very much for me. So it goes on while everything else takes a month-long breath. This one is about Elixir. Mostly. Describing a delicate designI find it challenging to describe why I like Elixir. Or what Elixir "is about". Actually, not quite. I find it difficult to do in a way that is short enough to be polite to get into. People do ask me those questions a fair bit, so I get practice and I get to try variations, but even if they get excited about it I am not satisfied that I've answered the question. There is so much to it and I don't fully know the specifics of why in all its facets. My standard explanation starts with asking if they've heard of either Ruby on Rails or Erlang. I give the brief background on both of these. On is a startup SaaS product darling. The other one is a weird swedish innovation known for immense scalability, high reliability and you know who uses it? The answer may surprise you. Then I get to name-check some of the orgs that use Elixir and Erlang respectively to share my confirmation bias as social proof. If I was as entangled in Rust or Go I might have similar challenges. I think they, as a general rule, have simpler explanations though. Their goals are very clear, their trade-offs and fundamental ideas are pretty easy to communicate. Rust is a safer but still incredibly efficient C. Go is a replacement for Java that tries to keep things simple. Marketing Elm is very simple. It does what React and friends do with a stricter (better?) type system than TypeScript and actual immutability. Elixir is a nuanced and kind of complex answer to my current history of programming pain points. Frustrations about runtimes, performance and messiness are answered quite well by the Erlang implementation of the Actor model which can provide great performance and enforces a fair bit of clarity by functional programming and immutability. Elixir and the ecosystem around it makes it great for just building web stuff which is what I actually need to do, all the time. Erlang itself would have scared me off as "too Computer Science" and strange. I have no stake in Ruby. I use that to help my explanations but Phoenix replaced Django for me and it has only done so in some ways. I find the loss of the user and admin system annoying but long term worthwhile. I much prefer building with Elixir than Python for what it lets me do in an app. The balance of an innovative runtime that made different design decisions and trade-offs from the very start and a language that is not a distilled purified concept but rather a big pile of mostly really good design decisions and thorough work is great. It is also really hard to describe. It is a bite of a good cake. If any layer in a cake, let's say caramel, is just straight better than the layers taken together as a whole, then that layer should have been the cake. It should be purified, distilled and focused to be perfect caramel and it would capture the hearts and mind of caramel-lovers across the world. It would also probably not be a cake anymore. If any layer in the cake is kind of off, like actually bad, that makes the whole cake an iffy proposition. How do you succinctly capture the things you like about runtime, syntax, documentation, community, package management, web framework, innovations, simplifications and the particular sense of ongoing forward development feeling consistently good over several years. Elixir is not flawless. The reasons I connect with the language are manyfold and when one piece of language or ecosystem detaches from my interests or I drift from it there are several others still keeping me connected. It is very hard for me to describe the complex messy human decision-making that brought me so deep into Elixir. Do you have a simple or succinct way to describe your favored languages? You can reply to this email to reach me or poke me on the fedi @lawik@fosstodon.org. Thanks for reading. I appreciate your attention. |