Hacker Newsnew | past | comments | ask | show | jobs | submit | hank1931's commentslogin

How about Erlang or Elixir using BEAM?

Supposedly WhatsApp scaled to serving over 1 billion users with Erlang and BEAM.

RabbitMQ, used by Reddit, uses Erlang and BEAM.

Discord uses Elixer and BEAM.

I just traveled down the BEAM rabbit hole. Fascinating story. The Ericsson Computer Science Laboratory cranked out some amazing products in the early 1990's.

Their goal was five nines of reliability for Ericsson telephone switches.

According to Joe Armstrong (an interesting fellow from Ericsson), the AXD301 ATM switch achieved nine nines over a nine-month period using Erlang and BEAM in 2002. That calculates out to 24 milliseconds of downtime.


BEAM+OTP is a masterclass in using concurrency to achieve fault tolerance. But Go achieves its "magic" by feeling like the lingua francas of programming, C and C++. Go doesn't make the developer learn too many new concepts. The runtime is self enclosed in the final binary. This commitment to the familiar programming patterns also means it allows for concurrency anti-patterns like shared memory which for Erlang+OTP's design principles is verboten.


Slightly irrelevant but that's a part of my issue with Go. I personally feel the chances are slim that "familiar programming concepts" (i.e. as taught by most intro CS courses) are optimal by themselves. And I know it's an old thing, but the fact that Go was once adamantly against generics...


The Go team as a whole was not adamantly against generics though, as I recall. Rather, they were against implementations that would have bad overall implications for the language (especially its complexity, both in usage and in implementation).

Once a sufficiently good proposal was made, generics were adopted.


It was considerably more messy than that but I don't want to dredge up old drama in detail.


I agree with everything you're saying. I think it comes down to design philosophy. Erlang's ecosystem is well tuned for building fault tolerant systems and features concurrency heavily to solve for that. Go is for general purpose programming in big organizations with massive variance in developer experience that has concurrency as a first class concept for the ability to scale (among other things).

Of course, in some sense fault tolerance and scaling are two sides of the same coin. They're both measures of availability. They're just different approaches to that.

What Go achieves that Erlang doesn't is the ability to "pick up and play". What Erlang achieves that Go doesn't is a pathological commitment to the system whole never going down.


The irony is that it ended up more complicated than it neeeded to be because it was added on later and had to be backwards compatible. I think if go had had generics from the beginning it could have had a simpler design. And go wouldn't have needed magic functions like make and len that are kind of generic, but not in the same way as user-defined generic functions.


> I personally feel the chances are slim that "familiar programming concepts" (i.e. as taught by most intro CS courses) are optimal by themselves.

On the other hand, Erlang has been out for ages and has largely failed to attract much adoption, so it doesn’t seem like the market finds it to be “optimal” either. Not that popularity is everything, but over time a language better languages should increase their market share, especially if your language got its start during an era where the competition was C and C++ and Java.

> And I know it's an old thing, but the fact that Go was once adamantly against generics...

Erlang not only lacks generics, but it lacks any static type system at all…


Rather than entire languages, I'd say that feature adoption is more likely the better indicator. Like generics, first-class functions, lambdas, error-handling (I'm partial to monads like `Result`), etc.

If one wanted, they could put ecosystem tooling here as well (e.g. `gofmt` saving everyone time and mental health).

Also, to clarify, I'm not arguing that Erlang > Go, I don't (purposefully) use either, though I have to read Go sometimes.


Erlang is slow for compute.

And most software does apparently not need what it offers.


Not to mention its a lot easier to learn Go concurrency over Elixirs whole ecosystem. Also Go has a job market while Elixir job market exclusively consists out of senior level job postings that get handed over from Elixir job hopper to another Elixir job hopper. There is barely any reason to learn Elixir except for being fascinated by it.


Comparing learning one language's concurrency model with learning another language's entire ecosystem is incommensurable.

