sublimefire 14 minutes ago

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.

FredPret 14 hours ago

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.

Alupis 12 hours ago

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...

  • valorzard 10 hours ago
    • Alupis 9 hours ago

      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/

    • harrisi 9 hours ago

      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!

  • lpil 5 hours ago

    > 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/

  • hamandcheese 10 hours ago

    Perhaps you should give Nix a try :)

    • Alupis 10 hours ago

      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.

      • Cyph0n 10 hours ago

        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/

    • IshKebab 6 hours ago

      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".

      • 331c8c71 2 hours ago

        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.

macintux 16 hours ago

Now I'm curious whether Joe Armstrong's original Prolog implementation of the VM is available anywhere, but I doubt it.

  • lukego 4 hours ago

    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.)

  • rramadass 11 hours ago

    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.

rramadass 11 hours ago

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

efitz 16 hours ago

Maybe the post should explain what [a?] BEAM is, rather than invite the reader to go view a conference presentation recording.

  • depr 16 hours ago

    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.

    • hatefulheart 15 hours ago

      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.

      • Dylan16807 14 hours ago

        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.

      • mikestorrent 15 hours ago

        I didn't know what it was, so I used the grand information retrieval device I was already sitting at to look it up

        • colecut 13 hours ago

          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.

    • themafia 7 hours ago

      > 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.

      • depr 3 hours ago

        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.

    • observationist 15 hours ago

      > 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.

      • itishappy 15 hours ago

        The intended audience is Code BEAM Europe 2025 attendees.

      • mjaniczek 15 hours ago

        Hey all, I've just added a paragraph about this. Thanks for the feedback.

      • [removed] 14 hours ago
        [deleted]
    • potsandpans 15 hours ago

      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.

  • giancarlostoro 16 hours ago

    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.

    • thaumasiotes 15 hours ago

      > similar to how Java has the JVM and C# has .NET essentially.

      I'm pretty sure that in this analogy, C# has the CLR.

    • jedmeyers 16 hours ago

      A lot of people know that Beam is an open-source unified programming model for defining data processing pipeline, both batch and streaming (B[atch and Str]eam), in a way that’s portable across different execution engines. That's why people are asking to clarify what Beam is before sending us to watch the conference recordings.

      • MeetingsBrowser 16 hours ago

        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 ...

  • MeetingsBrowser 16 hours ago

    > 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.

  • calmworm 10 hours ago

    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.

  • joshuaissac 16 hours ago

    The VM used for Erlang and Elixir.