HNHacker News
TopNewBestAskShowJobs

gnull

1,143 karma · joined December 5, 2018

You can contact me over ntjvwmi7l@mozmail.com
submissionscomments
gnull··on Dutch governments builds alternative for Microsoft based on NixOS
Coming from fp background, I find Nix language very sensible. Especially for something like hermetic packaging.

The primitives for packaging in nix feel exactly like what they should be. When you look at a definition, the things that piece of code could do in principle (and things you could do with it as a consumer) tend to cleanly match it's semantic purpose and its responsibilities. So a lot of things are self-documenting.

gnull··on Noodle Gallery – Self-hosted photo and video manager forked from Immich
Was there a reason these features were not accepted to upstream Immich and needed to be in a fork?

Looking at the latest commits, Noodle Galery has many signed with Claude, but Immich doesn't. Is LLM policy a reason for fork? (Just speculating, I don't know.)

UPD: Immich has this in CONTRIBUTING.md, seems like its LLM policy is more strict:

> We ask you not to open PRs generated with an LLM.

vs. Noodle Galery:

> We actively encourage the use of LLMs and AI coding tools.

gnull··on llama.cpp
It also even easier to get working and integrate into your system in a sustainable manner with NixOS. Do it by hand or throw an LLM at it, it will get you a declarative patch for your NixOS config that brings llama-cpp into your config that you can review and add under version control (no random `make install` build artifacts contaminating your system, no wondering "what was it that I ran? what are all these files? how do I do the same with a newer version?" a couple months later). There's also likely some build cache where Nixoids have already build what you want.

I had a great experience with llama-cpp with Nvidia backend on NixOS.

(Sorry for being that guy.)

gnull··on Go is an ideal language for AI-assisted software engineering
What concrete arguments are there to believe in your talent hypothesis instead of their tool hypothesis?

A couple more comments like this from you, and I'll be able to say, "cyanmoonx has a history of blaming the talent rather than bad tools". There being a history like that is neither an argument for nor against tools being bad. And also, don't forget that bad tools and bad talent don't rule each other out.

gnull··on Qwen3.8 Max now ranked as the best overall model by agentic index
Claude code is just pool quality. They don't make how this thing will behave clear to the user, or give control. They fail at anything that needs an abstraction or model, not just APIs and shell scripts glued together. And "just ask AI" seems to be the default fix.

That vibe coding they brag about as if it was a good thing, it shows.

Take their notation for describing permissions. The docs are not comprehensive, and in practice it doesn't quite work how they describe it.

Or their management of sub-agents. I once lost a sub-agent, it finished and disappeared from UI. Apparently, you can't bring it back yourself: you have to ask the parent agent to do it for you. But the parent was Fable, and I ran out of credits, so I was locked out of using my opus sub-agent because of it.

Or an even more grotesque example: when you paste your claude API token to authorize, it covers characters with *. But it seems like an LLM has hallucinated a limit of API key length and the tail of your key stays visible.

gnull··on Professor's invisible prompt trap catches 32/35 students cheating with AI
What is a "document editor"? I edit my documents in Kakoune, and send a PDF. Where is that history supposed to be?

About your actual point: can you also make AI actually say things and have something to say, and not just try to imitate someone who is trying to get a point across?

I'm not catching students, I'm reviewing comments in code and documentation written with AI. I even wish it would convince me and try not to notice it, but I can't. I'm pretty sure I'd fail AI generated slop, not for cheating, but for nonsense.

Ps. You didn't write that comment with AI, did you?

gnull··on Solod: Go can be a better C
> So is for Go developers who want systems-level control without learning a new language. And for C programmers who like Go's safety, structure, and tooling.

Wut?

Also, how do you preserve garbage collector semantics without garbage collector?

gnull··on Postgres rewritten in Rust, now passing 100% of the Postgres regression tests
What was your methodology and structure in making the prompts for the rewrite? Did you let the LLM roam in all of the codebase and tests from the beginning, or revealed things to it gradually in some way?
gnull··on Postgres rewritten in Rust, now passing 100% of the Postgres regression tests
Regression tests start to play a different role with LLMs.

On one hand, they give an LLM a short feedback loop to correct itself, and iterate fast when writing code. A human also uses it as a feedback loop, but we don't iterate as fast and don't handle big walls of conditions, so its effect is not as big.

