Comparing and contrasting Erlang’s BEAM with Java’s JVM taught me an absolute ton about software engineering.

It taught me way more about sales and adoption than anything else.

As a former Erlang developer it never ceases to amaze me that an entire language, standard library, toolchain, and runtime that's entirely dedicated to and on-paper perfectly technically suited for the most pervasive "backend" development challenges of our time somehow managed to effectively blow a 20-year technological headstart and failed to leverage the notoriety that should have come from several super high-profile "trendy" commercial use cases in the 2006-2013'ish era. Such that it's still relegated to general obscurity and is seeing its core competencies taken over by a hodgepodge of other languages and technologies that started much later but became rapidly more popular while also still arguably doing a worse job at those things than Erlang did.

Erlang could be the literal silver bullet and people wouldn't use it because it's a funny looking language.

I showed it to all my developer friends back around 2008 (I found out about it because a competitor used it and open sourced some of their stuff) and the only comments I ever got was how weird it looked. No one gave a shit about anything else. The story it told me wasn't about sales, it was about how shallow most developers are.

Once nodejs came out it was the final nail in the coffin - callback hell solves all your problems, no funny looking language necessary!

As nice as the beam might be, erlang is just not a great language by the judgment of many people, including me. Elixir can't make up for it either. I refuse to use a dynamically typed language for anything bigger than a couple hundred lines.

On the JVM you have languages like Clojure and Scala, which both are top class in their domains imho. I wish there was the same for the beam.