HNHacker News
TopNewBestAskShowJobs

ninkendo

8,487 karma · joined December 19, 2010

submissionscomments
ninkendo··on How to speed up the Rust compiler in September 2026

  export CARGO_TARGET_DIR="$HOME/.cache/cargo-target/myproject"
ninkendo··on How to speed up the Rust compiler in September 2026
That’s because they overwrite the old artifacts with new ones every time, which has its own problems: you could end up reusing stale artifacts if your compiler version changes, or if different compiler args are used for the same artifact, and a bunch of other stuff. Rust computes a digest of all the relevant build environment settings that may need a different artifact to be built, and uses that digest in the file name. That means you basically never have issues like “oh crap the incremental build broke, do a clean build instead”. (Amongst a whole lot of other benefits I’m sure.)

But this technique errs on the side of not using invalid artifacts, at the cost of not having a good system for expiring them. To maintain the goal of never having to worry about when to require a clean rebuild, solving cleaning of stale artifacts becomes a much harder problem.

ninkendo··on How to speed up the Rust compiler in September 2026
> Incremental compilation is not cleaned up. Older deps pile up and don’t get cleaned.

This is one of those problems that’s both huge/important, and probably impossible to solve. It bites me all the time, I have a measly 1TB nvme disk and I basically have to wipe my target directory and docker build cache (I have a shared cargo cache volume across builds) every other day. I’ve had this workstation for 2.5 years now and I’m honestly worried about nand endurance coming to bite me soon.

How would one even solve this? When do you know a cache entry won’t be used any more? Trace back provenance of artifacts to their sources, and if the mtimes have been bumped just delete the artifacts? It’s not like resetting source files to older mtimes is a good idea anyway…

ninkendo··on EDG C++ front-end goes public
No comment about the substance of the article but I just have to give props: this site loaded incredibly quickly for me. Like it felt like a handful of milliseconds between tapping the link on my phone and it showing up, already scrolled to the right anchor within the article. Bravo on making it snappy.
ninkendo··on Ideas on modernizing the open-source desktop
Yikes, that’s a little strong.

A tiling window manager is a lot more useful if it doesn’t always tile, yes. The ones I’ve tried don’t seem to have a graceful way of saying “allow overlapping just this once”, but I’ve only tried a few of them (i3 is the one I remember most. I honestly can’t remember if I tried hyprland. If I did it was probably only for a few minutes.)

Now, you seem to be upset that I don’t “have a point worth trying to understand”, perhaps you can enlighten the class and explain why your tiling window manager of choice does this better? I’ve already described my ideal interaction, so if your WM does this well I’d love to hear about it. As it is right now, you seem to be the one who’s withholding details.

ninkendo··on Allow Carriers on Planes
> going away for their first vacation together

Yeah and fuck them, right? Won't these parasite breeders learn that they have no right to take vacations? They should experience nothing but misery until their children are 5.

Unrelated, why are so few people opting to have kids?

ninkendo··on Ideas on modernizing the open-source desktop
Eh… as someone who agrees, I think overlapping windows are a feature, not a bug. Very often a window is transient, in that it’s something I need to give my attention to and once it’s done, it’s gone. In a naive tiling window manager, all windows have to re-tile themselves while the transient window is open, just to then return to their previous layout once it’s done anyway. The ideal interaction in my opinion is for the transient window to simply be “on top really quick” and I can just alt+tab if I need to see what’s underneath it. The degenerate case tiling proponents always point out is that “what if the window you need is obscured” and tbh I just never have that problem? Between a quick alt+tab, or the win+arrow shortcuts doing “tiling-lite” when I need it, I’ve never thought “gee I wish something would figure out a tile layout for all these windows”.

More generally, tiling is what you want when you have a particular layout you like, each window has a reason for existence, and you want them all open and visible at the same time. That constitutes like, 10% of my time using a computer. Mostly I just want “give me a new window, let me do a thing, then it’s gone”, with said new window occupying 100% of my attention while it’s there. Having to carve out space for it in a tile layout (even if the tiling is automatic) just doesn’t make sense with the way I use my machine.

ninkendo··on What Sun got wrong
> But Linux took over the world and it had a crappy UI. I was there, back when Xorg didn't even exist, running X and messing with modelines on Linux. All the window manager sucked big times.

My first exposure to Solaris was in 2003 when Linux had Gnome 2.6 and Solaris had CDE. The UI on my Debian box seemed decades ahead of the Solaris machines I managed, which looked like Windows 3.1 and performed about as well.

Combined with Linux package managers being infinitely better, the GNU core utilities having so many more conveniences and options than the Solaris equivalents, I felt like Sun was this dinosaur that couldn’t die fast enough. I’ll still never understand why so many people praise Sun for its engineering culture when free software seemed so superior to me at the time.

My favorite anecdote exemplifying my opinion about Solaris at the time: you log into the console of your Sun workstation, running SunOS, with your Sun keyboard plugged in, and press backspace. It echoes ^H back to you. They couldn’t even figure out how to configure their own keyboards correctly out of the box.

Maybe in the 90s the standards were different. Maybe their tech was better. But by the time I ever used their software is was the butt of jokes.

ninkendo··on Growing proof that autonomous cars save lives
To be honest, it depends.

If the pedestrian hasn't gotten to the driveway quite yet, and you're stopping to let them get there and cross out of an abundance of caution, then it may not have been legally required for you to yield. And the motorcyclist behind you could very reasonably have seen the pedestrian too (and reasoned that the pedestrian was still several seconds away from getting to the driveway) and not expected you to stop. In such a situation, such an abundance of caution could have easily "caused" an accident, in that not yielding and proceeding through would have been perfectly safe.

(I'm of course being steel-manning GP's argument here, it could have very easily been that the pedestrian was already crossing the driveway at that point, I didn't see the video. Point is, "more caution" doesn't always mean "less chance of an accident".)

ninkendo··on Record-High 89% in U.S. Say Government Corruption Widespread
1/100th is hyperbole. But it has gone up. My opinion on the timeframe is the obvious one:

Since Trump. Entirely.

I generally think there’s actually not that much corruption in politics in the US. Mostly just insider trading, if you count by dollar amount. But I think generally there have been studies on the net worth of people before they are elected to public office versus after, and it’s within a few percentage points of the general population. There’s also the issue of lobbying firms hiring ex politicians but to be honest there’s something to be said for an ex-politician as a lobbyist: they have expertise and connections, they’re valuable to lobbying firms even if there’s no favors involved.

What we have now is:

- The president openly hocking a cryptocurrency and making billions off of it

- Taking money for early access to his posts on truth social, which is essentially how he communicates to the public. “Give me money and I’ll tell you first”

- Giving pardons to his supporters in a brazen and obvious way

- Taking donations from private donors to fund his pet projects like the White House ballroom

I could go on but like I said, I’m not really interested in the actual debate here because nobody’s gonna change their minds if they haven’t already.

ninkendo··on Record-High 89% in U.S. Say Government Corruption Widespread
Not really interested in getting into a debate here, I’m just pointing out that GGP said “openness and also the scale”, to which you ignored the “scale” part and pretended it’s only about being corrupt in the open versus in private. I can point this out without making a comment at all (although I have my opinions) on whether I agree if the scale has changed.

(To be clear, I absolutely believe the scale has increased tremendously, but arguing about this is gonna be fruitless because it’s all subjective, there’s no hard numbers for any of it, and anything I can point out, you can just say “well that’s because they’re doing it in the open now, they were always doing it”, which is just as unfalsifiable. There’s basically no good outcome to debating this.)

ninkendo··on GPT-6 Astra in code review: Gains, privacy, and cost
The answer to this is gonna vary wildly depending on what kind of codebase it is.

A large, mature codebase that predates LLM’s and for which changes need a high level of scrutiny regardless of who made them (think llvm, WebKit, important foundational software), you’re going to want humans in the loop as much as ever… I think reviewing LLM output is the most important thing a human can provide.

But for vibe coded apps where you can just one-shot another one if anything goes wrong? Just vibe the reviews too, who cares. Let the robots review the robots.