On the other hand, LLM's ability to handle a big wall of if-conditions can backfire if it starts taking shortcuts and taking the tests-as-a-spec too literally, overfitting the solution, overly focusing on the given datapoints (conditions checked by tests) and missing the overall behavior shape that the tests intend to pin down. For humans, this is less of a concern because we are bad at big walls of if-conditions, and we'd rather try to see the original shape that the tests are pinning down than monkey-patch the solution to fit the individual points.

It's interesting to see how one balanced these two. In this case particularly. Maybe you could play around with separating the data you give an LLM into "training set" and "validation set", training set can be seen fully, but validation set is hidden and is only queried when the solution is deemed ready. Say, training set = original source code + half of the tests; LLM uses that for quick feedback loop. And validation set = the remaining half of the tests; test code is not shown to the LLM and run only when the LLM says it's done to catch potential overfitting of the resulting solution over training set.

To me, the credibility of a solution like that would depend on what methodology the authors used. If they just let the LLM see all tests, I'd be skeptical (albeit unable to point out specific bugs due to the volume of work and LLM's ability to make bad things look trustworthy). The good thing is, real-life use will add new, unseen before datapoints for testing — so validation set will build up with time. Really curious to see how it will work.

gnull··on A decade of Docker containers
Packaging for nix is exceptionally easy once you learn it. And once something is packaged, it's solved for all, it's not going to randomly break.

If you care about getting it to work with minimal effort right now more thar about it being sustainable later, then sure.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
I agree about democracy. What I was referring to is that part of the society didn't roll with the legitimate leader's decision not to align with EU in 2013. And it was undemocratic.

I stressed that it was split, and the democratic thing to do would be to wait another year until the next election, where everyone will be given equal opportunity to express their choice and determine what's the next thing we're rolling with. But we'll never know what they'd choose because some chose to protest, and then continue doing so when it git violent. Give me one reason why Maidan organizers couldn't go home in 2013 and just vote a year later.

Maybe there could have been a referendum on EU course. But we'll never know, since neither Yanukovich nor pro-EU leaders have conducted one.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
Are there any key details you're leaving out? Is there a chance you creatively picked what to leave out in a way that serves the view you're sympathetic to?
gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
Is this trolling by stupidity? You are irredeemable. I wasn't talking about elections, I meant everything before it that caused premature elections in 2014.

Was there something major that happened in 2013-2014 involving violence that interrupted the term of elected, legitimate president Yanukovich? Can you recall?

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
Sure. And you keep babbling and restating your point instead of proving it because you've got an overwhelming proof, you're just too polite to share it with us.
gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
Oh sure, I can believe that. It still seems to me like a sign of Georgia's economy strengthening. Many people with buying capabilities which actually settle, not just come occasionally for cheap stuff. (Looking at the thread's context broadly) plus one for closer ties with Russia.
gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
What did the ratio of European tourists to Russian look like?

Not sure what grab of power you're referring to.

