Wikipedia says "Originally BEAM was short for Bogdan's Erlang Abstract Machine, named after Bogumil "Bogdan" Hausman, who wrote the original version, but the name may also be referred to as Björn's Erlang Abstract Machine, after Björn Gustavsson, who wrote and maintains the current version."
Whether the B is for Bogdan or Bjorn, there's something really fun and Space Quest-y about it.
The BEAM is fascinating for many reasons, including being register-based.
I really just wish the BEAM was portable in the way the JVM is. The BEAM hooks into so many system libraries, you must compile it on every flavor of linux instead of just unpacking a tarball.
This means you either must use your distro package manager's version, or compile from scratch. If you want to control the exact version that's being used across your team (via `asdf` or similar), this practically means you'll end up compiling the BEAM over and over...
Burrito works very well in my experience. I've used it for distributing an implementation of breakout in Elixir with OpenGL and Metal rendering backends as a binary. Pretty neat!
> The BEAM is fascinating for many reasons, including being register-based.
> I really just wish the BEAM was portable in the way the JVM is.
Inferno is both register based and highly portable using the same tool chain as Plan 9 which runs seamlessly across multiple architectures. This eventually evolved into the Go tooling as Rob Pike came up with the Plan 9 design and worked on it with Ken Thompson. https://seh.dev/go-legacy/
Unfortunately Inferno was never fully completed and bit-rotted a bit but it still builds on systems with 32 bit support. There are various forks and even an attempted 64 bit version. To me its a great design as it not only runs on bare metal but also has a hosted option so it runs under Plan 9, Windows, MacOS/Unix/BSD/Linux. Talk about a portable OS...
To be clear, Inferno is the operating system. The virtual machine is Dis. There exist a few examples[1] of 64-bit Dis, but usually the problem people run into is making the Limbo[2] compiler spit out 64-bit code.
It's rather unfortunate, Inferno is a really nice system with a lot of interesting reference stuff implemented like a typed shell[3]. It's also Plan 9 in a box with all the accoutrements, and knowers will have jumped out of their seat at the implication. I can't understate how cool the Inferno system is.
I dunno what happened to the 64bit port, the author just up and deleted it with no reason given AFIK. Thankfully someone had a recent clone and uploaded it to the archive.
Limbo is incomplete, forget what exactly but a few people on the 9fans discord recently ran into issues. Always remember, Inferno was forced onto the Labs people by Lucent in an attempt to compete with Sun's Java and built in a year. Bell Labs did not do marketing and Lucent fumbled the whole thing.
Plan 9 in a box is only useful if you MUST use a foreign host like Linux. Otherwise I would much prefer the machine actually run Plan 9.
Correct me if I'm wrong, but you'd still have to compile it from source on nix, no?
On my relatively powerful workstation, Erlang/BEAM takes about 7 minutes to compile.
We're working around this currently by having a fat devcontainer image, pre-built with Erlang inside (from source) by our CI. It chews through CI minutes unavoidably due to how docker layer caching works.
It would be awesome to just download and unpack a tarball, regardless of which distro you're using.
We do exactly this at my dayjob - we have (multiple) very specific combinations of (erlang, elixir, hex, rebar3) that we use which are pinned to exactly the versions we need. We have a private Nix cache so we only have to build them once.
That said, learning nix and setting up a nix cache is still a lot of work. Docker buildx might offer you some more knobs to cache portions of your build in a finer-grained manner without having to take the nix plunge.
Nix is centered around the local Nix store and binary caching.
As long as the specific version of Erlang you’re using is present in either your Nix store or the global cache for your OS and arch (at cache.nixos.org), you should not need to compile anything.
And if you rely on custom builds, you can just setup your own binary cache. This is similar to remote caching in Bazel.
Nix is enormously complicated, kind of unstable and not well documented.
I get that if you've gone through the pain of learning it you get a system with some very nice properties. But casually suggesting "maybe try nix" is a bit like telling someone who wants to listen to Mozart "maybe try playing a piano".
OP is already trying to do something pretty un-casual:
> If you want to control the exact version that's being used across your team (via `asdf` or similar), this practically means you'll end up compiling the BEAM over and over...
So I think it is perfectly appropriate to suggest a sharp tool.
Nice. Have to spend some time reading it but i really like the minimalistic and clean design of your site content. No unnecessary colors/asides/verbiage/etc. nonsense but THE content and only the content presented directly.
A suggestion: Please add a "Overview" section in the beginning to provide the big-picture architecture since without that it would be hard to understand your code.
Did not know about it much before but apparently was doing something similar (in spirit) when experimenting with simple task execution queues in go. This is quite interesting and given that hot code reloading is a thing in beam it might be something to explore further.
The next best thing : Implementing a Functional Language for Highly Parallel Real Time Applications by J.L.Armstrong et al. (pdf) - https://www.cs.tufts.edu/~nr/cs257/archive/joe-armstrong/erl... Seems like this is the design behind the original JAM VM. The "References" section cites more early work.
See also The Erlang BEAM Virtual Machine Specification by the OG Bogumil Hausman himself ! Note: This document describes BEAM as it was in 1997. BEAM has grown and changed significantly between then and the time this note was added (2012). This information is mainly for historical interest.
- https://www.cs-lab.org/historical_beam_instruction_set.html
Together, they should provide a lot of insights into ERTS/BEAM.
Joe used to have all that code in his world-readable NFS-mounted home directory. He would just create a new directory for every idea or project. Take it with him from one computer to the next.
I hope that's preserved and one day published as e.g. the old MIT AI lab file system snapshots were.
(Robert Virding or Bjärne Däcker might well have a copy of the Prolog code to share if asked nicely.)
When can we be done with these cheap comments? It has really become tiring to have a comment tree on every HN post for people who don't know what the article is about. As the author often didn't submit their own article it is just a complaint with no possible resolution. Instead of taking a few seconds to find out what the article is about and maybe even clarifying it for your fellow readers, you are taking that time to write a comment that only detracts from a possible conversation.
If you can't bring yourself to search for 5 seconds and find out what an article is about, maybe you just close it and move on.
I still remember 14 years ago or so, when applied science posted his diy electron microscope build and a handful of top comments were low effort nerd snipes and criticisms.
Nothing to do about it, I don't think. Its the warty culture here.
The tone in which people like the parent comment is disgraceful. I’m sorry this is hacker news and hackers know that BEAM is the Erlang VM, no introduction or explanation needed. It is respected and admired as a great piece of engineering to be studied by all hackers.
He wasn’t an ass about it. And the people who don’t know what BEAM is can easily google their way to more information than they’d ever be able to get from a comment here.
Edit: I will say that’s a better take. It’s at least blatant about it being the personal attack you intended it to be instead of passive aggressively couching it behind the pretense of caring about community. If you want to be shitty to people, just do it. I’d prefer honest assholes than weasely manipulators.
You're looking at where I told someone not be rude, and you're interpreting that as a personal attack from me? Because I "want to be shitty"? No.
And the mention of community is not a pretense. I want them to recognize that a lot of qualified people don't in fact already know that specific thing. (This is separate from how easy it is to google.)
Also, if you're calling out personal attacks, the way they used the word "disgraceful" is much more personal than anything I said.
> You're looking at where I told someone not be rude
That’s just it, you didn’t tell them not to be rude. You hid behind nebulous shunning of “gatekeeping”.
>I want them to recognize that a lot of qualified people don't in fact already know that specific thing
Again, you didn’t actually do that though, did you? Instead you used the term colloquially meant to signal they are creating a “hostile” environment
> Also, if you're calling out personal attacks, the way they used the word "disgraceful"
I’m distinctly not calling out personal attacks, I literally just gave you a thumbs up for doing it instead of taking the virtue signaling finger wagging approach you previously used.
> Again, you didn’t actually do that though, did you? Instead you used the term colloquially meant to signal they are creating a “hostile” environment
> nebulous
I think you have an incorrect idea of what the word gatekeeping means.
It's not nebulous. It's saying they're doing a bad thing (being rude/synonym) by applying incorrect and artificial criteria about who is in a group (which I quoted).
Both versions of my comment had the same meaning. I wasn't hiding behind anything, just using different phrasing.
And no, my word choice was not to virtue signal. The word fit the situation so I used it.
No I understand clearly, it’s a weasel word and I dislike it. You use it to mask a personal attack (calling him an “ass”), shun behavior, and avoid the actual conflict of directly addressing what was said. Its annoying passive aggressive bullshit verbiage.
Calling out “gatekeeping” is virtue signaling at its very core.
"I’m sorry this is hacker news and hackers know that BEAM is the Erlang VM, no introduction or explanation needed." is being an ass to a lot of people.
Their tone was disgraceful, let me explain by giving you an example of how posts should be made.
“Hey! This looks interesting, quick search on Google didn’t explain what the BEAM is as well as I would like, can someone let me know what this is about in layman’s terms?”
This is inviting people to talk about the topic at hand. It puts the responsibility of knowing something squarely on the person who wants that information and it’s generally pleasant.
How the parent decided to phrase his desire for being spoon fed information was in fact disgraceful.
> I was always fascinated with BEAM (Bogdan Erlang Abstract Machine, a VM for languages like Erlang and Gleam) and how it allowed easy spawning of processes that didn’t share state, allowed for sending and selectively receiving messages, and linking to each other thus enabling creation of supervision trees.
That's all it takes. When you're writing about a niche topic (and nearly everything and anything interesting is a niche topic) then explain your jargon. It's considerate, reminds people who are familiar but might have forgotten, and introduces people unfamiliar with it to what your topic is.
Sometimes people want to understand what they're reading about and not have to play a little "guess what this is about" game. Clarity is a quality of good writing.
You do have a point there. I did forget about the [-].
However, I read the comments in hopes they are interesting. If we have a culture where the "I don't know what this thing is"-type comment is popular, people will post those comments more and more. This leads other people to spend their time replying to it, instead of engaging with the content of the article. In other words, it distracts other commenters, who might otherwise have contributed something good.
Second, I think having low value comments is undesirable by itself. We could all start posting "First!" on articles, and everyone who hates that can simply minimize them. I think you can see why that would not be great. We can argue whether this is a low-value comment but I already did that in my original reply: it is not addressed to the article author (in this case they happened to show up but generally they don't) so the complaint doesn't lead to anything, and the comment complains about having to read about a concept they are not familiar with, but does the exact same thing itself.
I think its written for people who already know what the BEAM is. The BEAM is the VM for Erlang or Elixir, similar to how Java has the JVM and C# has .NET essentially.
Nearly every personal blog post submitted here written for people that use a less-mainstream tool/environment/language draws aggressively obtuse comments by people mad that the author didn’t anticipate their lack of knowledge.
There have been math and CS paper submissions where people complained that the papers lacked a complete course on set theory or some CS theory concept the paper relied on. It's a weird thing to do, but apparently popular.
I think it’s an insecurity response— lashing out to distract themselves from feeling needlessly embarrassed for encountering something new or getting confused about something.
I was speaking more generally, but sure, I think the behavior fits. BEAM has a lot more surface area than Apache Beam does here — just do a site search for beam and see how far you have to go to see the Apache project. It’s ridiculous to expect the author of a blog post targeted at people interested in BEAM to disambiguate between them. Additionally, it’s a BEAM conference talk converted to a blog post and it says so right at the beginning of the article with a link to the conference. Thirdly, whoever submitted the link expecting a technical crowd to put in a modicum of effort to figure things out from context is completely reasonable. And how arbitrary is expecting the line to be drawn at your level of need? Shouldn’t project managers be able to read the article without having to look up VM meaning Virtual Machine? Or that functional programming isn’t any programming that uses a function? So yeah, I do not think it’s valid to criticize an author of a blog post aimed at people who already understand the subject for not putting a 1000’ overview at the top.
A criticism asking for one sentence that the author then went and added is pretty well short of lashing out in my book. And by itself is very weak evidence of insecurity. Shrug.
Because of you ask a person who works on Beam about “the Beam book” thats the one they are going to recommend. Who knows that the BEAM book is literally called “the BEAM Book”? There are many books like that, “the SRE book” is actually Site Reliability Engineering: How Google Runs Production Systems, etc.
> Who knows that the BEAM book is literally called “the BEAM Book”?
I mean, it's literally a link on a web page. You click the link, it takes you to The BEAM Book's page. This is why the WWW was invented, someone uses hypertext to create a link to something related to a reference. You click on the link, and you learn about what it is.
This keeps web pages from having to all include a full encyclopedia and dictionary and translations in 100 languages in every page. You use the technology of last century to create and integrate into a web of related content, where the links (ideally, but not always) contain additional related and informative content without the need to copy the contents of every page into every other page.
> I mean, it's literally a link on a web page. You click the link, it takes you to The BEAM Book's page.
Now instead of putting the details in the title, you have me reading paragraphs of text and clicking links to figure out what the author is talking about. Did I understand you correctly?
You are coming across as wilful, petulant and ignorant; hence stop digging the hole you are in. Don't argue for argument's sake.
We are not here to makeup for your shortcomings nor spoon-feed you knowledge in various domains.
People share whatever they want and if it is something i don't know anything about, i just do a quick Google search (eg. "what is BEAM in computer science") which immediately tells me what it is (especially the AI overview from Gemini at the beginning). You didn't even do this trivial step but are arguing that people should have anticipated your ignorance and handheld you; not going to happen ever.
Everything on HN can be categorized as one of; 1) Pointers to stuff(useful/useless/junk knowledge) 2) Opinions (clueless/beginner/intermediate/expert) 3) News. That's it; what you do with it is up to you.
I feel like this is just an opportunity to either learn what it is or move on. That’s essentially what hn and “hacking” is, isn’t it? This post caught my eye because I was learning about BEAM just last week for the first time.
I have learnt to love and embrace the BEAM.
Wikipedia says "Originally BEAM was short for Bogdan's Erlang Abstract Machine, named after Bogumil "Bogdan" Hausman, who wrote the original version, but the name may also be referred to as Björn's Erlang Abstract Machine, after Björn Gustavsson, who wrote and maintains the current version."
Whether the B is for Bogdan or Bjorn, there's something really fun and Space Quest-y about it.
I like to think the B stands for BEAM.
It obviously stands for "Benoit B Mandelbrot"
Very cliché.
Hey it’s a classic for a reason.
Because people are unoriginal.
edgy
I, for one, appreciate the classic sensibilities.
Same here! I also don't want "the facts to come in the way of a good story", and want to believe B is BEAM.
Sounds like it’s time for your nap.
The BEAM is fascinating for many reasons, including being register-based.
I really just wish the BEAM was portable in the way the JVM is. The BEAM hooks into so many system libraries, you must compile it on every flavor of linux instead of just unpacking a tarball.
This means you either must use your distro package manager's version, or compile from scratch. If you want to control the exact version that's being used across your team (via `asdf` or similar), this practically means you'll end up compiling the BEAM over and over...
You want https://github.com/burrito-elixir/burrito
This is very neat, thanks for the link!
Digging into it, you can get "universal" BEAM tarballs from here[1]. It links against muslibc and appears to bring it's own openssl. Very cool.
[1] https://beammachine.cloud/
Burrito works very well in my experience. I've used it for distributing an implementation of breakout in Elixir with OpenGL and Metal rendering backends as a binary. Pretty neat!
> The BEAM is fascinating for many reasons, including being register-based. > I really just wish the BEAM was portable in the way the JVM is.
Inferno is both register based and highly portable using the same tool chain as Plan 9 which runs seamlessly across multiple architectures. This eventually evolved into the Go tooling as Rob Pike came up with the Plan 9 design and worked on it with Ken Thompson. https://seh.dev/go-legacy/
Unfortunately Inferno was never fully completed and bit-rotted a bit but it still builds on systems with 32 bit support. There are various forks and even an attempted 64 bit version. To me its a great design as it not only runs on bare metal but also has a hosted option so it runs under Plan 9, Windows, MacOS/Unix/BSD/Linux. Talk about a portable OS...
To be clear, Inferno is the operating system. The virtual machine is Dis. There exist a few examples[1] of 64-bit Dis, but usually the problem people run into is making the Limbo[2] compiler spit out 64-bit code.
It's rather unfortunate, Inferno is a really nice system with a lot of interesting reference stuff implemented like a typed shell[3]. It's also Plan 9 in a box with all the accoutrements, and knowers will have jumped out of their seat at the implication. I can't understate how cool the Inferno system is.
[1] - https://github.com/Plan9-Archive/9ferno
[2] - https://en.wikipedia.org/wiki/Limbo_(programming_language)
[3] - https://inferno-os.org/inferno/man/2/alphabet-intro.html
I dunno what happened to the 64bit port, the author just up and deleted it with no reason given AFIK. Thankfully someone had a recent clone and uploaded it to the archive.
Limbo is incomplete, forget what exactly but a few people on the 9fans discord recently ran into issues. Always remember, Inferno was forced onto the Labs people by Lucent in an attempt to compete with Sun's Java and built in a year. Bell Labs did not do marketing and Lucent fumbled the whole thing.
Plan 9 in a box is only useful if you MUST use a foreign host like Linux. Otherwise I would much prefer the machine actually run Plan 9.
> The BEAM hooks into so many system libraries, you must compile it on every flavor of linux instead of just unpacking a tarball.
This isn't true, one can statically compile the BEAM for Linux exactly the same as the JVM. Here's an example: https://github.com/yoshi-monster/static_erlang/
Perhaps you should give Nix a try :)
Correct me if I'm wrong, but you'd still have to compile it from source on nix, no?
On my relatively powerful workstation, Erlang/BEAM takes about 7 minutes to compile.
We're working around this currently by having a fat devcontainer image, pre-built with Erlang inside (from source) by our CI. It chews through CI minutes unavoidably due to how docker layer caching works.
It would be awesome to just download and unpack a tarball, regardless of which distro you're using.
We do exactly this at my dayjob - we have (multiple) very specific combinations of (erlang, elixir, hex, rebar3) that we use which are pinned to exactly the versions we need. We have a private Nix cache so we only have to build them once.
https://www.cachix.org/ simplifies running a custom cache. Well worth the money, IMO.
That said, learning nix and setting up a nix cache is still a lot of work. Docker buildx might offer you some more knobs to cache portions of your build in a finer-grained manner without having to take the nix plunge.
Nix is centered around the local Nix store and binary caching.
As long as the specific version of Erlang you’re using is present in either your Nix store or the global cache for your OS and arch (at cache.nixos.org), you should not need to compile anything.
And if you rely on custom builds, you can just setup your own binary cache. This is similar to remote caching in Bazel.
Some more details on Nix caching here: https://zero-to-nix.com/concepts/caching/
Nix is enormously complicated, kind of unstable and not well documented.
I get that if you've gone through the pain of learning it you get a system with some very nice properties. But casually suggesting "maybe try nix" is a bit like telling someone who wants to listen to Mozart "maybe try playing a piano".
OP is already trying to do something pretty un-casual:
> If you want to control the exact version that's being used across your team (via `asdf` or similar), this practically means you'll end up compiling the BEAM over and over...
So I think it is perfectly appropriate to suggest a sharp tool.
How is it unstable? It's one of the most reliable pieces of software I have used honestly.
In any case 'nix-shell -p erlang|elixir' does not seem too complicated to me.
Flakes is still experimental despite being very widely used.
Flakes is also more stable than many "stable" projects. Flakes is more stable than Python 3, for example.
Nice. Have to spend some time reading it but i really like the minimalistic and clean design of your site content. No unnecessary colors/asides/verbiage/etc. nonsense but THE content and only the content presented directly.
A suggestion: Please add a "Overview" section in the beginning to provide the big-picture architecture since without that it would be hard to understand your code.
PS: In case you didn't see it, my comment here mentions some documents that you might find useful for your implementation - https://news.ycombinator.com/item?id=45883694
Did not know about it much before but apparently was doing something similar (in spirit) when experimenting with simple task execution queues in go. This is quite interesting and given that hot code reloading is a thing in beam it might be something to explore further.
Now I'm curious whether Joe Armstrong's original Prolog implementation of the VM is available anywhere, but I doubt it.
The next best thing : Implementing a Functional Language for Highly Parallel Real Time Applications by J.L.Armstrong et al. (pdf) - https://www.cs.tufts.edu/~nr/cs257/archive/joe-armstrong/erl... Seems like this is the design behind the original JAM VM. The "References" section cites more early work.
See also The Erlang BEAM Virtual Machine Specification by the OG Bogumil Hausman himself ! Note: This document describes BEAM as it was in 1997. BEAM has grown and changed significantly between then and the time this note was added (2012). This information is mainly for historical interest. - https://www.cs-lab.org/historical_beam_instruction_set.html
Together, they should provide a lot of insights into ERTS/BEAM.
Joe used to have all that code in his world-readable NFS-mounted home directory. He would just create a new directory for every idea or project. Take it with him from one computer to the next.
I hope that's preserved and one day published as e.g. the old MIT AI lab file system snapshots were.
(Robert Virding or Bjärne Däcker might well have a copy of the Prolog code to share if asked nicely.)
Clicked on the link because I don’t know what a “BEAM” is, was not disappointed
[flagged]
When can we be done with these cheap comments? It has really become tiring to have a comment tree on every HN post for people who don't know what the article is about. As the author often didn't submit their own article it is just a complaint with no possible resolution. Instead of taking a few seconds to find out what the article is about and maybe even clarifying it for your fellow readers, you are taking that time to write a comment that only detracts from a possible conversation.
If you can't bring yourself to search for 5 seconds and find out what an article is about, maybe you just close it and move on.
Hn has for the most part always been like this.
I still remember 14 years ago or so, when applied science posted his diy electron microscope build and a handful of top comments were low effort nerd snipes and criticisms.
Nothing to do about it, I don't think. Its the warty culture here.
Agreed.
The tone in which people like the parent comment is disgraceful. I’m sorry this is hacker news and hackers know that BEAM is the Erlang VM, no introduction or explanation needed. It is respected and admired as a great piece of engineering to be studied by all hackers.
I didn't know what it was, so I used the grand information retrieval device I was already sitting at to look it up
I knew what the BEAM was, but in his defense, searching "BEAM" doesn't bring up anything relevant in the first few pages I looked at.
Disgraceful? It's a pretty polite request.
> hackers know that BEAM is the Erlang VM, no introduction or explanation needed
This is some pretty intense gatekeeping, pal.
Can’t wait until we collectively drop whining about “gatekeeping”
[flagged]
He wasn’t an ass about it. And the people who don’t know what BEAM is can easily google their way to more information than they’d ever be able to get from a comment here.
Edit: I will say that’s a better take. It’s at least blatant about it being the personal attack you intended it to be instead of passive aggressively couching it behind the pretense of caring about community. If you want to be shitty to people, just do it. I’d prefer honest assholes than weasely manipulators.
Oh you made an edit.
You're looking at where I told someone not be rude, and you're interpreting that as a personal attack from me? Because I "want to be shitty"? No.
And the mention of community is not a pretense. I want them to recognize that a lot of qualified people don't in fact already know that specific thing. (This is separate from how easy it is to google.)
Also, if you're calling out personal attacks, the way they used the word "disgraceful" is much more personal than anything I said.
> You're looking at where I told someone not be rude
That’s just it, you didn’t tell them not to be rude. You hid behind nebulous shunning of “gatekeeping”.
>I want them to recognize that a lot of qualified people don't in fact already know that specific thing
Again, you didn’t actually do that though, did you? Instead you used the term colloquially meant to signal they are creating a “hostile” environment
> Also, if you're calling out personal attacks, the way they used the word "disgraceful"
I’m distinctly not calling out personal attacks, I literally just gave you a thumbs up for doing it instead of taking the virtue signaling finger wagging approach you previously used.
> Again, you didn’t actually do that though, did you? Instead you used the term colloquially meant to signal they are creating a “hostile” environment
> nebulous
I think you have an incorrect idea of what the word gatekeeping means.
It's not nebulous. It's saying they're doing a bad thing (being rude/synonym) by applying incorrect and artificial criteria about who is in a group (which I quoted).
Both versions of my comment had the same meaning. I wasn't hiding behind anything, just using different phrasing.
And no, my word choice was not to virtue signal. The word fit the situation so I used it.
No I understand clearly, it’s a weasel word and I dislike it. You use it to mask a personal attack (calling him an “ass”), shun behavior, and avoid the actual conflict of directly addressing what was said. Its annoying passive aggressive bullshit verbiage.
Calling out “gatekeeping” is virtue signaling at its very core.
"I’m sorry this is hacker news and hackers know that BEAM is the Erlang VM, no introduction or explanation needed." is being an ass to a lot of people.
I disagree, but I don’t think we’ll see eye-to-eye on much when it comes to the behavior of commentators
Hey Dylan, you’re being an ass.
Their tone was disgraceful, let me explain by giving you an example of how posts should be made.
“Hey! This looks interesting, quick search on Google didn’t explain what the BEAM is as well as I would like, can someone let me know what this is about in layman’s terms?”
This is inviting people to talk about the topic at hand. It puts the responsibility of knowing something squarely on the person who wants that information and it’s generally pleasant.
How the parent decided to phrase his desire for being spoon fed information was in fact disgraceful.
So, question. Are you upset the blog author did go put in an extra sentence to say what BEAM is? Is that playing into the disgrace?
https://news.ycombinator.com/item?id=45885347
Oh do get a hobby Dylan.
Same to you?
But okay bye I guess.
The curse of knowledge in this thread is mind boggling.
> I was always fascinated with BEAM (Bogdan Erlang Abstract Machine, a VM for languages like Erlang and Gleam) and how it allowed easy spawning of processes that didn’t share state, allowed for sending and selectively receiving messages, and linking to each other thus enabling creation of supervision trees.
That's all it takes. When you're writing about a niche topic (and nearly everything and anything interesting is a niche topic) then explain your jargon. It's considerate, reminds people who are familiar but might have forgotten, and introduces people unfamiliar with it to what your topic is.
Sometimes people want to understand what they're reading about and not have to play a little "guess what this is about" game. Clarity is a quality of good writing.
The intended audience is Code BEAM Europe 2025 attendees.
Hey all, I've just added a paragraph about this. Thanks for the feedback.
> It has really become tiring to have a comment tree on every HN post
Has it actually? Why is this "tiring?"
> When can we be done with these cheap comments?
Do what most other people did. Write a cheap reply.
> you are taking that time to write a comment that only detracts from a possible conversation.
Just click the little [-].
> maybe you just close it and move on.
Ironic.
You do have a point there. I did forget about the [-].
However, I read the comments in hopes they are interesting. If we have a culture where the "I don't know what this thing is"-type comment is popular, people will post those comments more and more. This leads other people to spend their time replying to it, instead of engaging with the content of the article. In other words, it distracts other commenters, who might otherwise have contributed something good.
Second, I think having low value comments is undesirable by itself. We could all start posting "First!" on articles, and everyone who hates that can simply minimize them. I think you can see why that would not be great. We can argue whether this is a low-value comment but I already did that in my original reply: it is not addressed to the article author (in this case they happened to show up but generally they don't) so the complaint doesn't lead to anything, and the comment complains about having to read about a concept they are not familiar with, but does the exact same thing itself.
[dead]
I think its written for people who already know what the BEAM is. The BEAM is the VM for Erlang or Elixir, similar to how Java has the JVM and C# has .NET essentially.
> similar to how Java has the JVM and C# has .NET essentially.
I'm pretty sure that in this analogy, C# has the CLR.
Yeah, I always called it .NET runtime instead because everyone who isnt deep into .NET will understand what is meant.
[flagged]
I think there are plenty of context clues in the first few sentences.
> ... fascinated with BEAM, how it allowed easy spawning of processes ...
> ... the appeal of BEAM languages ...
> ... haven’t read The BEAM Book yet ...
> ... examples are written in Elm ...
[flagged]
That’s one reason Apache shouldn’t have used essentially the same name as a well-known VM released more than 20 years prior.
This feels like willful ignorance.
Can you really read the blog without realizing that there is a possibility this isn’t referring to Apache beam?
Nearly every personal blog post submitted here written for people that use a less-mainstream tool/environment/language draws aggressively obtuse comments by people mad that the author didn’t anticipate their lack of knowledge.
There have been math and CS paper submissions where people complained that the papers lacked a complete course on set theory or some CS theory concept the paper relied on. It's a weird thing to do, but apparently popular.
I think it’s an insecurity response— lashing out to distract themselves from feeling needlessly embarrassed for encountering something new or getting confused about something.
I hope you're not accusing the original commenter here of "lashing out" for wanting one definition at the start.
I was speaking more generally, but sure, I think the behavior fits. BEAM has a lot more surface area than Apache Beam does here — just do a site search for beam and see how far you have to go to see the Apache project. It’s ridiculous to expect the author of a blog post targeted at people interested in BEAM to disambiguate between them. Additionally, it’s a BEAM conference talk converted to a blog post and it says so right at the beginning of the article with a link to the conference. Thirdly, whoever submitted the link expecting a technical crowd to put in a modicum of effort to figure things out from context is completely reasonable. And how arbitrary is expecting the line to be drawn at your level of need? Shouldn’t project managers be able to read the article without having to look up VM meaning Virtual Machine? Or that functional programming isn’t any programming that uses a function? So yeah, I do not think it’s valid to criticize an author of a blog post aimed at people who already understand the subject for not putting a 1000’ overview at the top.
A criticism asking for one sentence that the author then went and added is pretty well short of lashing out in my book. And by itself is very weak evidence of insecurity. Shrug.
Semantics. Shrug.
Erlang isn't even that obscure.
Who would look at something called The BEAM Book with a link to [1] and think that it refers to a book with a completely different title?
[1] https://blog.stenmans.org/theBeamBook/
Because of you ask a person who works on Beam about “the Beam book” thats the one they are going to recommend. Who knows that the BEAM book is literally called “the BEAM Book”? There are many books like that, “the SRE book” is actually Site Reliability Engineering: How Google Runs Production Systems, etc.
> Who knows that the BEAM book is literally called “the BEAM Book”?
I mean, it's literally a link on a web page. You click the link, it takes you to The BEAM Book's page. This is why the WWW was invented, someone uses hypertext to create a link to something related to a reference. You click on the link, and you learn about what it is.
This keeps web pages from having to all include a full encyclopedia and dictionary and translations in 100 languages in every page. You use the technology of last century to create and integrate into a web of related content, where the links (ideally, but not always) contain additional related and informative content without the need to copy the contents of every page into every other page.
> I mean, it's literally a link on a web page. You click the link, it takes you to The BEAM Book's page.
Now instead of putting the details in the title, you have me reading paragraphs of text and clicking links to figure out what the author is talking about. Did I understand you correctly?
You are coming across as wilful, petulant and ignorant; hence stop digging the hole you are in. Don't argue for argument's sake.
We are not here to makeup for your shortcomings nor spoon-feed you knowledge in various domains.
People share whatever they want and if it is something i don't know anything about, i just do a quick Google search (eg. "what is BEAM in computer science") which immediately tells me what it is (especially the AI overview from Gemini at the beginning). You didn't even do this trivial step but are arguing that people should have anticipated your ignorance and handheld you; not going to happen ever.
Everything on HN can be categorized as one of; 1) Pointers to stuff(useful/useless/junk knowledge) 2) Opinions (clueless/beginner/intermediate/expert) 3) News. That's it; what you do with it is up to you.
It’s poor writing.
> This is my Code BEAM Europe 2025 talk, converted to a blogpost.
The blog is a text version of the talk, not an invitation to watch the talk.
I feel like this is just an opportunity to either learn what it is or move on. That’s essentially what hn and “hacking” is, isn’t it? This post caught my eye because I was learning about BEAM just last week for the first time.
The VM used for Erlang and Elixir.
...and Gleam.
...and LFE and Luerl and probably others that I'm forgetting.
I have an older list, but I don’t know how many of the links are still valid.
https://gist.github.com/macintux/6349828#alternative-languag...
https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)
Beautiful! :clap: