Readit News logoReadit News
matthewsinclair commented on Why Elixir? Common misconceptions   matthewsinclair.com/blog/... · Posted by u/ahamez
mijoharas · a month ago
You use the phrase twice in the article. Could I ask you to put an asterisk by the first one too?

(I came across it, stopped reading the article to Google it, couldn't find it so came to HN to search the comments and then went back to the article and saw the asterisk later on)

matthewsinclair · a month ago
Ok. I’ll fix it. Thanks.

I’m genuinely surprised how much controversy this statement has caused. It’s something I’ve said many times in a professional environment and literally no one has ever picked me up on it. Makes me wonder if they were _ever_ listening …

matthewsinclair commented on Why Elixir? Common misconceptions   matthewsinclair.com/blog/... · Posted by u/ahamez
matthewsinclair · a month ago
Here's another Good News Story of Elixir adoption:

How Elixir Powers the BBC From PoC to Production at Scale - Ettore Berardi | ElixirConf EU 2025 https://www.youtube.com/watch?v=e99QDd0_C20&ab_channel=CodeS...

matthewsinclair commented on Why Elixir? Common misconceptions   matthewsinclair.com/blog/... · Posted by u/ahamez
throwawaymaths · a month ago
if the author is reading this a minor edit should be that whatsapp uses erlang, not elixir.
matthewsinclair · a month ago
Yeah, that’s a fair point.
matthewsinclair commented on Why Elixir? Common misconceptions   matthewsinclair.com/blog/... · Posted by u/ahamez
Joker_vD · a month ago
> For those I managed to confuse, “glass-to-tin” just means “front-to-back” or “from the screen to the back end”.

So like a thin mirror? Which only serves to show the viewer back to themselves? And which also consists of just two extremely simple parts, that is, two panes/sheets of uniform materials, and nothing more?

How do you even come up with this metaphor for a web-based application? It's horrible!

matthewsinclair · a month ago
Sorry, it didn't land for you. It's something I've used for a while ("glass" for the screen, and "tin" for the back-end). Perhaps I'm showing my age or my Aussie slang. Thanks for reading, in any case!
matthewsinclair commented on Why Elixir? A Rebuttal to Common Misconceptions   matthewsinclair.com/blog/... · Posted by u/matthewsinclair
ryanrasti · 2 months ago
> I'm curious about the areas you've struggled with, particularly number 3.

At the beginning things were very quick like your experiences. It's when we built up a larger code-base (we're currently at ~100K Elixir LoC -- excluding tests) over the last three years, that making a change in a file triggered hundreds of other files to recompile and that cycle took ~10s on modern machines.

> I abhor JS as a language (I know, I know, I'm fully aware of my biases!),

Yeah I hear you. What changed my mind was actually TypeScript -- it's the most advanced (and approachable) type system I've worked with. Take a look at the GIF here: https://kysely.dev/ -- all of the auto-completion is powered by TypeScript.

> However, with Elixir/Phoenix/LiveView, I have created a more-than-credible web front end that would have otherwise taken a React-based team weeks, if not months, more time and complexity.

It's hard to gauge. My assumption is that the big gains would come from having a single language framework (e.g., Phoenix/LiveView vs. Node/React).

> I do take your point on Fly.io, tho. I am currently operating at a very small scale, and I have been experiencing regular uptime issues. I'm in the process of working out what to do about that as I scale.

FWIW we haven't had any issues after migrating to GCP -- even though the setup is more hands-on (VMs). I'm not sure there are other turnkey robust solutions if you want clustering.

I think the last big unknown will be the entire AI aspect of things. I see competing possibilities: 1. AI enables faster development for Elixir & ecosystem -- allowing them to e.g., address issues faster and shine more clearly 2. AI accelerates consolidation and before you know it every new project is fullstack NextJS and old projects are re-written to migrate onto it

Perhaps the most important will be feedback to the LLM (e.g., in the form of static analysis and running tests) -- TypeScript has a huge advantage here IMO. We got to a place where we had basically no runtime type issues (e.g., NPE, exceptions/crashing of FE) in our startup with TS on the FE. Have only heard of similar stories in cases in more niche FP languages like Elm

matthewsinclair · 2 months ago
I won't comment on TypeScript (other than to bemoan its JavaScript origins), but for what it's worth, people I hold in high esteem have a lot of good things to say about it.

But as far as LLM-assisted coding goes, the pure functional / no-side effects / immutable data properties of Elixir (and to be fair, other functional languages that owe their ancestry, in part, to Lisp) seem to have a big impact on the LLM's ability to reason about change. At least that is my experience with it over the last 6 months or so.

It's such a fun time to get the opportunity to muck around with these technologies, "programming" is _profoundly_ changing under their influence.

matthewsinclair commented on Why Elixir? A Rebuttal to Common Misconceptions   matthewsinclair.com/blog/... · Posted by u/matthewsinclair
ryanrasti · 2 months ago
Thanks for compiling this. As a CTO running Elixir for 3 years (1 year of MVP deployed in production), my take is that while the BEAM's fundamentals are incredible, the ecosystem and DX have major trade-offs depending on the application.

The Good Parts:

1. The BEAM's fault tolerance is real and it "just works."

2. The talent pool is a huge win—the engineers we've hired have been outstanding.

3. Tools like Oban and remote iex were absolute lifesavers for us.

Where We Struggled:

1. Ecosystem: Depth over Breadth. Phoenix, Ecto, and Oban are fantastic, but we often hit walls on things that would be trivial in other ecosystems, like a good Shopify library, forcing us to build our own.

2. The Full-Stack Problem: LiveView wasn't enough for our complex UI. So we had to adopt React anyway, which put us in a polyglot stack where, all things equal, a full-stack JS framework would have been simpler.

3. Developer Experience. This might be the biggest friction point. Compared to the instant feedback of Vite/TypeScript, Elixir felt slow. Autocomplete was inconsistent, and a 15-second recompile/test cycle on our large codebase killed momentum.

4. Deployment & DevOps: Elixir's clustering forced us into a more complex deployment (managing VMs with NixOS) because we couldn't use simpler container platforms like Cloud Run (we had to migrate off of fly.io due to its managed Postgres immaturity and observed general instability).

(Also one quick correction: hot code upgrades aren't practically supported by modern Elixir tooling, so it’s tough to count as a benefit.)

I happened on this post that nails many of the areas for improvement that have also been painful for us: https://boredhacking.com/areas-of-improvement-for-elixir/

Ultimately, my take is that Elixir is a killer tool for specific problems, but for our full-stack app, it's not nearly as one-sided. I'm curious to hear if other teams have run into the same trade-offs: do you see them as fundamental issues or just a matter of ecosystem maturity? And if the latter, how are these improvements getting prioritized?

matthewsinclair · 2 months ago
I'm curious about the areas you've struggled with, particularly number 3.

I have found the DevX to be particularly great and one of the strongest aspects of Elixir. I abhor JS as a language (I know, I know, I'm fully aware of my biases!), and the tooling and complexity therein are infuriating. I find React and JS, in general, so impenetrable that it has stopped me from making progress with front-end development. However, with Elixir/Phoenix/LiveView, I have created a more-than-credible web front end that would have otherwise taken a React-based team weeks, if not months, more time and complexity. I also haven't seen the kind of recompile problem you mention, as HEEX changes are reflected immediately in the browser on save (at least in my setup).

I do take your point on Fly.io, tho. I am currently operating at a very small scale, and I have been experiencing regular uptime issues. I'm in the process of working out what to do about that as I scale.

Thanks for taking the time for that considered and nuanced response. Much appreciated!

u/matthewsinclair

KarmaCake day3107November 9, 2009
About
Building stuff with bits since c1990.

Web: https://matthewsinclair.com Masto: https://masto.ai/@matthewsinclair Medium: http://www.medium.com/@matthewsinclair Keybase: https://keybase.io/matthewsinclair Xitter: http://twitter.com/@matthewsinclair

[ my public key: https://keybase.io/matthewsinclair; my proof: https://keybase.io/matthewsinclair/sigs/zPeu_laDioK3fEgzbT_8DBCr0wPw7vPE7JUzewKpiEI ]

Verifying my Blockstack ID is secured with the address 19hMqSn67gLCoSrGxezUWN7wi1ipWNzBmQ https://explorer.blockstack.org/address/19hMqSn67gLCoSrGxezUWN7wi1ipWNzBmQ

View Original