News for hackers. Stuff that matters.

sgarland

Re:Show HN: Bema: Work messaging built for humans on Tuesday November 03, 2026 @09:17AM (#50352297)
Same. It’s perhaps a little more bloated, but it’s nothing like what Discord has become, as a counter.
Re:WTF Ubuntu? on Monday November 02, 2026 @01:27PM (#50341270)
The only recent reason I’ve managed to come up with is it far and away has the best support for Nvidia’s various drivers and utilities for running GPUs and its assorted ecosystem, like Infiniband and Spectrum-X Ethernet.

If there’s another option I’m unaware of, I’d love to hear it. Also to be fair, I didn’t evaluate Sid for this, only Stable.

I should check to see if SimCity runs on Windows 11.
And yet somehow, Windows 11 remains a steaming pile of incoherent garbage.
> to the speed, reliability, and assurance requirements your market segment expects.

I suspect that the average Cisco customer expects a bit more stability than $RANDOM_SAAS.

Re:Python's experimental JIT to be removed on Tuesday October 27, 2026 @12:32PM (#50261699)
I posted it as well before scrolling down and seeing yours. Deleted mine, as your post goes into much more detail.

I don’t know how people who’ve worked with Python and been frustrated with its performance don’t know about Numba.

Re:Remove pgrust: the entry is cheating on Friday October 23, 2026 @08:54AM (#50208234)
Tbf, the author (prompter?) went on Postgres.fm [0] recently to discuss it, and while it didn’t make me entirely confident in it, it did at least seem like it was several steps above the average vibe project.

0: https://postgres.fm/episodes/pgrust

Re:PHP2Shell: AI uncovers critical RCE in PHP on Wednesday October 21, 2026 @06:44PM (#50188741)
Hack (Meta) is presumably contributing somewhat to PHP’s continued existence.
Re:Setting Up SSH Keys on macOS with Touch ID on Wednesday October 21, 2026 @01:15PM (#50184393)
Thank you for raising this, as it predates TFA by a year, and also correctly cites their source.
Re:Upcoming Critical PHP Security Release on Wednesday October 21, 2026 @09:01AM (#50180225)
Not who you’re replying to, but Rust lacks things I assumed were basics in any modern language, like random number generation, JSON handling, and regex. I understood the reasoning once I looked into why, but it was still startling at first.

In contrast (I know this is apples to oranges), Python’s stdlib is incredibly broad. colorsys lets you convert between color spaces. plistlib lets you read and write Apple’s property list files. graphlib has a topological sorter, which can lead to hilariously short interview questions when the interviewer isn’t familiar with Python’s stdlib.

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @08:10PM (#50159689)
Postgres can absolutely saturate an NVMe drive on its own.

> Additionally, think resource constrained devices like mobile phones.

SQLite will saturate the phone’s I/O before you saturate SQLite.

> Or an aggressive cost reduction mentality where each cpu cycle shouldn't be unnecessarily wasted without feeling guilty.

> Our database Dip stores raw binary as well as json as first class citizens.

These two statements are in conflict. If you want to minimize CPU cycles, parsing JSON is a terrible idea, and you should be pushing everything into bitfields, operating on it with bitwise manipulations.

> If you come from a systems engineering background like that, you wouldn't be much impressed with many traditional databases at all. I am generally not much interested in SQL databases anyway.

I would love to see a Jepsen analysis of your DB. Then a benchmark of it vs. Postgres, or MySQL, or SQLite.

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @04:26PM (#50157611)
Disclaimer: I have never worked at Uber. This is all armchair speculation, and I could of course be wrong.

IMO, if you read the later post on Docstore [0], you can see that they spent an enormous amount of time building back everything that they gave up with Schemaless - the enforcement of a schema (the irony...), transactions, serializability, etc.

They needed to create secondary indices as tables because they were storing everything in JSON blobs, which is difficult to directly index now, let alone in the 2010s. You can of course argue that they needed to use JSON blobs because they kept needing schema changes, and online DDL back then was difficult. I would counter that if you keep needing schema changes, you haven't done a good job modeling.

Everywhere I have worked that has DBs they claim are too large, I have been able to prove (typically by cloning one and remodeling it) that the reason they're suffering from performance issues is because they've made a series of decisions which were fighting against their RDBMS: UUIDv4 PKs, strings for low-cardinality data, excessive secondary indices, poor query plans from the ORM, massive JSON blobs that's duplicating already-present data, etc. At my last job, I showed a 30% speedup purely from changing to a PK that made sense for the table's usage.

0: https://www.uber.com/us/en/blog/schemaless-sql-database/

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @01:13PM (#50155041)
I have operated a BDR Postgres cluster spread across five global regions with hundreds of TB of data, with multiple reader nodes attached to each primary, each on instances with node-local NVMe drives; the entire cluster saw over 1 million QPS. I will grant you that there are much larger examples of scale, but they typically exist on DBs designed for that, like Spanner, Vitess, etc.

I am not asking for hand-holding, I’m asking for one single publicly-available example of this being done, because I cannot fathom it being necessary or beneficial, and you have not provided concrete proof.

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @11:33AM (#50153698)
The insertion hit isn’t as bad as it’s made out to be; also, the majority of applications are heavily read-centric, something like a 98/2 split, so it’s usually a net gain.

You should, of course, test it on your own data before deciding.

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @11:31AM (#50153666)
You also now have to manage your own ACID guarantees, and what amounts to cache invalidation. Not sure how this is “a simpler mental model.”

Same with locks / contention: non-locking reads don’t cause contention, or at least, none that wouldn’t also occur with a separate table acting as the index.

Do you have any examples of this being used at scale, preferably with an accompanying blog post or other form of documentation?

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @10:03AM (#50152673)
I do not see how this could possibly be faster. Now you have an additional indirection.
Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @09:48AM (#50152469)
> Because a workflow typically performs many steps over a long period of time, those step records are widely separated on disk

Clustered indices would be so, so nice for Postgres to have. OrioleDB can’t come quickly enough.

> However, this stamp is applied only to the row itself, not to any indexes referencing the row.

Indices also hold the hint bit LP_DEAD, which is set by any query that follows the index to the heap and finds that it’s invisible to everyone.

I suspect that a combined query that uses pagination rather than LIMIT … OFFSET would be more performant here, and could skip the dead tuple problem.

    DELETE FROM step_outputs
    WHERE ctid = ANY(ARRAY(
        SELECT s.ctid
        FROM step_outputs s
        WHERE (s.created_at, s.id) > (?, ?)
            AND s.created_at < ?
            AND NOT EXISTS (
                SELECT 1 FROM workflow_status w
                WHERE w.workflow_uuid = s.workflow_uuid
            )
        ORDER BY s.created_at, s.id
        LIMIT ?
        ))
   RETURNING created_at, id;
Haven’t tested that, but something of that shape. You’d need a composite index on (created_at, id) as well.
Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @09:09AM (#50151999)
> Application-managed indexes

Are you suggesting that one should recreate B+trees in code?

Re:How Postgres DELETE can actually scale on Monday October 19, 2026 @09:07AM (#50151983)
IME as a DBRE, it usually is rejecting simplicity. Most devs know precious little about RDBMS, and so reach for what they do know. When an experienced DBA / DBRE shows them the idiomatic way to do what they’re attempting, they often reject it and claim “flexibility,” or “keeping logic out of the database.” It’s just not wanting to do things they’re unfamiliar with, but for some reason it’s accepted for RDBMS, because it lives in the liminal space of infra and code.
That’s the same reason I started using the Secure Enclave SSH access for HomeAssistant: I wanted to grant agentic access, but I also didn’t want my house’s automations being blown up. Everything is written offline as IaC, and gets pushed with explicit approval only.
Seems like an excellent way to resolve shared responsibilities.
Yes. I lived in an HOA neighborhood in Texas that was fine. Dues were $25/month, and from that we got a nice community pool, and a legitimately nice Christmas party: they’d rent food trucks that were pre-paid, put up a Santa village, bring in VR rides, etc. All paid for from dues. They also really did not bother you if you were making an attempt at keeping your place looking decent.

Then I moved to one in North Carolina that was god-awful. Dues started at $65/month and went up every year. They’d send out neighborhood reminders that a pressure-washing service would be in the neighborhood next week if anyone wanted to hire them; anyone who didn’t got notices a few weeks later that they needed to pressure-wash their driveway and/or house. I also had to buy a specific brand and sheen of paint to repaint my mailbox; of course, the lettering was only available from a single supplier.

I now live on an acre lot that sits between two neighborhoods. I have no HOA, and it is glorious.

Re:Regex visualized as 3D marble run on Sunday October 18, 2026 @10:20AM (#50141337)
You can enable extended mode for most engines, which allows you to add white space and comments.

Personally, I like regexes, in the same way that I like shell string manipulation: it looks utterly inscrutable, and performs magic. If I write one in code meant for others, I usually use extended mode with each line commented.

Re:A skeptic's first contact with Kubernetes (2024) on Saturday October 17, 2026 @03:37PM (#50134351)
I especially enjoyed where you discovered that K8s runs on string interpolation. That feeling never goes away, FYI; every time you have to play with nindent, you lose a little piece of your sanity.
Re:I never authorized an integration that scans my secrets on Saturday October 17, 2026 @03:33PM (#50134321)
I get that, but I also feel like a much easier way to deal with it is to tell people you will not provide support, and if necessary, set up an auto-responder for the email address.
Re:I never authorized an integration that scans my secrets on Friday October 16, 2026 @11:21PM (#50127606)
Yes, I understand that. My point was that’s not how it works; if you want to be able to control distribution, don’t use an OSS license, because it’s just weird to ask someone to not do something you implicitly granted them permission to do.
Re:I never authorized an integration that scans my secrets on Friday October 16, 2026 @07:07PM (#50125982)
Holy shit, what a read. How do people not understand open source licensing? In every license I'm aware of, you don't get to decide whether or not someone else can use your stuff. Nothing stops you from asking, of course, but it just looks bizarre. If you want to control distribution, design a license to do so, or don't release it in the first place.
> submarines implode

Fantastic analogy, and I assume you already know where I'm going with this.

The Titan submersible [0] implosion was by all accounts due to studiously ignoring best practices and test results. They shipped fast.

In contrast, James Cameron's Deepsea Challenger [1] was a slow and methodical build, and has heavily redundant backup systems for everything. For example, the ballast release system operates by demagnetizing coils that hold the ballast; that way if they have a system failure or power loss, it fails open, and they ascent. If that somehow fails, the supports for the ballast will corrode from sea water before the oxygen runs out, so in the worst case, it's sitting in the dark for a few hours before heading back up.

Or, let's look at the U.S. Navy submarine program. I was a propulsion plant operator (reactor operator + throttleman) on a Virginia-class sub. Though I can't go into specifics, "redundant" doesn't begin to describe it. FFS, the San Francisco (688-class sub) ran into an underwater mountain at flank [2] and survived. The SUBSAFE program [3] was a direct result of the loss of the Thresher [4], and to date, no SUBSAFE-certified submarine has been lost.

> Then look at software. When is the last time you encountered a bug? Have you ever heard of bug free software?

You're conflating "free of defects" with "capable of gracefully handling defects." NASA writes as close to bug-free as I think you'll find, but even theirs isn't perfect [5]. The difference is the ability for the software to work through or around those problems. Submarine / submersible design and construction is the same. Are the engineers, welders, machinists, electricians, etc. attempting to do perfect work? Of course. They also are aware that perfection is impossible, and so the design accounts for that.

0: https://en.wikipedia.org/wiki/Titan_(submersible)

1: https://en.wikipedia.org/wiki/Deepsea_Challenger

2: https://en.wikipedia.org/wiki/USS_San_Francisco_(SSN-711)#Gr...

3: https://en.wikipedia.org/wiki/SUBSAFE

4: https://en.wikipedia.org/wiki/USS_Thresher_(SSN-593)#Disaste...

5: https://space.stackexchange.com/a/37694

Re:Same Job, Two Engines: InnoDB and Iceberg Internals on Wednesday October 14, 2026 @07:51AM (#50086202)
> InnoDB’s Three Guarantees

Rows store all columns together

Not guaranteed. The DYNAMIC (default) and COMPRESSED row formats [0] can shift larger values of variable-length columns in off-page records. In the example given, this wouldn’t occur, but it isn’t a guarantee per se. This is roughly equivalent to Postgres’ TOAST, though Postgres’ default threshold for TOAST is 1/4 of a page (2 KiB with its default 8 KiB page size), whereas InnoDB is 1/2 of a page (8 KiB with its default 16 KiB page size).

0: https://dev.mysql.com/doc/refman/9.7/en/innodb-row-format.ht...

Re:apsw: Another Python SQLite Wrapper on Monday October 12, 2026 @06:49PM (#50064158)
Wow, thank you!

Older »