Having learned both Go and Elixir, I found Elixir easier to learn and a lot more enjoyable to work with. I'm not alone in this opinion. According to Stack Overflow's 2025 "admired" languages, Elixir scored 65.9% compared with Go's 56.5%; Phoenix was the most admired web framework of 2025 at 79% and has held that spot for the past three years.


Erlang/Elxir would be more popular if it compiled to native. BEAM VM is not that performant and programs also take more memory compared to Go.


Erlang is dynamically typed, so many of the performance costs are similar to a JS runtime and always fully deciding typing ahead of time is an undecidable problem.

In practice, this is why many such languages have JIT's (unless targeting a subset or an type-information enhanced superset like TS), there was a seminal OOPSLA paper in 1995 by Agesen and Hölsze (who worked on the JVM Hotspot compiler) that compared JIT's to AOT compilation in practice (the Agesen CPA algorithm isn't perfect but it's pretty good for the time and others have probed that it's an undecidable problem).

That said, they also had a historically bad performance story due to misjudgments in development direction, the interpreter was default and they twice tried to make "HPC JIT's", ie.. complex JIT's that tried to be "perfect" and focused on numerical code gains, they'd be good for optimizing a matrix kernel, yet fairly useless or even negative on more common code patterns.

OTP 24,25 and 26 took learnings from the JS runtimes and also added compiler hints (since they already had binary precompiled modules).

What still saves the OTP runtime is that many basic operations that would suck without a good performance story is handled by built-in functions, so like Python most practical programs works well enough even if the runtime is behind.


Well to use Elixirs concurrency model you kinda have to use the rest of the langs ecosystem and learn a shit ton more compared to familiar feeling langs like Go. For Go I dont have to learn its execution model, some VM specifics and whatnot.


I mean, Java does it even more elegantly imo and if anything it is the most stereotypical oop programming language of all time.


Can you explain how you think Java does it more elegantly? That's a very surprising statement. Java didn't even do m:n threading until "Project Loom".


Java has structured concurrency.

This poster summarized it well: https://news.ycombinator.com/item?id=49864334


I looked at BEAM about a year or so ago, similar conversation here. I don't think BEAM is the same when you start looking at what part of code is executing in which thread. There's tradeoffs depending on what you're solving for, like Go makes it really simple to distribute your work across threads concurrently, but when you start looking at integrating with stuff, you run into having to do tricks to do things with unshare (ref: docker/podman/containers...) and you haven't been able to integrate into libnss since they started using some "unused linux signal" for concurrency controls (PAM used that signal).


Since you’re talking about threads in the context of the BEAM, you might want to give it a deeper look. There are no threads there, at least not OS threads on the developer’s disposal.


How the OTP handles Erlang/Elixir parallelism is kind of interesting. =3

https://blog.stenmans.org/theBeamBook/#_concurrency_parallel...


I don't have a use case where anything in my toolbox isn't already sufficient enough to solve, it wouldn't be worth while. Maybe if I cared to work at some big place or specifically Ericsson, but there's better things to be doing with my time. There's plenty of problems that can be solved with tools like uv/Python/PyWebView.


Their concurrency models are very similar. By default there is a thread per core and the scheduler can move a process to another thread at any time. All I/O is async. Like Go, when code calls into foreign native code (NIF / cgo) the scheduler puts it on its own OS thread.

One advantage BEAM had for a long time is preemption is built into the VM and based on reductions. Go didn't have true preemption until 1.14 (before that it could only preempt at function boundaries) and its a very complicated implementation based on async signals sent from a runtime thread.


  Hello, Mike.
  Hello, Joe.
  System working?
  Seems to be.
  Okay. Fine.
  Okay.


The elixir documentary doesn't quite have the same zest


Yes! BEAM and OTP is amazing. Concurrency is one aspect and Go has great concurrency primitives, but what about supervision, and recovery and failure modes? Often they’re left to the developer as per Go’s philosophy which I think makes sense. OTP offers a lot of solutions to this.

I think Go and the BEAM family languages are both great.


Yes. Once you know Erlang/Elixir and BEAM you realize it is at least a local optimum in languages/VMs.

Truly something else if error handling is built into the language as a default case, not an … exception.


If you've written a few GenServers, I'm not sure one would describe it as "magic" in quite the same way. I wouldn't anyway.


> the AXD301 ATM switch achieved nine nines over a nine-month period using Erlang and BEAM in 2002. That calculates out to 24 milliseconds of downtime.

This is misleading. I had an old Dell computer in my garage hosting a php app that hit that level of uptime as well over a 9 month period. It was 100% so actually better.

Those uptime numbers only hold water when spread over many thousands to millions of users where you’re at large enough scale that you’re actually dealing with a meaningful volume of hardware failures.


Did you come from reddit? The switch in question is a backbone switch and those at the time served tens of millions of users.

How many do you serve?

Edit: either you are a troll or you have an affinity for hateposting on HN. Nothing positive have come from your comments.


Here, I will give you my upvote! That's how Issuetrak is. The founder (me), still owns a majority of the stock, there's no outside investment, and we have customers who've been with us more than 20 years. Multiple employees as well!


AI won't replace Ann Wroe at The Economist. It is difficult to appreciate until you've read a few, but Ann Wroe's approach transformed The Economist's obituary section into one of the most widely read features in international journalism.


I do this too. I use Claude. I picked a voice I like. I go on a three mile walk. I will ask it questions about a topic that I want to learn about. If it starts telling me more than I want to hear right then, I will say "stop". It doesn't get offended. I then ask it something else. I find this very effective. I control it so it only explains to me what I want explained. If what it says sparks questions on a related topic I jump to a brand new topic. No personal tutor could keep up with this or adjust to exactly how I want to be addressed like Claude does. I'm very excited about the progress I'm making mastering new topics.

And yes, it is not that it is just presenting the facts. By me taking control of the direction the questions and answers go, I can flesh out my mental model. I won't retain every little thing it tells me. But I am much farther ahead than before.


Can you say what topics you’re using this method to learn? I think it would be more effective for some than others.


On my iPhone, when I press Audition, it looks like it is playing something, but I do not hear anything coming through the speaker.


Is your mute switch in the "mute" state?


Check out Eve (https://eve.new). I saw it here on Hacker News after I decided OpenClaw was too raw for me. Eve is amazing. My theory as to why it's so good is that the founders have a strong background in design -- they met getting their masters in design at UC Berkeley. Their secret sauce is the harness they've constructed IMHO.

Here is what Zach Dive said in the original HN announcement--

Eve is an AI agent harness that runs in an isolated Linux sandbox (2 vCPUs, 4GB RAM, 10GB disk) with a real filesystem, headless Chromium, code execution, and connectors to 1000+ services.

You give it a task and it works in the background until it's done.

I built this because I wanted OpenClaw without the self-hosting, pointed at actual day-to-day work. I'm thinking less personal assistant and more helpful colleague.

The main interface is a web app where you can watch work happen in real time (agents spawning, files being written, use of the CLI). There's also an iMessage integration so you can fire a task asynchronously, put your phone down, and get a reply when it's finished.

Under the hood, there's an orchestrator (Claude Opus 4.6) that routes to the right domain-specific model for each subtask: browsing, coding, research, and media generation.

For complex tasks it spins up parallel sub-agents that coordinate through the shared filesystem. They have persistent memory across sessions so context compounds over time.

I've packaged it with a bunch of pre-installed skills so it can execute in a variety of job roles (sales, marketing, finance) at runtime.


This was not a pleasant experience to register with and evaluate. Nowhere is a Linux-deployable harness mentioned. It seems to be a Perplexity-like offering.

On top of that, users logging in with Google OIDC cannot delete their accounts. Eve asks for the login password to confirm account deletion. Broken.


> Check out Eve (https://eve.new).

> Continue with Google/Email

Seems very different from the other listed options in parent's comment if you need an online account with Eve to even use it.


I see your point. The others are self-hosted, and you bring your own key. Personally, I like the convenience Eve's online account provides. It's dead simple to be up and off to the races, getting useful work done with little effort. After struggling with OpenClaw, it has been a very pleasant experience. Several people in our company are using it now.


> I see your point. The others are self-hosted, and you bring your own key.

More importantly, they don't require an account with a company you don't know how long it'll exist.

It's less about "self-hosted vs not" and more about "If I start relying on this tool and the company eventually gets bought/sold/disappears/burns up, what can I do?"

On top of that, they're using wildly wrong TLD, it's not a generic fun TLD to do whatever with, it's specifically for doing a "New Action" in an existing platform. Gives me the impression they don't really know what they're doing.



I fed Claude the WSJ article, and asked it to come up with a summary I could post here. It sounded too much like AI wrote it. So I asked it to summarize again but sounding more like my voice and not an AI voice. It still failed, but I thought I'd post its summary anyway. It is a fascinating story.

"A college kid at RIT cracked one of the biggest cyberattacks ever seen, mostly from his dorm room. Benjamin Brundage mapped out a botnet called Kimwolf — 2 million hacked Android devices being rented out to launch massive DDoS attacks — by infiltrating hacker chat rooms and sweet-talking insiders with cat memes. His research eventually fed into a federal takedown. The feds are sending him a t-shirt. "


As a student I worked at a lab, and had a PDP-11/10 all to myself. But of course I desired more. I heard such wonderful things about the 11/34. Six years later I worked for a small company that was able to purchase a PDP-11/70 running RSTS/E. I had died and gone to heaven!!


My high school had a /34 running RSTS/E, with roughly a dozen terminals on-campus, mostly in the lab. Even in 1980, I recall my teacher warning about Y2K, though not yet named as such. Fast forward 20+ years, and I would set up SIMH, install RSTS/E on it, and discover that version 7.0, which was what I used at the time, was not Y2K-compatible.


Out of curiosity, what were those wonderful things you were hearing about the 11/34 back then?


Love the Mitch Hedberg reference! Thank you! Always good to get a little Mitch!

‘I don’t have a girlfriend. But I do know a woman who’d be mad at me for saying that.’

‘I’m against picketing, but I don’t know how to show it.’

‘I haven’t slept for ten days, because that would be too long.’

‘I like to play blackjack. I’m not addicted to gambling. I’m addicted to sitting in a semi-circle.’


"I was going to get my teeth whitened but then I said, fuck that, I'll just get a tan instead."


"One time, this guy handed me a picture of him. He said, "Here's a picture of me when I was younger." Every picture is of you when you were younger. "Here's a picture of me when I'm older.", "You son of a bitch! How'd you pull that off? Let me see that camera!"

"Alcoholism is a disease, but it’s the only one you can get yelled at for having. 'Goddamn it, Otto, you’re an alcoholic!' 'Goddamn it, Otto, you have lupus!' One of those two doesn’t sound right."


Are you kidding me? Is there any one person giving better AI updates nowadays than Simonw? Back in the day, there used to be these EF Hutton commercials. There'd be some scene of a bunch of people. One person would say something like, “My broker says…” and another would respond, “Well, my broker is EF Hutton, and EF Hutton says…”. And the whole restaurant or whatever would get silent so they could hear what EF Hutton says. It was great!

I feel the same way about Simon Willison. He's a treasure!

Here's a few of those EF Hutton commercials for your viewing pleasure--

https://youtu.be/2MXqb1a3Apg

https://youtu.be/sc2GpmLx82k

Yep, that's how I feel when Simon Willison speaks!


Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: