lukaslalinsky

Joined 16 years ago

Karma
1,625
Submissions
599
Member since
Jul 25
https://acoustid.biz/ https://acoustid.org/ https://lalinsky.com/
View on Hacker News

Recent submissions

Comment · 2 days ago
But written in Go, and I would expect the NetBSD base only includes software buildable using tools already in the base system.
Comment · 2 days ago
If you know what you want to do (i.e. you have the architecture/pseudo-code in your head already), LLMs are a actually quite good at transforming that into real code and do save you time/effort. If you are using them like slot machines, and hope for the best after a vague prompt, then yes, it's not worth it, it just leads to frustration and wasted energy.
Comment · 2 days ago
I was a fan of the Debian GNU/kFreeBSD project, I wanted to use FreeBSD back then, but I was unhappy with the BSD approach to software packaging. But even that was abandoned due to lack of interest. People who want to use BSDs just generally prefer the BSD way of doing things. I might be wrong, but I don't think the anti-AI ex-Linux-user crowd is large enough for this to become successful. I think a more useful work from the anti-AI community would be to start improving the driver situation in NetBSD/OpenBSD, so it can be used on modern machines, and just accept the BSD way of packaging software.
Comment · 3 days ago
While you could say that, all the operations are documented behavior. You need to assume they will block. If the blocking happens in userspace runtime or in the kernel doesn't matter. And you, as the application author, are the one choosing which runtime to use. This just allows the libraries to be generic.
Comment · 3 days ago
There is a difference between single-threaded and multi-threaded, but if you use `io.concurrent` or `io.async`, you are expected to have your code assume multi-threaded enviroment. And there is no visible behavior change between blocking and non-blocking backend, assuming you are not calling external libraries that do their own I/O. So code written and tested on blocking threaded I/O, will work just fine on async implementation. All I/O operations are the yield point.
Comment · 3 days ago
There is no magic about the I/O interface. It's a regular dynamic dispatch, the same as if you use virtual functions in C++. Currently, and in the foreseeable future, there are only two options how it can run, blocking mode where each task occupies a dedicated thread, or using stackful coroutines. The interface implements blocking functions, there is no async waiting anywhere in there. But because it's dynamic dispatch, it allows the async implementation to do the "prepare operation, suspend until completed, wake up" dance, where the threaded implementation would just run the blocking syscall directly. There are plans to add stackless coroutines, but that will require many language restrictions to happen first, so it's not going to happen any time soon and when it does, the interface will likely change to accomodate it.
Comment · 3 days ago
You are looking at this from the wrong perspective. If you are fine with automatic allocations and RAII like you have in C++ or Rust, or with a garbage collected language, there is pretty much no reason to even look at Zig.

Zig is a language to use when you do need the control, mostly because of performance reasons. And once you are in, you start thinking how to manage your allocations and arenas are the logical outcome, once you notice that your application has scopes that can be destroyed at once.

If you need an argument why arenas are better than RAII, then you likely don't have the performance needs to even consider using Zig, because outside of performance, arenas are not better.

Comment · 5 days ago
My biggest advice is to keep programming for fun. I don't know what do you do at work, but for me work was never the satisfying activity what I started programming for. Pretty much all the problems at work were obvious and just needed the code written. But outside of work, you get to experiment, you get to learn, solve challenges. I started programming because I was fascinated by how what we learn at math class (trigonometry) can be used to display things on the computer (old 8bit one). Then I rented all the books from the local library and studied, even though I didn't have a computer at home. And this kind of kept me going. I always had a personal project which can occupy my head, and in the past, when I got home, I could try to write the ideas into code. These days, I use the agents for the last step, but that step was never the fun part for me, it was the thinking and "connecting the dots".
Comment · 7 days ago
How long have you been using it? I've always been disappointed with similar systems, etcd including.
Comment · 10 days ago
I think you are misunderstanding what the article suggests. std::atomic::wait and std::atomic::notify_all are the C++ abstractions over futexes. The whole concept of the future can be expressed in terms of atomics and futexes. The only problem is that the C++ standard doesn't have std::atomic::wait_for.
Comment · 12 days ago
I'm Slovak, and when I was a kid, I was really wondering what is the thing that makes people Slovak, what is the unifying thing. And only later in life I realized, that there is not much to it. It's just people that happened to be living in this area and stayed throughout the different times. Many cultures came and left. All the slavic languages we kind of fluid for a very long time, the standardization is recent, if you look at it from global point of view. The sad part is, this is not really even taught in local schools. And I also find it fascinating, that it's such a wild blend of cultures and yet the country/nature where the people lived formed them to something unique.
Comment · 17 days ago
How fast does it go when you do a few PostgreSQL queries per request?

Look at https://www.http-arena.com/. For raw throughput on keep-alive requests, low-level languages are going to win without a question. But once you put database roundtrip into the mix, the distance gets much smaller.

And I'm saying this as an author of another HTTP server in a low-level language.

Comment · 17 days ago
You would be surprised how fast Node/Bun can be if you scale them properly. If you use Bun, you are using uWebSockets already. If what you are doing in your application is database queries and some template rendering, you might not actually gain that much from these compiled languages.
Comment · 17 days ago
And then it reads all the AI-written "docs" from the previous changes, at which point it's all so muddy, it just tries to copy the style and output more junk and more verbose "docs". This is why I never let AIs maintain documents on their own.
Comment · 17 days ago
In my experience, the worst crap gets into the codebase through updates. Especially when dealing with something hard, Claude will take shortcuts, that undermines the project's quality. In my projects, I deal with it by still pair programming with it. But as far as I understand, Anthropic deals with it by re-creating projects, rather than updating them.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton