HNHacker News
TopNewBestAskShowJobs

ben-schaaf

4,396 karma · joined November 11, 2015

submissionscomments
ben-schaaf··on My adventure in designing API keys
That sounds like it's only helpful for ddos mitigation, in which case the attacker could trivially synthesize a correct checksum.
ben-schaaf··on Filing the corners off my MacBooks
> can render fonts correctly

macOS font rendering has been worst in class since they removed subpixel-antialiasing. It's now a blurry mess on regular displays.

ben-schaaf··on Penguin 'Toxicologists' Find PFAS Chemicals in Remote Patagonia
There was a scare in 2024 where high levels of PFAS were found in the water supply in the Blue Mountains region of NSW. It took months, but they traced it to a single fire in 1992 where foam was deployed. Scary stuff.
ben-schaaf··on Penguin 'Toxicologists' Find PFAS Chemicals in Remote Patagonia
It's a common misconception, but microplastics and forever-chemicals (PFAS) are not the same thing. They're two similar, but distinct pollutants.

> Are saunas and blood donations not also effective for this?

Yes, plasma & blood donations are good at reducing PFAS blood concentration. Some(?) firefighting foam contains PFAS, so they tend to have high blood concentrations. Donations have shown to significantly reduce that: https://pmc.ncbi.nlm.nih.gov/articles/PMC8994130/

ben-schaaf··on The cult of vibe coding is dogfooding run amok
Sounds like a fun project. And are you committing code for this library? Because it sounds like you are, and if that's the case I don't think you're actually doing what you're talking about.
ben-schaaf··on The cult of vibe coding is dogfooding run amok
How is "fairly close to deterministic" anywhere near good enough? LLMS aren't anywhere near cheap enough to do this either.

That said it's so trivial to do, why haven't you done that already?

ben-schaaf··on Show HN: A game where you build a GPU
Last I checked there's some rebalancing that looks pretty good, but the real advantage from the custom language is a huge performance boost.
ben-schaaf··on Show HN: A game where you build a GPU
They're bikeshedding pretty hard, making their own language for the simulation. You can access the unstable branch through steam, it was getting fairly regular updates last I checked.
ben-schaaf··on Age verification on Systemd and Flatpak
Systemd actually manages /etc/passwd, /etc/group, /etc/shadow, etc. using a json database called userdb. Adding a field to systemd's userdb is how you add a gecos field.
ben-schaaf··on Age verification on Systemd and Flatpak
> This is the governments first plunge into mandating things on the frontend.

ADA mandates computer accessibility, as frequently interpreted by courts. CCPA & GDPR mandate a whole bunch of stuff. Hardly the first plunge.

ben-schaaf··on The Claude Code Source Leak: fake tools, frustration regexes, undercover mode
Compilers don't usually write the code that ends up in a PR. But compilers do (and should) generally leave behind some metadata in the end result saying what tools were used, see for example the .comment section in ELF binaries.
ben-schaaf··on LinkedIn uses 2.4 GB RAM across two tabs
> And I maintain that the difference cannot be explained by images and font cache alone.

It can't be explained by images and fonts alone, I agree, but images and fonts alone are still enormous compared to 70kB. On my screen an "e" on this site is 10*11 pixels. Subpixel positioning means we need at least 6 copies of each letter, subpixel antialiasing means we need three channel alpha (3 bytes per pixel), we have variations of bold, italic and bold-italic, 95 printable letters in ascii, that's a low-ball of 750kB for one size of one font. This comment page alone has 4 different sizes, I'd expect a chat app to have a few more.

ben-schaaf··on LinkedIn uses 2.4 GB RAM across two tabs
> I didn't set the bar to 70kB

The GP to your original did set the bar at 70kB, mattmanser then explained that images and fonts easily exceed that, and then you called that poor resource management. Sounds like we're on the same page here, but you seemed to have missed the context of the comment you initially replied to.

ben-schaaf··on LinkedIn uses 2.4 GB RAM across two tabs
The alternative is that for every glyph you render the entire glyph to the screen using the Bezier curves from the font, and you end up with dogshit performance - like the new windows terminal (not sure if they've fixed it yet).

Caching glyphs is good resource management and with modern screen resolutions, color displays and subpixel-antialiasing you just simply need more than 70KB of RAM.

ben-schaaf··on Everything old is new again: memory optimization
Completely agree, it would be very helpful to get even just a breakdown of what the ram is being used for. It's unfortunately a lot of work to instrument.

> sublime consumes 200mb. I have 4 text files open. What is it doing?

To add to what others have said: Depending on the platform a good amount will be the system itself, various buffers and caches. If you have a folder open in the side bar, Sublime Text will track and index all the files in there. There's also no limit to undo history that is kept in RAM.

There's also the possibility that that 200MB includes the subprocesses, meaning the two python plugin hosts and any processes your plugins spawn - which can include heavy LSP servers.

ben-schaaf··on Our commitment to Windows quality
She's significantly worse with technology than he is. Neither could tell you what an operating system is. These are exactly the type of average people that supposedly Linux isn't good enough for.
ben-schaaf··on Our commitment to Windows quality
> Put your non-programmer relative in front of each, have them do some common simple tasks, like print an email on their printer, and ask them.

My grandma does this all the time from her Linux laptop. My grandpa needed help getting it to work the first time under Windows.

ben-schaaf··on Give Django your time and money, not your tokens
> scale, security, whatever

Yea, who needs performance or security in a web framework!?

ben-schaaf··on Wired headphone sales are exploding
I wasn't able to find the answer on that page or with google, does bluetooth LE solve the dogshit quality when using the microphone?
ben-schaaf··on RISC-V Is Sloooow
Not sure why you're taking the rk3588 as a milestone for ARM, when it's a low end chip using core designs that were old when it released. Cortex-A76 is from 2018, so if that's the yardstick then the K3 is 8 years behind. Even then at the time the A76 was released Apple was significantly ahead with their own ARM CPUs.
ben-schaaf··on My “grand vision” for Rust
I can't find anything related to division returning an error type. Looking at std.math.divExact, rem, mod, add, sub, etc. it looks to me like you're expected to use these if you don't want to panic.
ben-schaaf··on Rust is just a tool
The hardened runtime improves things, but it's still a far cry from memory safety. For example `std::vector::erase` has no hardened precondition. And of course the rest of the language around the stdlib is still entirely unsafe, not just the C parts.
ben-schaaf··on Rust is just a tool
As I said, unique_ptr (or any of the others), do not check for null. So you can do this, and it will cause a segfault:

    std::unique_ptr<int> a;
    printf("%d\n", *a);
Similarly unique_ptr::operator[] doesn't (and can't) do bounds checking, for example:

    std::unique_ptr<int[]> a = std::make_unique<int[]>(2);
    printf("%d\n", a[2]);
There's also no attempt to limit the construction of invalid smart pointers, for example:

    int num;
    std::unique_ptr<int> a(&num);
Smart pointers simplify memory management, and they're slightly harder to misuse than regular pointers, but they simply make no attempt at providing memory safety.
ben-schaaf··on Rust is just a tool
> Is there a difference between c++ and java/go/etc if you enforce at code review for C++ to use only auto memory management like smart ptrs, containers, etc?

Smart pointers and containers are nowhere near memory safe, just enforcing their use gets you nowhere. `std::vector::operator[](size_t)` doesn't check bounds, `std::unique_ptr::operator*()` doesn't check null.

> Imo the strong point of rust is compile error if you try to use an obj after move (unlike c++ with undef behavior

The state of a value after being moved is defined by the move constructor. It is unspecified by the spec, but it's generally not undefined behavior.

ben-schaaf··on Discord will require a face scan or ID for full access next month
> It's funny how pointing a fact is called whataboutism.

What do you think whataboutism is?

ben-schaaf··on Teaching my neighbor to keep the volume down
Noise is one of the things that improved moving to an apartment for me. We've got bylaws about noise with quiet periods, bans on bothersome noise, a smoking ban and a (loud) pet ban. We also have better windows that block noise, and decent noise insulation in the floors despite the hard flooring.

Compared to suburbia where neighbours started mowing at 7am, loud parties went late into the night and dogs barked all day, it's oddly quiet.

ben-schaaf··on Apple introduces new AirTag with longer range and improved findability
To my knowledge benzaldehyde is the most common cherry flavor, and I agree it doesn't taste much like cherries. It's also a naturally occurring compound we produce from cassia oil, and it's naturally contained in almonds, apricots, apples and cherries.

As for coconut there's Lactones, which - you guessed it - occur naturally.

> OK for vanilla, however most of the fruit artificial flavors are compound that have nothing to do with the elements from the natural fruit but at some point, someone in the food industry decided it tasted "similar" to the natural fruit.

Care to provide a source?

ben-schaaf··on Apple introduces new AirTag with longer range and improved findability
Could you describe the difference between the artificial flavour vanilin made in a lab, and the natural flavour vanilin extracted from a vanilla bean?
ben-schaaf··on Internet voting is insecure and should not be used in public elections
Someone needs to gain physical access to the ballot after voting in order to erase it. If they can do that they can just as well make it invalid using a pen, or they can just tear it up.

On the other hand, disappearing ink has been around for a long time.

ben-schaaf··on C++ std::move doesn't move anything: A deep dive into Value Categories
The state of a moved-from value is valid but unspecified (note, not undefined). IIRC the spec says vector must be `empty()` after a move. So all implementations do the obvious thing and revert back to an empty vector.
← PreviousPage 4 of 34Next →