News for hackers. Stuff that matters.

phiresky

I think you're underestimating the "more expensive". It's not a 30% discount or similar. API is at least 10 times more expensive (own experience), ~40x as expensive if [1] is accurate.

At that price difference, lots of things that are viable to do in whatever harness the subscription allows are simply impractical via API, you'd be spending a whole developer's salary just for the benefit of using a different harness.

I tried for example Deepseek V4 Pro for a bit (via API pricing), but it's _more expensive_ than Sol via subscription, even though $1.7/Mtok is a lot less than 20$/Mtok.

[1]: https://tibotattle.com/

Re:Linux 7.3 improves performance when running out of vRAM on Tuesday August 18, 2026 @02:57PM (#49350818)
Which OS are you using? systemd-oomd (or similar) afaik is enabled in many modern releases and fixes it. The default settings (on Arch) make it kill stuff when your CPU is spending 60% of time on reclaiming memory over some time period. So you'll get 20 seconds of lag, then it is fixed.

By killing a program, yes, but how else do you expect it to work? If your RAM is not enough you have to kill stuff. And I really doubt you mean to say that Windows is _more RAM efficient_ than Linux, because that's kind of absurd. Maybe Firefox is less RAM efficient than Chrome.

Edit: MacOS I wouldn't doubt being better in RAM management than the others because they have been selling their devices with ridiculously low amounts of RAM for decades.

Well I was assuming your comment was saying it's _impossible_ to do this without affecting output, so I was just describing an option on how it IS possible. I saw that token list biasing post and yes that looks pretty bad. I didn't look in enough detail to see whether it's actually clear what Anthropic and SynthID really do. I would assume though their approach is of the smart kind.
An encrypted hard drive is EXACTLY uniformly distributed random bytes if you do not know the encryption key. No one would be able to tell the difference between a drive that is just purely random numbers or is actually filled with content. (Of course excluding the usually intentionally added readable header)

If this was not the case, the encryption would be broken, and most everyone agrees that good encryption does exist.

The "quality of the probability calculations" as you put it is 100% in this case and any less would be a huge deal (as in - breaks all of the internet).

So, now you just take those same random bytes and use them as the seed for your LLM token choices. The output has the _cryptographically_ proven exact same quality as if you were using a true RNG (which you likely weren't using anyways).

You just need to know your LLM distribution and the encryption key, then with each new token you exponentially increase the chance of knowing whether it fits your encryption key. Without actually affecting the token choice in a perceivable manner.

> choosing different words that it otherwise would

The "that is otherwise would" is carrying all the weight here. "Otherwise" is sampling from a distribution. You just sample from the same distribution but with a cryptographically secure, seeded RNG. https://en.wikipedia.org/wiki/Cryptographically_secure_pseud...

"Knowing the LLM distribution" seems to me like the only hard part because you don't know the context of any random snippet.

Re:EU Fines Google $1.02B for Favoring Its Own Services on Monday July 27, 2026 @03:33AM (#49066209)
The EU told them they can not by default prefer their own maps product when linking from their search product, they have to allow the user to choose.

They could have simply added a selector when a user first clicks on the maps preview in the search result, and then remembered it on device or across that user's account.

But of course, then the user could choose a competitor's product and Google would have to honor it. That would be horrible, so instead they just made the user experience worse for everyone and elegantly made people blame the EU.

Re:Mounting tar archives as a filesystem in WebAssembly on Friday April 24, 2026 @12:23PM (#47892338)
I actually first thought this wasn't possible at all because I'm used to zstd which by default uses a 128MB window and I usually set it to the max (2GB window). 32kB is _really_ tiny in comparison. On the other hand though, zstd also compresses in parallel by default and has tools built in to handle these things, so seekable zstd archives are fairly common.
Re:Mounting tar archives as a filesystem in WebAssembly on Friday April 24, 2026 @10:25AM (#47890765)
I think you're looking at a different perspective than me. At _build time_ you need to process O(n), yes, and generate O(n) additional data. But I said "The amount of data you need to decompress is a constant". At _read time_, you need to do exactly three steps:

1. Load the file index - this one scales with the number of files unless you do something else smart and get it down to O(log(n)). This gives you an offset into the file. *That same offset/32 is an offset into your gzip index.*

2. take that offset, load 32kB into memory (constant - does not change by number of files, total size, or anything else apart from the actual file you are looking at)

3. decompress a 1MB chunk (or more if necessary)

So yes, it's a constant.

Re:Mounting tar archives as a filesystem in WebAssembly on Friday April 24, 2026 @08:53AM (#47889530)
I'm a bit disappointed that this only solves the "find index of file in tar" problem, but not at all the "partially read a tar.gz" file problem. So really you're still reading the whole file into memory, so why not just extract the files properly while you are doing that? Takes the same amount of time (O(n)) and less memory.

The gzip-random-access problem one is a lot more difficult because the gzip has internal state. But in any case, solutions exist! Apparently the internal state is only 32kB, so if you save this at 1MB offsets, you can reduce the amount of data you need to decompress for one file access to a constant. https://github.com/mxmlnkn/ratarmount does this, apparently using https://github.com/pauldmccarthy/indexed_gzip internally. zlib even has an example of this method in its own source tree: https://github.com/gcc-mirror/gcc/blob/master/zlib/examples/...

All depends on the use case of course. Seems like the author here has a pretty specific one - though I still don't see what the advantage of this is vs extracting in JS and adding all files individually to memfs. "Without any copying" doesn't really make sense because the only difference is copying ONE 1MB tar blob into a Uint8Array vs 1000 1kB file blobs

One very valid constraint the author makes is not being able to touch the source file. If you can do that, there's of course a thousand better solutions to all this - like using zip, which compresses each file individually and always has a central index at the end.

Re:ISBN Visualization – Annas Archive on Saturday March 28, 2026 @03:47PM (#47557636)
There's a bit of an issue with the linked deployment (in my opinion). In the most zoomed out view you should see the first layer of blocks - very big blocks titled "English language", "French language", "German language". See https://phiresky.github.io/isbn-visualization/ maybe. That makes it a bit easier to read.

The point of the visualization is showing different attributes of books in the space of ISBNs. ISBNs correlate with country, publisher, and release date, that's why using it as a space is useful. You can clearly see the history of when blocks were created, which blocks are rarer than others (present in fewer libraries), and (on the AA hosting) which blocks are more present in AA vs not.

In any case though, yes ISBNs as spatial data are clearly not perfect. Do you have any suggestions that would order the 100 million data points better?

Re:ISBN Visualization – Annas Archive on Saturday March 28, 2026 @10:05AM (#47554749)
Here's my article on how I built it - and also an instance hosted on GitHub pages if the AA domain is blocked for you: https://phiresky.github.io/blog/2025/visualizing-all-books-i...

Happy to answer questions as always :)

Netdata used to be really impressively minimal, performant, and packed with functions. Fully GPL open source. You ran one install command and it started a web-ui at localhost:19999 in a few seconds. The UI loaded instantly and had hundreds of graphs. You could tell the author was a single opinionated person obsessed with the maximum of monitoring with the minimum footprint.

It auto-detects many programs like docker, nginx and postgresql and automatically creates dashboards for them. It also has many dashboards about system internals I didn't even know were great to monitor, so it taught me a lot. For example, seeing a CPU pinned at 100% processing interrupts because of a network interface overload or having time frames with high IOwait during a SQL query clearly meaning there's some larger seq scans happening.

You also needed zero configuration, no login, etc.

Then they added multi-instance monitoring purely client side - the browser remembers other instance domains and links between them - pretty neat and completely uninvasive.

Then they introduced their cloud login, where you can monitor multiple instances remotely/together. They had a `--no-cloud` flag though if you did not want it. But by now they've removed that flag and they say patching out the cloud functionality is bypassing their license [1]. Some functionality is locked behind premium upgrades, and you get prevented from adding more than N metrics or M instances. It's still _possible_ to use netdata without going through their cloud but you have to go through a nag window every time you try to open the local UI. It's clear they don't want you to use it anymore, and I don't really feel comfortable about their default auto-updating local install any more either.

Now it's still impressive and useful, but it's much more an enterprise focusued tool than an "i have this server i want to monitor" tool.

Of course I understand they need to make money, but what used to be trivial to understand (hooks into everything in your system it can and opens a single port to display it) has become a whole huge integrated ecosystem and for me personally it's competing in the space where I'd probably rather spend the time to make a proper Prometheus/Grafana setup instead.

[1] https://github.com/netdata/netdata/discussions/17594#discuss...

Re:Don't rent the cloud, own instead on Thursday February 05, 2026 @05:30AM (#46898105)
A $120M spend on AWS is equivalent to around a $12M spend on Hetzner Dedicated (likely even less, the factor is 10-20x in my experience), so that would be 3% of their revenue from a single customer.
Re:Rust Errors Without Dependencies on Monday December 29, 2025 @07:50AM (#46420138)
Even then you can just err.downcast_ref::<std::Io::Error>() though to get the underlying IOError, no?
Re:ISBN Visualization on Sunday December 21, 2025 @07:26AM (#46344335)
I'm happy to answer any questions! Nice to see this here again :)
Re:Arch-delta Saves 80% Of Bandwidth On Upgrades on Wednesday November 12, 2025 @06:16PM (#45908266)
This is great! Especially the DB sync part, because that happens before a user interaction, so you actually have to wait for it (the update itself can run in the background).

It always felt like such a waste to me how the DB always downloads tens of megabytes of data when likely only 1kB has changed. I mean I also really appreciate the beauty of how simple it is. But I'd bet even a delta against a monthly baseline file would reduce the data by >90%.

Also, it would be interesting to see how zstd --patch-from compares to the used delta library. That is very fast (as fast as normal zstd) and the code is already there within pacman.

For the recompression issue, there is some hard to find libraries that can do byte-exact reproducible decompression https://github.com/microsoft/preflate-rs but I don't know of any that work for zstd.

Re:Pikaday: A friendly guide to front-end date pickers on Wednesday November 12, 2025 @11:41AM (#45902295)
There's an extension to ISO8601 that fixes this and is starting to become supported in libraries:

    2019-12-23T12:00:00-02:00[America/Sao_Paulo]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
That seems a bit excessive to sandbox a command that really just downloads arbitrary code you are going to execute immediately afterwards anyways?

Also I can recommend pnpm, it has stopped executing lifecycle scripts by default so you can whitelist which ones to run.

Re:Next steps for BPF support in the GNU toolchain on Saturday October 18, 2025 @06:54AM (#45626362)
I disagree, you can always spend one or two sentences at the top to immediately bring everyone to a good starting point, regardless of how much technical depth the rest of the article has.

For example in this case: "eBPF is a method for user space to add code to the running Linux kernel without compromising security. They have been tied [...]. The GNU toolchain, the historical and still by many preferred system to build Linux currently has no support.

The description of what LWN and Linux is would be in the about page linked in the article.

It costs almost nothing for an expert to skim/skip two sentences while saving loads of time for everyone else.

The article is also completely missing motivation (why do we care whether BPF is supported in the second toolchain?) Which would be helpful for almost everyone, including people who think it is obvious.

Edit: To be clear though, I love LWN. But the articles are very often missing important context that would be easy to add that I suspect would help a large portion of the reader base.

Re:Redis is fast – I'll cache in Postgres on Friday September 26, 2025 @05:10AM (#45384424)
If your cache fits in Redis then it fits in RAM, if your cache fits in RAM then Postgres will serve it from RAM just as well.

Writes will go to RAM as well if you have synchronous=off.

Re:SQL Needed Structure on Friday September 05, 2025 @07:53AM (#45137506)
I think relational databases are great, but this is my biggest problem with SQL, even before the ridiculous syntax.

A query like

    select users.*, orders.* from users left join orders on orders.user_id = users.id
Should always have returned a structure like:

    type SingleReturnRow = { users: {id: ..., }[], orders: {user_id: ..., id: ..., }[]}
    type Return = SingleReturnRow[]
Mangling the columns together and _removing_ groupings that naturally appear is just so unnecessary.

I don't think a larger change in the query language would even be needed.

Even better of course would be a return value like

    type SingleReturnRow = { user: User, orders: Order[] }
But I see how that would require a fundamental change in the language.

Of course in PG now you can use

    select users.*, json_agg(orders.*) as orders from users left join orders on orders.user_id = users.id group by users.id
but using JSON as intermediate steps just feels unnatural.
Re:Inheritance was invented as a performance hack on Thursday May 08, 2025 @05:34AM (#43924569)
TypeScript does supports all of these - `C implements I` is not necessary but gives compile errors if not fulfilled.

You can use `o satisfies T` wherever you want to ensure that any object/instance o implements T structurally.

To verify a type implements/extends another type from any third-party context (as your third point), you could use `(null! as T1) satisfies T2;`, though usually you'd find a more idiomatic way depending on the context.

Of course it's all type-level - if you are getting untrusted data you'll need a library for verification. And the immutable story in TS (readonly modifier) is not amazing.

Re:Hyperspace on Tuesday February 25, 2025 @12:02PM (#43174475)
If you replace `sh:link` with `sh:clone` instead, it will.

> clone: reflink-capable filesystems only. Try to clone both files with the FIDEDUPERANGE ioctl(3p) (or BTRFS_IOC_FILE_EXTENT_SAME on older kernels). This will free up duplicate extents while preserving the metadata of both. Needs at least kernel 4.2.

Re:Visualizing all books of the world in ISBN-Space on Tuesday February 04, 2025 @12:50PM (#42935978)
Wow, amazing how you managed to convert that into a compact shader, including a representation of the visualization!
Re:Visualizing all books of the world in ISBN-Space on Saturday February 01, 2025 @04:52PM (#42902748)
It is admittedly pretty noisy, which is somewhat intentional because the focus was on high data density. Here's an a bit more minimalistic view (less color, only one text level simultaneously):

https://phiresky.github.io/isbn-visualization/?dataset=all&g...

It could probably be tweaked further to not show some of the texts (the N publishers part), less stuff on hover, etc.

Re:Visualizing all books of the world in ISBN-Space on Saturday February 01, 2025 @04:12PM (#42902394)
Huh, that text (and barcodes) are very offset from where they should be. Would you mind sharing what OS and browser you are using and if this text weirdness was temporary or all the time?
Re:Visualizing all books of the world in ISBN-Space on Saturday February 01, 2025 @04:07PM (#42902338)
Did you search by title or ISBN? If you search by title, the search goes through Google Books, which is very incomplete (since I didn't build a search database myself). If you put in an ISBN13 directly, you'll find a lot more books are included (I'd say you can only find 10-30% of books via the Google Books API)

It's a bit misleading I guess the way I added that feature.

Re:Visualizing all books of the world in ISBN-Space on Saturday February 01, 2025 @03:00PM (#42901647)
Yes! You can go here to have group texts be horizontal, it was just a stylistic choice to better show the layout: https://phiresky.github.io/isbn-visualization/?groupTextVert...
Re:Visualizing all books of the world in ISBN-Space on Saturday February 01, 2025 @02:59PM (#42901638)
The names of the groups are taken directly from the official allocation XML from the International ISBN Organization. This is what they call it, I assume to distinguish it from "Germany". Maybe "German language publishers" would be appropriate.
Re:Visualizing all books of the world in ISBN-Space on Saturday February 01, 2025 @02:57PM (#42901621)
Books visible should be fairly complete as far as I know. But the search is pretty limited (and dependent on your location) because that uses the Google Books API. If you put in an ISBN13 directly, that should work more reliably.

Older »