Recent submissions

Comment · 22 days ago
Beni creator here.

This is a language/research project. I want to explore what a combination of a purely functional language and a very advanced compiler is capable of generating in terms of JS.

One novel idea (AFAIK) is adding a borrow checker. Other languages targeting the browser have added borrow checkers, but that's been driven by WASM. In Beni, lists are immutable, but instead of being implemented using tries, they use regular JS arrays with in-place mutations. The borrow checker guarantees that ownership isn't shared and that it's safe to update them. One concern I have is that this could cause DX issues due to borrow checker errors. I don't think that's going to be an issue given that the language is functional, but it's still an open question.

The "Platforms" concept is an idea I borrowed from Roc, which also inspired many of Beni's design decisions. In Beni, you can't call JS directly, just like in Elm. Platforms wrap the JS ecosystem in a safe way so that it can be consumed by Beni. There's currently no way to install third-party JS libraries. I believe the NPM ecosystem is broken: even small libraries pull in hundreds of indirect dependencies. With AI, new CVEs are being found every week, and keeping `npm audit` clean has become a daily struggle.

The irony is that updating dependencies to fix these mostly harmless CVEs just increases the risk of supply chain attacks. My idea for Beni is to make it "batteries included" so that people need fewer third-party dependencies. For everything else, I think the correct approach is to vendor the code you need.

Comment · 2 months ago
This is very sus, I got almost the same pelican with Fable 5.1.
Comment · 5 months ago
I got a lot of my taste in music from my father. Over time, I started discovering things on my own and branching out, but he definitely laid the groundwork. Led Zeppelin is still my favourite band. We didn't have the best relationship, to put it mildly, but I still think of him when I hear these songs, and I remember him fondly.
Comment · 7 months ago
That exists, it's called code.
Comment · 11 months ago
I think LLMs have solved that for Nix. I recently moved my homelab from an Ansible/Debian setup to NixOS. As long as I understand at a high level what Nix is and what problems it solves, I can let the LLM deal with the configuration language.
Comment · 1 year ago
I’ve been reverse-engineering an obscure childhood game called Entomorph:

https://github.com/entomorph/reverse-engineering

I started the project when ChatGPT 4 was first released, using it as a way to explore what LLMs could actually do. I also find working on it very relaxing, there is something cool about uncovering secrets hidden in code for more than twenty years.

Comment · 1 year ago
The main advantage of an ORM isn’t query building but its deep integration with the rest of the ecosystem.

In Django, you can change a single field in a model, and that update automatically cascades through to database migrations, validations, admin panels, and even user-facing forms in the HTML.

Comment · 1 year ago
FastAPI/SQLAlchemy won’t be more scalable than a typical Django setup. The real bottleneck is the threading model, not the few microseconds the framework spends before handing off to user code. Django running under uWSGI with green threads can outperform Go-based services in some scenarios, largely thanks to how efficient Python’s C ABI is compared to Go.
Comment · 1 year ago
Sounds like a hammer-and-nail problem to me.

Django works perfectly with green threads. It’s a superior model to async and avoids the whole function-coloring mess. I’ve seen Django setups outperform Go-based services running under similar conditions.

JavaScript is a terrible language and should only be used when there’s absolutely no alternative, such as in browsers.

Comment · 1 year ago
In Brazil, you are expected to bring food or drinks when you are invited as a guest to a party. If you stay until the end, you are also expected to help clean up the place. Guests will often take over certain parts of the party without even asking, such as preparing drinks, taking care of the barbecue, serving people, or going to the store to buy more drinks.
Comment · 1 year ago
That's why I still use two editors: IntelliJ for when doing "serious" work and Sublime when I need to edit random files or a huge JSON. I don't need anything in between.
Comment · 1 year ago
The only thing that kept me from choosing Elixir was the lack of a type checker. Has that changed?
Comment · 1 year ago
I work with Node every day, and the library ecosystem is a nightmare. Just keeping a project from falling apart takes a huge amount of effort. Libraries are either abandoned when the author moves on, or they push major releases almost every month. And there’s a new CVE practically every week.

Python libraries are much more stable and reliable.

Comment · 1 year ago
That’s called Python or Ruby.

I’ve been building web apps since the ’90s, and I never understood the appeal of PHP. It was always a terrible language, and there were usually better alternatives available.

Comment · 1 year ago
Nah man, I work with them daily. For me, the ceiling was reached a while ago. At least for my use case, these new models don’t bring any real improvements.

I’m not even talking about large codebases. It struggles to generate a valid ~400 LOC TypeScript file when that requires above-average type system knowledge. Try asking it to write a new-style decorator (added in 2023), and it mostly just hallucinates or falls back to the old syntax.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton