HNHacker News
TopNewBestAskShowJobs

heftig

338 karma · joined February 8, 2017

Arch Linux developer.

[ my public key: https://keybase.io/heftig; my proof: https://keybase.io/heftig/sigs/vAGC78N1YQjTEZO96gvqfkVD0fit_mml6IN6XPw-wvo ]

submissionscomments
heftig··on GrapheneOS in 2027 available on high-end Motorola phones
No, that's too easily machine-read. Print it in a fancy calligraphy font or one with ambiguous characters.
heftig··on Dungeon Proof Crawler: learn how to write proofs with RPG
I had the exact opposite experience. It doesn't teach the basics needed to even solve the first puzzle. Which language are we even writing in? Clicking help explains what exactly to do but not why, as well as lots of rules with unexplained terminology.
heftig··on Google loses fight over record $4.7B EU antitrust fine
You mean un-uninstallable crapware? This has at least a technical reason: Preloaded apps are part of the read-only system image and cannot be removed. "Disabling" should be equivalent, though.

It's not just preloaded apps, though. A few months ago I prepared a Lenovo tablet for an elderly friend, and if I had just tapped through the OOBE wizard (which presented pages upon pages of optional crapware) without reading, it would have installed 20-30 preselected "popular" apps, mostly games. I had to manually deselect every single one.

heftig··on The Traditional Vi
Mobile browsers are assuming you're looking at a legacy page optimized for desktops (widescreen) and have a relatively large virtual screen size by default. They expect you to manually zoom in as necessary. Adding this helps:

  <meta name="viewport" content="width=640, initial-scale=1">
This matches the max-width specified by the CSS. However, a smaller viewport width might be appropriate to increase the text size on mobile.
heftig··on Dithering with CSS
The image gets de-saturated but the noise that's mixed in is colored. This looks like a mistake.

I think the noise is also way too 'soft'. At high frequencies it just becomes near-uniform gray so it barely affects the thresholding.

heftig··on Bring Back Idiomatic Design (2023)
Firefox on Android can override this via a toggle in the Accessibility settings. Maybe other browsers have something similar?
heftig··on 4D Doom
The perspective shifts so that the up-down direction becomes the hidden dimension. So the ceiling and floor disappear (and you have trouble avoiding lava) and you only see the walls of the space.
heftig··on Ghostty – Terminal Emulator
I wish TERM would contain a list of terminal types in decreasing order of specificity, like 'ghostty:xterm-256color', so a system that doesn't know what ghostty is would fall back to xterm-256color, but that ship has sailed long ago.
heftig··on Helldivers 2 on-disk size 85% reduction
To be clear, walking backwards (away from the target) reduced your bullet velocity relative to the target, reducing the damage you were doing and leading to you needing more shots.
heftig··on Helldivers 2 on-disk size 85% reduction
The bad tutorial at least has some narrative justification. It's just a filter for people who are already useful as shock troops with minimal training.
heftig··on Helldivers 2 on-disk size 85% reduction
The only wrong thing I've been throwing is the SOS Beacon instead of a Reinforce, which is just annoying, and not just once. It makes the game public if it was friends-only and gives it priority in the quick play queue. So that can't be it.

The dialing adds friction to tense situations, which is okay as a mechanic.

heftig··on Helldivers 2 on-disk size 85% reduction
The game logic is also weird. It seems like they started with at attempt at a realistic combat simulator which then had lots of unrealistic mechanics added on top in an attempt to wrangle it into an enjoyable game.

As an example for overly realistic physics, projectile damage is affected by projectile velocity, which is affected by weapon velocity. IIRC, at some point whether you were able to destroy some target in two shots of a Quasar Cannon or three shots depended on if you were walking backwards while you were firing, or not.

heftig··on Building the Rust Compiler with GCC
Which codegen backend the building compiler uses is independent of which codegen backend(s) the built compiler uses.

Similarly, you can build Clang using itself or using GCC. The resulting compiler should behave the same and produce the same machine code, even if its own machine code is somewhat different.

The produced binaries could still have artifacts from the original compiler in them, e.g. if "compiler built-in" libraries or standard libraries were compiled with the original compiler.

Both GCC and rustc use a multi-stage build process where the new compiler builds itself again, so you reach an idempotent state where no artifacts from the original compiler are left.

heftig··on BusyBeaver(6) Is Quite Large
The "about" does a lot of heavy lifting in this example. Dividing 10,000,000_10 by the number of grains that fit into one universe doesn't change it much. The 10,000,000 would get smaller somewhere in the deep depths of the decimal fraction.
heftig··on Mozilla Firefox – Official GitHub repo
Different access rules, I guess. Or maybe they wanted some separation from the existing org so the custom automation has no chance of doing collateral damage.
heftig··on MinC Is Not Cygwin
MSYS2 is basically Cygwin with Pacman for package management, plus several other environments with either GCC or Clang and different Windows-Native C and C++ runtimes.

It's nice, but not perfect. It inherits a lot of problems from Cygwin. File access is still slow (as mentioned in other threads) and symlinks don't behave right (by default making a symlink creates a deep copy of the target, and even NTFS symlinks need to know whether the target is a file or a directory; either way you cannot create a symlink when the target is missing, and this causes rsync to fail, for example.)

MSYS2's strength is as an environment for compiling cross-platform apps for Windows, and I would recommend WSL2 for anything else.

heftig··on MinC Is Not Cygwin
Pretty much. AFAIK you're waiting for Windows Defender and other hooks to run.
heftig··on Stupid Smart Pointers in C
I think the implication was that they're pointers to objects that own resources (like containing FILE handles) and need to be "freed" with a custom function, not just "free".

    void my_thing_free(MyThing *thing) {
        fclose(thing->file);
        free(thing);
    }
assuming an associated "my_thing_new" that only returns a valid pointer when both the allocation and the fopen succeeded.
heftig··on Ntfs2btrfs does in-place conversion of NTFS filesystem to the open-source Btrfs
No, it also covers the data. As long as you don't delete the rollback subvolume, all the original data should still be there, uncorrupted.

Even if you disable copy-on-write, as long as the rollback subvolume is there to lay claim to the old data, it's considered immutable and any modification will still have to copy it.

heftig··on SQLite does not do checksums
All of it. With a checksums-of-checksums scheme like a Merkele tree, you can effectively and efficiently checksum all the data and keep incremental changes cheap. You only need to update the checksums of the data blocks you touched and their ancestor nodes in the tree.
heftig··on Functional ultrasound through the skull
When people "donate their body to science", they don't usually expect their parts getting sold to the public. But that's the reality of it.
heftig··on WebGPU-Based WiFi Simulator
Because it's an incredibly complex mess that will allow sandbox escape if it isn't implemented exactly right.

Also, it's still in draft status. Not that that means much.

heftig··on Germany's 49-euro ticket resulted in significant shift from road to rail
No, they're talking about the local connections that are covered by the ticket. They're that bad.

I've had similar experiences commuting into Cologne where it's 40 minutes by car or 2 hours by train, and that's without delays. In the rush hours it's 60 minutes by car. A missed train connection adds another half hour.

heftig··on The Arch Linux team is now working directly with Valve
The main reason they picked Arch is the rolling release model with updates from upstream projects they work with landing quickly and continuously.

So yes, TH's speculation is just off the mark here.

heftig··on State of Text Rendering 2024
I'm not sure how this gets rendered, but the lack of hinting makes it a strain to read. What irony that an article about progress in text rendering has such awful rendering quality.

PS: That is in Firefox. In Chrome it uses what appears to be a bitmap font, which is much worse.

heftig··on Round Rects Are Everywhere
I don't know about power stations, but it's a common feature in medical devices.

E.g. keyboards have a flat or nearly-flat surface so they can be easily cleaned by wiping without leaving any germs behind in a groove, or on an edge.

I suppose something similar makes sense in an environment that could produce radioactive dust.

heftig··on Researchers invent 100% biodegradable 'barley plastic'
If it were chemically/biologically stable until it has been mechanically eroded into microscopic particles, that would at least avoid adding to our microplastics problem.
heftig··on The Google Pay app is dead
No, they haven't. "Instant Payments"/"Instant Credit Transfers" are specifically transfers completed in seconds. Banks usually charge more for this service than for regular transfers, which complete on the next business day.

IIRC, in Europe, instant transfers were introduced around 2018.

heftig··on Glibc Buffer Overflow in Iconv
`wcstombs` and `mbstowcs` sound like they might do this?

They're C99 standard functions and should be converting between "wide strings" and "multibyte strings", which should be native UTF-16 and UTF-8 if your current locale is an UTF-8 locale.

Apparently this works on Windows since Windows 10 version 1803 (April 2018).

There are also "restartable" variants `wcsrtombs` and `mbsrtowcs` where the conversion state is explicitly stored, instead of (presumably) a thread-local variable.

C11 added "secure" variants (with an `_s` suffix) of all these which check the destination buffer size and have different return values.

heftig··on Hidden dependencies in Linux binaries
I think you mean the LGPL? It allows you to "convey a combined work under terms of your choice" as long as the LGPL-covered part can be modified, which can be achieved either via dynamic linking or by providing the proprietary code as bare object files to relink statically. The GPL doesn't have this exception.
Page 1 of 4Next →