Be careful with doing AI review if your codebase is in the former category. Or your codebase will quickly turn into the latter. Complete with “you can just one-shot another one”, because if nobody understands the code any more, there’s not much lost by just you (or your competitors, etc) replacing it wholesale with an AI-written alternative.

I struggle with this a lot. 2 years ago we had a half dozen PR’s a day with a lot of careful review, and now there’s more like 30 of them per day and most people are just rubber stamping them after the AI reviews it. I’m still fighting the good fight trying to review every line of the PR’s I have time to look at, but that constitutes maybe 10% of them. Not only am I barely making a dent, but it’s awkward when I post nitpicks like “this function should go in this module”, etc, the author usually looks at me funny like “why are you even reading this”. Our codebase is gradually becoming more and more vibe coded, and it’s depressing me.

ninkendo··on Record-High 89% in U.S. Say Government Corruption Widespread
No but we do need to go back to the good old days of having like 1/100th the scale of corruption we have now.
ninkendo··on Can AI design circuit boards yet?
My 2¢:

When google trained a neural net on Go moves, using some text notation for them, with no other vocabulary of any kind, just predict the next go move, they noticed a representation of a Go board had essentially formed in the network, all on its own. It had never “seen” a go board, or had one explained, but they could map neuron states to go board squares pretty much 1:1.

I truly think that LLM’s with hundreds of billions of parameters in their neural networks have all kinds of hidden “models” of things that arise from the simple act of predicting tokens. We’ve seen that the hidden layers in their networks model all sorts of program execution state for instance, when they’re working on coding tasks.

“Predict the next token” is a way of shaping/reshaping the neural network until it actually develops models of the things you’re giving it. Like the go board example. And I would wager that it has a compounding effect: once you have some useful models in the network, they can unlock the creation of other models, and so on.

ninkendo··on Internet centralization and the original sin of NAT
Source address selection still favors GUA over ULA by default in every major operating system… If you run both you’re almost certainly going to see a lot of GUA addresses in logs where you only allow LAN traffic. Especially if you’re using mDNS/.local for your hostnames. The only way to be sure your internal stuff only ever uses ULA’s is to not give them GUA’s, and now you’re doing NAT.

(I don’t personally run my network as ULA-only, I do ULA+GUA as you describe, but I had to basically give up on being able to reliably tie traffic logs to a known source… hosts in my LAN always seem to use a GUA to talk to each other when discovering over mDNS, which of course means they use privacy addresses by default. My ULA uses DHCP so that I can get stable addresses and know who is who, but it’s useless when things just decide to use the GUA anyway.)

ninkendo··on You Know GDPR Is Good Based on Who Hates It
So you’re saying if I log into HN, every intra-site link should be rendered with “?token=<secret>” and if I send a link to a friend it will let them be logged in as me?

No, because that would be ludicrous, cookies are obviously necessary for the concept of a “login” or even just a “session” to exist.

ninkendo··on RAG Is Simpler Than You Think
Given the title of the article is “RAG is simpler than you think”, and how I expected it to literally be an article explaining what RAG is and how it works, it’s more like going to the menu holder at the front of the restaurant, finding out it doesn’t have any menus in it, and then the waitress saying “we don’t have menus, dummy, just google it.”
ninkendo··on RAG Is Simpler Than You Think
I mean the article is entitled “RAG is simpler than you think”. I clicked the link thinking “I don’t know what RAG is, so ok I’m willing to learn something”, and the article… completely fails to explain it.

Given that the stated purpose of the article is to literally explain how simple something is, not explaining that thing seems a bit misleading, no?

I’m gonna get rich when I make a website explaining all the technical concepts in AI. Every article will just say “lol google it”, it’s gonna be great.

ninkendo··on RAG Is Simpler Than You Think
When I hear stuff like this I always imagine going to a restaurant and asking the waitress for a menu and them replying “lol just google it”.

It’s not that I can’t or don’t know how, it’s rather that the expectation should be that a website should… link you to the information it believes to be relevant background. It’s why it’s called a “web”, linking is a core concept.

