I receive webhooks all the time as ack that something was processed/ or a notification of the status of some sort of thing in an external system that we don't control.
HN user
weatherlight
[ my public key: https://keybase.io/proletariat; my proof: https://keybase.io/proletariat/sigs/Uv4J7-JLh3FUzOh12m1RmZDS2BCXWC6yuMbNXnlg1nM ]
I love Lisps, ML-family languages, etc. Languages like Java or Go are just painful for me to program in, and I know I’m probably in the minority there.
But honestly, I think a lot of it comes down to the fact that syntax carries semantic expectations. Certain syntax makes you expect a certain model of programming: mutability, imperative control flow, objects everywhere, etc.
Gleam is a good counterexample. It has an ALGOL-ish syntax, but semantically it’s a functional language, and it’s wonderful to read/write.
Same with Ruby: the parts of Ruby that still make me smile are mostly the parts that feel Lisp-adjacent.
It’s kind of wild that we live in a world where, for most programmers, syntax seems to matter more than semantics.
I'm working on Glyph, Its a is a statically typed functional language in the ML family.
Surface syntax is mostly SML-1997-ish, but underneath it's a different thing: simple-sub type inference, algebraic effects, modular implicits, and Perceus-style reference counting instead of a tracing GC.
The compiler is currently a Rust frontend -> Zig codegen -> native binary pipeline.
Its been a lot of fun thus far.
The BEAM virtual machine. Its has lightweight isolated processes, message passing, supervisors, hot-ish runtime introspection, and fault containment are not libraries bolted on later. They are the substrate. not an after thought.
if you are build an app that needs the following: + many concurrent users + real-time UI + background jobs + workflows + stateful sessions + distributed events + failure isolation + “this thing should keep running for months”
You're going to want the thing built on the BEAM.
Slight misunderstanding. The LLM didn't generate Zig. My compiler does.
The model's work was in the Rust compiler internals, specifically the borrow-inference and refcount-insertion passes (Perceus-style ownership analysis). Zig is just the compiler's codegen target, the same way another compiler might emit LLVM IR or C.
The only Zig written by hand is the runtime: allocator code, RC primitives, list/string operations, etc. It's pure Zig, no libc, but it's small, stable, and was mostly untouched during this work.
The model only touched Zig indirectly, by reading the compiler's generated output to verify whether a fix worked. For example: checking that a drop was emitted before a parameter-slot reassignment. That's reading machine-generated code for correctness, not "the LLM writes Zig." Both models handled that part fine.
The 16 failures vs. 1 success were all in the ownership analysis, and that code is Rust.
Yes, iit had access. Thats actually the point.
I maintain a failure registry in the repo. Every failed attempt gets documented with the exact mechanism, the test that regressed, the revert SHA, and an instruction to start from that frontier. Fable read all of it.
But so did Opus.
Each of the 16 Opus failures ran in the same harness with the same accumulating registry. By attempt 15, it had disproofs 1–14 in context. By the end, Opus had basically the same corpus that Fable started with, and it still kept failing, sometimes by re-deriving an already-disproved approach in a slightly different shape.
So “it leveraged the previous work” doesn’t really separate them. Both had the leverage. Only one converted it.
What changed wasn’t more context. It was that Fable rejected a premise inside the context.
The registry’s standing framing was: “this needs whole-program borrow inference, which conflicts with per-module incrementality” (architecturally blocked.) Fable ran around 5 fresh attempts in-session, hit the same wall, and then noticed the framing was a red herring: the borrow analysis already runs module-wide, and for a single-module program, the module is the whole program.
Opus read that same framing for months and treated it as a constraint. Fable falsified it.
its the same repo, same rules, same disproof history, same workflow. The model was the only variable that changed, and the outcome flipped. Is it possible that attempt 17 by Opus could have figured it out? sure. but there's 16 previous attempts that say otherwise.
As fars as anecdotes go, that’s about as controlled as it gets.
I had almost the opposite experience.
I'm building a compiler for a language without a tracing GC, so a big chunk of the work is around memory management: functional in-place update, reuse analysis, and a Perceus-style reference-counting strategy similar to what Koka uses. The hard part was that my use case wasn't exactly covered by the Koka/Perceus paper. The prior art got me maybe 75% of the way there, but the remaining 25% was a cluster of bugs with very similar shapes and no obvious published solution.
With Opus, I kept getting stuck in this loop where it would fix one case, but break another case elsewhere in codegen. We ended up with something like 16 failed experiments just for one bug class. The workflow was: run an experiment, identify the shape of the bug, propose a fix, check whether it emitted the correct Zig, then see if the fix broke any previous memory-management cases. It was useful, but it kept choking on the parts where there wasn't clean prior art to lean on.
Fable was a different story for me. It one-shotted the Class A bug cluster, and then basically said "by the way, your previous attempts have these structural problems." More importantly, it identified the other related bug classes and came up with workable strategies for applying the Perceus-style memory management in those shapes too.
That's obviously anecdotal, and I'm not claiming Fable is universally better. But in my case, this was not a toy frontend wireframe. It was compiler work involving ownership, reuse, RC/drop behavior, and Zig codegen. The thing that surprised me was that Fable seemed better precisely where the problem wasn't just "reproduce known prior art", but required filling in a missing piece.
Also worth noting: I'm not using the API. I'm using the Max plan, so maybe there are product-path differences here. But I definitely did not have the "unpredictable beyond toy-scale" experience. For this particular compiler/memory-management problem, it probably saved me a ridiculous amount of time and money.
Really depends of the ergonomics of the language. In erlang/elixir/beam langs etc, its incredibly ergonomic to write code that runs on distributed systems.
you have to try really hard to do the inverse. Java's ergonomics, even with Akka, lends its self to certain design patterns that don't lend itself to writing code for distributed systems.
he's taking a 50% paycut going from the US to Brussels, but its more than what he will be making in his home country i guess.
We have a really talented engineer on our team (in the US), who has a green card and everything. He's taking a job in Brussels, he said very plainly hes not sticking around to find out what happens next. I don't blame him.
Who is this for? Who is the target audience? Mac users/ Windows users?
I agree. Having children does make ones priorities very cut and dry. I found it a lot easier to "adult" once I had children. My Friends, at the time often asked, "Is having children hard?" I often replied, in the beginning at least, "Children are easy, it's everything else that is hard."
The project looks very young. I do like the goals of the project though, and I like that it's on the BEAM.
I've been using Alpha(as my main driver!) for a year now, there's been a few hiccups here and there but its been very good. I prefer this to Gnome.
It's my main driver for software development, it was initially a dual boot system with windows, but I found that I could use Steam with very little configuration and could do all my gaming in linux(Cosmic DE/PopOS, I have a Nvidia GPU) as well. Works out of the box with Bigwig Studio and my Soundcard (Ultralite mk5)
I use a mix of the Cosmic store and nix for packages and programs.
I don't need to use windows ever again for anything and it makes me very happy.
I can. it's called Erlang. true an false are just atoms.
I live a 20 minute walk away. I never tire of looking at it. When friends come to visit I usually skip the touristy stuff but I will always accompany them to go see the Sagrada Família.
quackery
love the little heart filled note you left in the game's files :) I hope Henrique finds it one day too.
:disksup.get_disk_info/1 (from :os_mon) just calls into the underlying OS once, grabs the info, and returns it. It’s not a blocking “long-running monitor” the way a NIF doing I/O in a scheduler thread would be. https://www.erlang.org/docs/26/man/disksup#get_disk_info-1
^ just use this.
:disksup.get_disk_data/0, which caches results in the :disksup server that updates every N seconds (configurable) which is what you are referring to.. https://www.erlang.org/docs/26/man/disksup#get_disk_data-0
because the author self admitted they don't know C! One of the reason why people use the Beam VM is because its robust and fault tolerant.
a lot of the choice here are made at the expense of VM's health.
also why wouldn't anyone just use :disksup.get_disk_info/1. (Thats immediate) calling :disksup.get_disk_info/1 won’t mess with the scheduler in the way a custom NIF or a big blocking port might.
I see the above code/lib and just see reflags all over the place.
I love his channel. I have no interest in this subject but I like his style of lecturing and showing/teaching. I watch all his stuff when it drops.
Why C instead of Rust or Zig? Rustler and Zigler exist. I feel like a Vibecoded NIF in C is the absolute last thing I would want to expose the BEAM to.
3 out of 5 of all the phone calls you've ever made was managed by a box somewhere running the Erlang VM (BEAM) which Elixir gets all its concurrency and parallelism from.
And no, Discord has not moved away from Elixir. While they have adopted Rust for certain parts of their infrastructure, Elixir remains a core part of their backend, particularly for real-time communication and chat infrastructure.
https://x.com/mattjay/status/1913023007263543565/photo/1
^ technical details here.
ehhhh, kinda? the US and Spain have a tax agreement.
I'm a dual citizen (US, Spain), I moved to Spain 1 year ago. I need to completely divest from the US.
I said this else where, but, dramatic foreign policy shifts and realignments only make the U.S. even less attractive as an ally and a partner. Decades of relationships are being strained in the attempt of mending ties with a state that never really did much to advance America's interests in the modern era. And it could all be completely undone in four years. The whip lash of back and forth, radical shifts in policy, are as damaging as the acts that directly alienate America's global partners.
The US has basically said that. It doesn't matter though, because at the end of the day, dramatic foreign policy shifts and realignments only make the U.S. even less attractive as an ally and a partner. Decades of relationships are being strained in the attempt of mending ties with a state that never really did much to advance America's interests in the modern era. And it could all be completely undone in four years. The whip lash of back and forth, radical shifts in policy, are as damaging as the acts that directly alienate America's global partners.
...where the shadows of men's thoughts lengthen in the afternoon, when the twin suns sink into the lake of Hali; and my mind will bear for ever the memory of the Pallid Mask
So good, So many question. So many allusions to things that aren't explained but feel whole, but unknowable. They exist, but not for you.I meant to type 1895! *ugh.