<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: zbentley</title><link>https://news.ycombinator.com/user?id=zbentley</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 18 Aug 2026 12:46:48 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=zbentley" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by zbentley in "How do I permanently disable random Google Photos popup to backup photos? (2024)"]]></title><description><![CDATA[
<p>All very true! Immich, unlike a lot of apps, does have a pretty friendly UI for managing/restoring backups, though: <a href="https://docs.immich.app/administration/backup-and-restore/" rel="nofollow">https://docs.immich.app/administration/backup-and-restore/</a><p>It's definitely still a lot more than the zero work required for Google Photos, but I feel like even even a semi-technical user can test an Immich backup without a ton of hassle. Start a new/empty immich instance in an empty directory, and follow the wizard for restoring a backup (and copy of your photos folder) taken from the non-empty instance.</p>
]]></description><pubDate>Mon, 17 Aug 2026 12:34:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49329833</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49329833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49329833</guid></item><item><title><![CDATA[New comment by zbentley in "TreasuryDirect: Prepare for ID.me – Your New Way to Log In"]]></title><description><![CDATA[
<p>That type of system is actually still in use in a lot of industries—either as a primary factor or a fallback for folks who might need to log in without a working device. Think healthcare workers who forgot their phone but need to order a surgery, or outdoor safety workers updating the toughbook after a day of work that might damage phones.</p>
]]></description><pubDate>Sat, 15 Aug 2026 18:28:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49312997</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49312997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49312997</guid></item><item><title><![CDATA[New comment by zbentley in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>By default yes, that’s true. But while there isn’t a reliable <i>don’t</i>-flush-this-page system, there definitely are ways to force the flush of specific ranges in an mmapped file.<p>But you’re generally right. I think that’s why most databases have the notion of a WAL, which is carefully append-only. But the non-WAL data files in most DBs I’ve used are accessed via mmap.</p>
]]></description><pubDate>Fri, 14 Aug 2026 14:26:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49299151</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49299151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49299151</guid></item><item><title><![CDATA[New comment by zbentley in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>My hunch having looked at the journald code as an amateur is that this write amplification is coming from scattering, with a few possible sources:<p>1. Writes try to compress away duplicate metadata at the application layer, which causes them to issue scattered writes when new metadata shows up.<p>2. Indexing is also surprisingly log-line/application-layer aware, such that index writes might also be scattering.<p>3. The indexes themselves seem like they could benefit from an append-mostly write model with periodic compaction rather than a mutate-in-place model.<p>4. I was surprised that the journal’s “WAL” doesn’t seem to be a major concern of a lot of the code. For a database, supporting reads “through” the WAL with periodic application back to the data files (“checkpoints” in RDBMS) seems like something I’d expect to see more of here. But I don’t really have deep understanding of the code, so I may be missing that it’s doing that already.<p>The choice of mmap instead of regular file writes here isn’t, as others have proposed, a design flaw. I think that makes sense given what journald is (a database) and how significant its durability concerns are. And it looks like the code does spend a lot of time trying to be careful about which blocks/pages are dirtied. But this is a famously hard-to-get-write (ha!) area so perhaps defects are present at that layer.<p>The systemd developers are talented in their area; I am not a systemd hater. However, “talented at low-level OS design” is not the same as “talented at building a database from scratch”, and I think that shows here.<p>I strongly feel like this system could be a wrapper around SQLite, which is definitely something that could be integrated everywhere journald is used (license-wise and compatibility-wise). I’m puzzled as to why that wasn’t chosen as an approach: a SQLite vfs implementation that handled compression and online rotation seems like it would have resulted in a design that’s both more interoperable and less prone to flaws like this one.<p>I also think that a per-log-emitter setting that doesn’t eagerly persist to disk (wait for page cache flush) would be very useful to have available—perhaps even as a default—for user-level/init6 level logs that are OK with a potential for data loss on kernel panic.</p>
]]></description><pubDate>Fri, 14 Aug 2026 14:21:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49299087</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49299087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49299087</guid></item><item><title><![CDATA[New comment by zbentley in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>Agreed. And in my experience , most large cloud providers’ Linux systems I’ve worked on (either their VMs as a tenant or their underlying hardware as an employee) log locally and ship additionally.</p>
]]></description><pubDate>Fri, 14 Aug 2026 14:07:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49298911</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49298911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49298911</guid></item><item><title><![CDATA[New comment by zbentley in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>What do you mean? That has described the vast majority of Linux systems I have ever touched, professionally or personally. Even corporate environments with log aggregation tail system logs rather than having them directly shipped elsewhere. The rare exceptions to this are some embedded devices without much durable storage, or tightly regulated environments in which log data is considered radioactive.</p>
]]></description><pubDate>Thu, 13 Aug 2026 22:16:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=49292516</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49292516</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49292516</guid></item><item><title><![CDATA[New comment by zbentley in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>Say more? Sounds like a good story</p>
]]></description><pubDate>Thu, 13 Aug 2026 22:12:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49292497</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49292497</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49292497</guid></item><item><title><![CDATA[New comment by zbentley in "Rails Is Built for AI"]]></title><description><![CDATA[
<p>AI can benefit significantly from type <i>checking</i>. This provides a minimal-setup-required feedback loop that it can use to address errors. User defined types are also a greppable “what do I need to look at in this codebase to implement feature X?” signal, and serve as a means of hinting what you want the AI to change without writing code (stub out some functions and/or refer to new nonexistent types rather than writing prose for some parts of your spec).</p>
]]></description><pubDate>Thu, 13 Aug 2026 18:34:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49290132</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49290132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49290132</guid></item><item><title><![CDATA[New comment by zbentley in "I requested a copy of my data from McDonald’s loyalty program"]]></title><description><![CDATA[
<p>Franchise failure rates don’t bear out that being a real risk. However, McDonald’s is publicly traded, and investor pressure to improve at the margins may make a business that is fundamentally well served by being change-averse do stupid things.</p>
]]></description><pubDate>Thu, 13 Aug 2026 18:28:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49290067</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49290067</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49290067</guid></item><item><title><![CDATA[New comment by zbentley in "I hate packaging my software for Linux"]]></title><description><![CDATA[
<p>> What in my comments gave you the impression that I'm trying to argue for this at all? Of course they don't care, otherwise they'd be maintainers themselves.<p>You said:<p>> When something isn't packaged for these users but they feel like it's popular/useful enough to be, they'll open a request with their distribution for someone to maintain that<p>I don’t think that happens nearly often or quickly enough for most users to be satisfied. Hence why so much software is released through tertiary PPAs or .deb download links and so on.</p>
]]></description><pubDate>Thu, 13 Aug 2026 16:49:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49288671</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49288671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49288671</guid></item><item><title><![CDATA[Marketers are Addicted to Bad Data (2020)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.jacquescorbytuech.com/writing/marketers-addicted-bad-data">https://www.jacquescorbytuech.com/writing/marketers-addicted-bad-data</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49288644">https://news.ycombinator.com/item?id=49288644</a></p>
<p>Points: 39</p>
<p># Comments: 43</p>
]]></description><pubDate>Thu, 13 Aug 2026 16:47:40 +0000</pubDate><link>https://www.jacquescorbytuech.com/writing/marketers-addicted-bad-data</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49288644</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49288644</guid></item><item><title><![CDATA[New comment by zbentley in "Someone is running mass vulnerability scans, spoofing AI bots like ClaudeBot"]]></title><description><![CDATA[
<p>2004 was a weird time.</p>
]]></description><pubDate>Thu, 13 Aug 2026 04:27:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281793</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281793</guid></item><item><title><![CDATA[New comment by zbentley in "I hate packaging my software for Linux"]]></title><description><![CDATA[
<p>The existence of a build step at all, even a nice and simple one, is enough to deter lots of users who would find a lot of software useful. Remember that nontechnical users exist (e.g. folks who only know how to install software via a GUI).</p>
]]></description><pubDate>Thu, 13 Aug 2026 04:17:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281748</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281748</guid></item><item><title><![CDATA[New comment by zbentley in "I hate packaging my software for Linux"]]></title><description><![CDATA[
<p>> It has worked for decades and many thousands of packages just fine<p>And yet insane quantities of programs used by millions are only available via raw .deb file downloads, or random alternative PPAs, or via programming language package managers.<p>The distro maintainer system is impressive, and I’m thankful for it. But saying “it has worked for lots of packages” says nothing about the many it has not worked for.</p>
]]></description><pubDate>Thu, 13 Aug 2026 04:13:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281734</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281734</guid></item><item><title><![CDATA[New comment by zbentley in "I hate packaging my software for Linux"]]></title><description><![CDATA[
<p>That’s naive. Most users want to <i>use a given piece of software</i>. If they can’t, they usually consider that a defect of the software in question. The users that know and care enough to complain to their distro maintainers are not representative enough and are rare enough to make this a laggy at best, nonfunctional at worst (see TFA’s mention of having to package a bunch of dependency libs as their own packages) approach.<p>Distro maintainer curation is a godsend for security and reliability. Distro maintainers and people who work with them to get things packaged are heroes. But let’s not pretend that maintainer curation is something the average user trying to run a new piece of software cares about.</p>
]]></description><pubDate>Thu, 13 Aug 2026 04:08:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281709</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281709</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281709</guid></item><item><title><![CDATA[New comment by zbentley in "We tracked down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>I don’t think that’s an architectural solution to this class of bug. I replied to a similar comment here: <a href="https://news.ycombinator.com/item?id=49281533">https://news.ycombinator.com/item?id=49281533</a></p>
]]></description><pubDate>Thu, 13 Aug 2026 03:57:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281643</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281643</guid></item><item><title><![CDATA[New comment by zbentley in "Tracking down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>Maybe, but there’s nothing about this particular bug that’s due to SQLite not being a networked database. Postgres is just as likely to have TOCTOU races in its checkpointer, which works roughly the same way.</p>
]]></description><pubDate>Thu, 13 Aug 2026 03:54:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281623</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281623</guid></item><item><title><![CDATA[New comment by zbentley in "Tracking down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>I mean, ProxySQL and SQLite are at <i>very</i> different tiers of reliability. I encountered multiple unreported data-corrupting (and some resource exhausting/connection mis-pinning) bugs in ProxySQL within a few months of using it for the first time, and I wasn’t using it for anything particularly complex or advanced—just a basic connection pool, no failover or caching/rewriting/replica awareness, but a <i>lot</i> of frontends and QPS.</p>
]]></description><pubDate>Thu, 13 Aug 2026 03:46:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281566</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281566</guid></item><item><title><![CDATA[New comment by zbentley in "Tracking down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>Eeeh, this particular bug was a race when applying WAL to the data files in a checkpoint. Postgres’s checkpointing is theoretically just as vulnerable to this class of bugs as SQLite, though it doesn’t seem to have equivalent issues today.<p>Online backups/replicas are nice until you’re charged for network traffic or have to recreate the replica from scratch, at which point the initial-restore-then-hook-up-the-WAL-stream dance is prone to all sorts of racy issues. If you’re lucky enough to have only a single process talking to the DB, SQLite seems like a nice way to sidestep that complexity while keeping a simple backup story.<p>Heck, this is basically the Redis model: a single process/thread coordinates all access to the data, and occasionally forks off a background job to snapshot the state somewhere. From that perspective, the Tailscale controller binary <i>is</i> a database; SQLite is just the data file format.</p>
]]></description><pubDate>Thu, 13 Aug 2026 03:38:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281533</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281533</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281533</guid></item><item><title><![CDATA[New comment by zbentley in "Tracking down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>This particular bug doesn’t seem to arise from SQLite’s “lite” nature. It’s a TOCTOU inside the DB when applying WAL segments in a checkpoint, which is a pattern used in extremely similar ways by Postgres and MySQL. They don’t seem to have similar bugs, but I don’t think there’s any reason to believe that this is due to their being client/server rather than coordinated-file databases.</p>
]]></description><pubDate>Thu, 13 Aug 2026 03:30:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49281470</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=49281470</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49281470</guid></item></channel></rss>