ninkendo··on Screen viewing time from age 1 to 8 years and subsequent academic performance
Because that’s all we seem to have measured. So, hypothesizing about whether there’s any other finer-grained causation in the data is the logical next step.

Me personally, I have immense trouble believing that passively watching entertainment has the same effect on working memory as, say, playing video games. And even within video games there’s probably a distinction between the more story-driven games that are a lot more passive to play, versus puzzle games that require active reasoning, versus games that test reaction time or memorization, etc.

(Full disclosure: I was a child of the 80’s and raised by a Nintendo and my computer. I think I turned out ok but I don’t have any alternative childhood to compare to)

ninkendo··on iCloud+ Hide My Email addresses will remain on icloud.com
private.icloud.com (née privaterelay.appleid.com) is the address for “Sign In With Apple”, which is an oauth-style service that sites opt into to let you use your Apple ID to sign in. Sites offering this as a signup option are already aware it gives users an option to use a private anonymized email address.

The toplevel “Hide My Email” iCloud feature is a different thing, can be done independently of a SIWA flow (you can just go into settings and make more addresses, all it needs is a name and a notes field) and uses @icloud.com in order to make your anonymized email address look indistinguishable from other iCloud users.

The former is “filterable”, yes, but it’s moot because you only get those if you offer Sign In With Apple in the first place, and if you want real emails, you would already know to just… not do that.

The latter is very much not filterable.

The confusing thing though, is that when a user uses Sign In With Apple, they are offered two options: “share my email” which gives the site your real address, and “hide my email” which gives an @private.appleid.com address. But this “hide my email” option is a totally different thing from the separate “hide my email” service, which lets you make arbitrarily many @icloud.com private aliases to forward to your real address. Critically, the latter toplevel Hide My Email feature works with sites that don’t use Sign In With Apple. It’s just stupidly unfortunate that Apple calls both of these features “hide my email.”

ninkendo··on OTel isn’t going well
Speaking only from my experience using their rust crates, they have undergone more “code feng shui” than any of our other dependencies. They’re still 0.x and every point release seems to re-imagine things enough to break everything and require substantial rewriting. They don’t even bother describing the motivation for changes, just, you can’t use this type any more, it’s private now. You can’t configure metadata here any more, you have to do it there now. It’s been the most painful dependency of ours by far.
ninkendo··on The August 17 outage
> requires a commit and push for every file save

I don’t think I could imagine a stupider idea than this if I tried. To paraphrase Babbage: I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a solution.

ninkendo··on Don't paste the AI, please
Well I mean… you didn’t come into this comment section saying “hello” and then waiting for someone to say hello back before commenting, right? And you don’t do that in emails either, right?

Because that would be super out of place, and you understand that intuitively.

That’s all nohello is about. It’s not trying to say “don’t be nice and say hi”, it’s saying “batch your hello and your question in the same message please”. Asynchronous communication mediums need an asynchronous communication style, it’s not that hard.

ninkendo··on Civic Hygiene – avoid building technologies that could be used by a police state (2013)
Title was mangled. The actual quote is:

> It's bad civic hygiene to build technologies that could someday be used to facilitate a police state

Not “avoid building technologies that could be used by a police state”, as the HN title currently says.

The HN title reads like any technology a police state could ever use should be avoided. Like cars, or pencils. Anything.

Schneier’s quote says “used to facilitate a police state” is a lot more specific: could be used to bring a police state into existence where it wouldn’t have been possible before, like having a database of everyone’s sexuality, etc.

