HN user

gnull

1,127 karma

You can contact me over ntjvwmi7l@mozmail.com

Posts3
Comments322
View on HN

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?

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.

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.

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.

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?

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.

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.

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.

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

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

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.

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.

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.

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.

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.

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.

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.

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.

The reasons for doing something and public justification, aka casus belli, are different things. Casus belli makes it cheaper to execute, but reasons are what actually drives them.

The clowns and the reasons that drive them are the same for Middle East and Venezuela. Does it make it any better that they happened to have a casus belli that you or I may sympathesize with, given that the reasons not in line with our values? Even a broken clock is right once a day.

VHDL and Verilog are used because they are excellent languages to describe hardware.

Maybe they were in the 80. In 2025, language design has moved ahead quite a lot, you can't be saying that seriously.

Have a look at how clash-lang does it. It uses functional paradigm, which is much more suitable for circuits than pseudo-pricedural style of verilog. You can also parameterize modules by modules, not just by bitness. Take a functional programmer, hive him clash and he'll have no problems doing things in parallel.

Back when I was a systems programmer, I tried learning system verilog. Had zero conceptual difficulty, but I just couldn't justify to myself why I should spend my time on something so outdated and badly designed. Hardware designers at my company at the time were on the other hand ok with verilog because they haven't seen any programming languages other than C and Python, and had no expectations.

Btw, you can make quicksort deterministically O(n log n) if you pick the pivot point with linear median search algorithm. It's impressive how randomness lets you pick a balanced pivot, but even more impressive that you could do the same without randomness.