The inflow of Russians was a boost for Georgia. These are whole IT companies that moved with workers, high-paying jobs and taxes. Many of pro-Western views and European expectations of living standards (because they're from Moscow and St. Petersburg). Check specialty cafes in Tbilisi today and see when they opened. These are the white people with guilt syndrome who will sign up to Georgian language classes to show respect to the local culture. Hell, I'm sure you can see a change in people's average views on LGBT rights since 2022, since Georgia is known to be quite patriarchal homophobic.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
I do believe that the discussion of good and evil is a meaningful one, but it's nuanced and we must be extremely careful with definitions and not to confuse ethics debate with irrational emotions.

If someone points a gun at me, I give the money. If life is a strategy game, then this is the moment where you need to sacrifice a piece in order for the game to even continue. And money is usually a pawn in the big picture of life. I may feel it's unfair or that my ego/honor is hurt, but I'd work though that with my therapist, analyze it philosophically and decide what to do next instead of responding emotionally.

I personally don't value nationalist sentiment. From a humanist perspective, associating yourself with one specific nation and making it your goal to serve the elites who actually control it is unjustifiable. There are things I'd consider good and evil, but they're much more universal and not tied to one's birthplace, taste or mood. Education, progress, science are good to me. So if something damages these, I may call it evil.

Ukraine is not one of these though, it is a conflict where principals are fighting for selfish interests, while working their propaganda machines very hard to convince us that their goals are actually universal and humanistic, to harvest us as a resource. Depending on which bucket you ate your slop from, you get one bias or another. As an average citizen, you should not fool yourself thinking that you're one with something great that you must sacrifice yourself for it, and don't full yourself thinking you're serving some great good.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
> Also it's a rather small economy producing largely low value products despite vast natural resources - there's no benefit in associating with them in this day and age. The cheap gas is not worth it.

Why it's not worth it? I don't see how the quote would imply it. I don't see why they wouldn't encourage Russia to join EU too given what you wrote. In the worst case you'll get one more Hungary.

And if Russia is corrupt, you can still deal with them if you're ruled by foreign courts. Russia did comply with European Court of Human Rights IIRC right until the invasion. Something as minor as a politically partial court decision in Russia could be appealed in ECHR and Russia would pay a compensation to its citizen. If you're a business, I'm pretty sure you'll find a way to defend your interests in pre-2022 Russia.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
If it's that simple, why doesn't everyone "want in" and get those precious living standards? There must be a lot of stupid governments if they literally refuse free stuff. Or your statement is naive and overly simplistic. Guess which of the two is more likely?

Does Georgia "want in"? I'm not so sure what that means. The population has mixed feelings about it, as I understand from friends there. The current government who represents them doesn't want in.

> Just having access to the european free market

Again, do you think this just offers you free stuff? A marked doesn't just offer you "access", it assigns you a role you're going to be playing in it. And some roles are worse than the others, even if the marked is "good".

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
I don't like using "western-oriented" as synonym for free/democratic/good, but otherwise I agree it's gotten worse. Your use of the word "backsliding", I think, was appropriate.

Are we talking about EU spokesperson calling Georgian elections illegitimate? If so, I believe your quotes show that there's no basis for that claim. The OSCE specifically says that, despite a bunch of concerns, Georgia's legal framework is "adequate". To me, that reads as "it passes the bar".

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
Not sure where you got that. Sounds like trying to use tropes from a superficial Hollywood action movie in real life, not my thing.

I think that a Ukrainian in his sane mind would want to look at options he's dealt and pick the one that leads to most safety and prosperity to him and his family. At the same time the government ideologues are trying to indoctrinate him with nationalism to sacrifice it all for their goals. More or less the same for an average Russian in his sane mind.

I personally believe that 2014 (and not complying with Minsk 2) has set Ukraine on course that's much worse for the safety and prosperity of an average citizen (albeit better for the nationalist ideologues). Complying with Minsk 2 would give Russia a lot of control over Ukraine (pro-Russian East gets autonomy, but gets to vote on national elections), which would be bad for nationalists who are afraid (and rightfully so) of Ukraine's young statehood sink into oblivion. But would be alright for a citizen: no dramatic change, you keep gradually improving your life, no war, you don't die for nothing.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
Fair point, I agree I made it too arrogant.

We all have things we misuse, but I think those things may characterize us sometimes. For example, in Russian we often misuse the word Hindu to mean Indian. It may mean that the person is uneducated and maybe even unaware of the difference. A couple of my friends who've been to India or are nerds about other cultures, don't misuse the word, some even go around ranting about it.

I personally feel that the way Americans use "Caucasian" is a more blatant misuse than others, and maybe that's what made me react that way. Like what is exact idea one has to miss and be unaware of to use "Caucasian" for "white"? What adds to it is that, if I understand correctly, using "Caucasian" instead of "white" in English makes you sound more official and important. I guess I can see that it's being used due to legal tradition and that's hard to change.

gnull··on Georgian wine culture dates back, uninterrupted, approximately 8k years
I doubt they will benefit from that integration much. But I'm pretty sure the way there will hurt. Georgia's economy is tied to Russia at the moment, and as you said Westerners are not exactly lining up to travel to Georgia and order its wine (Russians are).

The narrative "people want EU (aka freedom and democracy), but bad dictators won't let them" is a populist one. And EU has been using it like carrot and stick to steer Georgia away from Russia, disregarding the cost of it for Georgia. That time when EU declared Georgian elections illegitimate (with no actual basis provided) to me was a violation of Georgia's sovereignty.

Elections in Georgia are very competitive. I've heard that government was slowly putting pressure on media, but I don't remember anything major. Georgia could be the most democratic of ex-USSR except Baltics today.

gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
I see, you are more focused on providing the core functionality in the simplest way possible from purely technical perspective, and less so on what kind of "language" or interface it provides the end user — assuming someone who wants an interface can make a wrapper. I can see that your points make sense from this perspective, the solution with FDs is indeed simpler from this viewpoint.

I, on the other hand, criticized it as a complete interface made with some workflow in mind that would need no wrappers, would help the user discover itself and avoid footguns. Your interpretation sounds like what the authors may have had in mind when they made it.

> who’s trying to audit use of these tools without the manual?

I'd try to work on different levels when understanding some system. Before getting into details, I'd try to understand the high-level components/steps and their dataflows, and then gradually keep refining the level of detail. If a tool has 2-3 descriptively named arguments and you have a high-level idea of what the tool is for, you can usually track the dataflows of its call quite well without manual. Say, understanding a command like

  make -B -C ./somewhere -k
may require the manual if you haven't worked with make in some time and don't remember the options. But

  make --always-make --directory=./somewhere --keep-going
gives you a pretty good idea. On the second read, where you're being pedantic with details, you may want to open the manual and check what those things exactly mean and guarantee, but it's not useless without the manual either.
gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
Haha, you got me again!

I honestly tried putting yours into a table and couldn't in a way that makes it look defensible. About 2025: I generally find a bit of cheeky tone appropriate for a dramatic effect, apologies if I offended you.

gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
You got me, it doesn't have arguments. Luckily, my argument did not critically rely on this bit, and it's still valid. Instead of occasional disconnected thoughts and vulgar attempts to insult, try to construct a complete, coherent argument for why you think your view is valid.

A suggestion on how you could approach it: try to make a table with 2-3 columns for the solutions you and I are comparing. And add a row for each aspect or characteristic you want to compare them with respect to; for example, usability, ease of implementation, room for error, you name it. In each cell, put either + or - if a solution is clearly managing that aspect well or badly, or a detailed comment. Try to express all of the things you're feeling and that are coming to your mind. My comments are written with a table like that in mind, they easily translate to one. Once you have made your table and established that we disagree on what some cell should contain or what rows/columns should be present, feel free to get back to have an actual discussion.

gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
Make a named pipe then. Shells have built-in primitives for that. I.e. <() and >() subshells in bash, or psub in fish. Or have an option to read either a file descriptor or a file.

I can't understand why you keep inflating the difficulty of simple commandline parsing, which the tool needs to do anyway — we shouldn't even be talking about it. Commandline parsing code is done once (and read once per audit) while a hostile user interface that bad commandline creates takes effort to use each time someone invokes the tool. If the tool has 1000 users, then bad interface's overhead has 1000× weight when we measure it against the overhead of implementing commandline parsing. This is preposterous.

> Not involving argument parsing simplifies the interface

From interface perspective, how is `5>secretkey` simpler than `--sk secretkey`? The latter is descriptive, searchable and allows bash completion. I'll type `ed25519-keypair`, hit tab and recall what the argument called.

You can't justify poorly made interface that is unusable without opening the manual side by side. Moreover, the simplest shell scripts that call this tool are unreadable (and thus unauditable) without the the manual.

  ed25519-keypair 5>secretkey 9>publickey
You see this line in a shell script. What does it do? Even before asking some deeper crypto-specific questions, you need to know what's written in "secretkey" and "publickey" files. You will end up spending your time (even a minute) and context-switch to check the descriptor numbers instead of doing something actually useful.
gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
It's 2025, dude. You can't be seriously telling me how difficult it is to parse arguments. It may be difficult in C, but then we're down another sick rabbit hole of justifying bad interface with bad language choice.

One open syscall in addition to dozens already made before your main function is started will have no observable effect whatsoever.

gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
Those descriptors like 5 could be mapped to anything, including descriptor 1, stdout.
gnull··on Ed25519-CLI – command-line interface for the Ed25519 signature system (2024)
That's such a user-hostile design decision. I can't fathom what justifies it (other than kinky taste).

Makes your commands unreadable without a manual, leaves a lot of room for errors that are quietly ignored. And forces you into using a shell that comes with its own set of gotchas, bash is not known to be a particularly good tool for security.

And to those who stay this adds flexibility: it doesn't. Those file descriptors are available under/dev/fd on linux, with named options you can do --pk /dev/fd/5. Or make a named pipe.

Page 1 of 11Next →