ninkendo··on AI;DR (AI; Didn't Read)
The problem is the comments only make sense if you knew the original prompt in the first place. It'd be one thing if AI left a bunch of breadcrumbs reminding itself not do do Y, but when it makes a comment that only makes sense if you know about the original requirement not to do Y, to me it's more likely to trip up future agents than it is to help them.

A recent example I saw was an agent leaving a comment "// return an error here instead of panicking, as a panic will abort the process". Because likely the original human in the loop caught the AI putting a panic in there and told them not to, and then the comment to not do panics was placed in there. But to a future agent, it'll see that and think "ok, this comment must be here because we usually do use panics instead of returning errors, this place must be an exception", and now its context window is primed to think of using panics first.

It's pretty well-documented at this point that spending a lot of tokens explaining what not to do can actually increase the likelihood of an LLM doing that thing, especially when its context window is getting full.

It's like if you go to the grocery store and see a sign saying "Vegan tomatoes". It sounds fine until you think "wait, aren't all tomatoes vegan?" and now you start doubting yourself and start imagining what a non-vegan tomato would be.

Another semi-related issue is the tendency for LLM's to make up their own dumb little short-hand words for things that it has been talking about over and over in the context window. "The lock that prevents a user from being deleted while another thread is updating it" becomes a "user-fence", and now there's comments saying "// this function returns a user-fence", and I have absolutely no idea what that's supposed to even mean.

ninkendo··on AI;DR (AI; Didn't Read)
RLHF has the same problem as human reviews of AI code: AI code (and comments) look plausible at first, and if you have 100 other PR's to get to, it looks "good enough" and you approve it. I'm sure the humans doing the "human feedback" part of RLHF at anthropic are just as tired as I am at reading all of it, and start to just approve it when it looks plausible.

It's doubly insidious because it trips up the human brain too: When I'm reading a PR saying "fix lock ordering to avoid deadlocks on user deletion", and there's a comment somewhere in the diff saying "// use the fixed lock ordering here", my brain tends to completely forget the fact that the comment doesn't make any sense in its surrounding context. Because it makes perfect sense in the context of being the human reviewing the diff. But it's a slight bit of mental effort to remind yourself "what is this comment going to look like to someone reading the code after this is merged?"

I wouldn't be surprised whatsoever if the RLHF supervisors forget to apply that extra bit of mental effort and say "yup, this comment looks great", forgetting to check the surrounding code to see if it makes sense on its own.

ninkendo··on Rethinking Database Programming
> when using IDEs with the SQL vendors plugins

Do these plugins mean you don't get to store them in git? You're just going to open up the developer studio and YOLO a change to the stored procedure, live in production? Because the whole argument is that the way we do version control, code review, bisecting, single-artifact deployment, etc is generally at odds with how stored procedures work. Saying "but my IDE has a good plugin" solves maybe 1/100th of the problem.

Some answers to doing stored procedures in a version control system that I've seen:

- Put everything in a migrations directory, and every time you change the stored procedure, introduce a new migration that completely rewrites it. (Merge conflicts are hell with this, plus all the massive amount of waste it generates in the checked-out tree)

- Put the stored procedures in a directory as normal code and then "sync" them to the database at runtime (with all the massive foot-guns this entails, trying to detect if they've changed versus what's in the database, etc)

- Eschewing stored procedures in favor of using prepared statements and having your ORM figure out when to use them

There may be others but I think they're all going to look like some form of one of the above.

ninkendo··on Solo – a .so loader for static Linux binaries
Even Linus’s comments in that bug hedge things a bit:

> and that if people depend on interfaces we exported having side effects that weren't intentional, we try to fix things so that they still work unless there is a major reason not to.

(Emphasis mine.)

In the Flash case, they changed the direction memcpy works in, in a way that didn’t actually improve any performance (Linus did benchmarks to show it) and Linus’s point was that there’s no upside to the change, and only downsides, so on the whole it makes no sense to keep the changed memcpy.

You could imagine plenty of scenarios where existing behavior truly is broken, and show that no popular software depends on the brokenness (which is why distros are in a great place to do these kinds of smoke tests, they have thousands of packages they can test), and make a judgement call.

A “zero regressions no matter what” policy is impossible in practice due to Hyrum’s law, at some point you have to use common sense and draw the line somewhere sensible.

ninkendo··on Solo – a .so loader for static Linux binaries
> It depends on how we define the ABI. I see it as a set of client-visible invariants that they rely on

By that definition, any change of any kind will break ABI, Hyrum’s law and spacebar heating and all that.

Page 1 of 34Next →