<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>Sun, 21 Jun 2026 09:37:18 +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 "AURpocalypse now: a look at the recent AUR attacks"]]></title><description><![CDATA[
<p>> An Arch maintainer that I personally know once admitted that he rarely review upstream changes when bumping package versions.<p>Cool story bro. Assuming that's common, I have trouble understanding why Arch (non-AUR) is any more at risk than Debian--besides the latter being more popular and having more users/incidental testers, which is a real benefit if that's your goal, but has its own drawbacks (like older and known-vulnerable packages lingering for longer before updated releases are made available).<p>> it's not reasonable to ask package maintainers to spend all their time on those stuff, especially in this "Age of AI"<p>Aren't Debian and friends similarly at risk of this as well, then?<p>> security practices (such as TOTP, sandboxing browsers and video players, etc.)<p>I'm not sure if those are more or less prevalent on Arch; I know that many IDEs and GUI programs I've installed on Arch ran by default in Flatpaks or similar, and Debian/Ubuntu like Snaps, but I'm honestly not familiar with whether those ecosystems have significant and/or equivalent penetration in different distros.</p>
]]></description><pubDate>Sat, 20 Jun 2026 01:34:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=48605401</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48605401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48605401</guid></item><item><title><![CDATA[New comment by zbentley in "AURpocalypse now: a look at the recent AUR attacks"]]></title><description><![CDATA[
<p>The AUR is <i>not the Arch package manager or repository</i>. The main Arch package repos are managed similarly to Debian, or Fedora, or whatever--caveat Arch's nature as a rolling release, but in terms of vetting and ownership/security, the approaches are similar. pacman installs from regular, real, vetted repositories by default. pacman will never install from the AUR. pacman is the official Arch package manager and the only one that is provided with the main Arch distribution/install instructions.<p>The AUR is, as many others have pointed out, a <i>deliberately</i> un-vetted pile of random Git repos. Arch deliberately doesn't even ship with a default one-click installer for AUR packages; their published guidance is "git clone this stuff from wherever it's hosted and build it at your own risk". Plenty of third-party, non-Arch-blessed tools turn that into a one-click process, but it's not "part" of Arch itself--at least not any more than, like, curl | bash or directions on how to add rando websites to /etc/apt/sources.list.d is part of Debian and friends.<p>I've used Arch as a daily driver for years. At <i>peak</i>, I've had five (5) total packages, with no transitives, installed from the AUR. Today I have one: sublime-text-4. It's perfectly possible--and extremely reasonable for many users, even power users--to live in an AUR-less world, or to use so few AUR packages that the guidance of "read what you're installing, doofus" is manageable and not onerous.</p>
]]></description><pubDate>Sat, 20 Jun 2026 01:11:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48605267</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48605267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48605267</guid></item><item><title><![CDATA[New comment by zbentley in "The Productivity J-Curve [pdf] (2018)"]]></title><description><![CDATA[
<p>Citation needed. Industries that faced multi year supply constraints in recent memory include: nuclear power, battery manufacturing, flagship commercial aircraft models, late-stage pharmaceutical safety certification, certain luxury cars, and more.</p>
]]></description><pubDate>Fri, 19 Jun 2026 19:48:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48602479</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48602479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48602479</guid></item><item><title><![CDATA[New comment by zbentley in "Feds freaked over Fable 5 after 'fix this code', not jailbreak, say researchers"]]></title><description><![CDATA[
<p>They might well do that, but that takes a lot of time and money to implement, meaning that the government’s goal of causing them immediate pain for minimal effort is still achieved.<p>It’s likely a better use of anthropic’s resources to try to get the export controls lifted by appeasing the government. I’m not saying that’s a good thing; it’s a stupid situation to be in in the first place for reasons many others in this thread have pointed out.</p>
]]></description><pubDate>Wed, 17 Jun 2026 15:58:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48572298</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48572298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48572298</guid></item><item><title><![CDATA[New comment by zbentley in "Feds freaked over Fable 5 after 'fix this code', not jailbreak, say researchers"]]></title><description><![CDATA[
<p>I don’t think that’s accurate. Export control <i>is</i> a total ban, for 350 million citizens and everyone else, just via a legal technicality/exploit.<p>All of the government’s options to retire/ban Fable entirely would have required expensive protracted (potentially years long) legal battles. The government wanted to make Anthropic feel pain in the short term, so they looked around for pre existing laws that could be exploited to do that.<p>Enter export control—a law that doesn’t require banning a product outright to <i>effectively</i> ban it for everyone. Because Anthropic has no way of telling whether a given user is a foreign national, and because even a few false negatives in any check they did for that would expose them to serious criminal charges, they had to disable the model for everyone. The government knew very well that they would have to.<p>It’s similar to GDPR in a way. For GDPR, tons of websites started complying for all their users worldwide, simply because IP location detection is too fallible, and the legal costs of even a small number of detection failures for EU citizens were potentially steep.</p>
]]></description><pubDate>Wed, 17 Jun 2026 14:16:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48570900</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48570900</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48570900</guid></item><item><title><![CDATA[New comment by zbentley in "What job interviews taught me about Kubernetes"]]></title><description><![CDATA[
<p>I think the best supported and most mature pattern on most big cloud providers is precisely<p>> do stuff in parallel either by hand or by terraform<p>…specifically by terraform. Making k8s own the provisioning and management of external infrastructure <i>on principle</i> (as opposed to when that makes sense, e.g. load balancers/gateway/CSI providers) is not a good approach. Sure, it feels unified, but the cost of unification is incredibly not worth it.</p>
]]></description><pubDate>Tue, 16 Jun 2026 01:06:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549264</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48549264</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549264</guid></item><item><title><![CDATA[New comment by zbentley in "What job interviews taught me about Kubernetes"]]></title><description><![CDATA[
<p>The linked article discusses very different reasons for preferring kube. CTOs and hiring managers like it for reasons totally different from the cargo cult/hype-driven engineers.</p>
]]></description><pubDate>Tue, 16 Jun 2026 01:00:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549229</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48549229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549229</guid></item><item><title><![CDATA[New comment by zbentley in "What job interviews taught me about Kubernetes"]]></title><description><![CDATA[
<p>Spot on. I have a lot of trouble convincing cloud folks that for durable state, you probably <i>don’t</i> want kubernetes. It’s not that e.g. the CSI drivers and operators for clustered databases aren’t top notch—they are; the era of “avoid stateful kube services” is long behind us—it’s that the cloud provider managed services for e.g. blob stores or databases are <i>so much more reliable</i>. The S3s and Auroras of the world are expensive for a reason: no matter how good your kube native database operator is, it still doesn’t assume responsibility for a ton of the failure points that managed services do. And that’s true even at modest scale (e.g. upgrades are just harder when you’re running your own DB) and in cost conscious environments (sure, the Elasticache bill is steep, but the salary and velocity cost of fixing memory-leak-caused kube memcached crashes is steeper).</p>
]]></description><pubDate>Tue, 16 Jun 2026 00:57:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549206</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48549206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549206</guid></item><item><title><![CDATA[New comment by zbentley in "My Homelab AI Dev Platform"]]></title><description><![CDATA[
<p>Is it analogous to portainer with a git-pull-compose-apply loop?</p>
]]></description><pubDate>Tue, 16 Jun 2026 00:49:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549148</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48549148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549148</guid></item><item><title><![CDATA[New comment by zbentley in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>Kind of. Those exist, but because Linux’s formal ABI is syscalls and not libraries that combine them in known-safe ways, the clone speedups that make fork faster are a confusing and fragile API for low-level programmers to use.<p>That, and even those clone-without-pagetable-copy improvements leave a lot of slowness on the table. Being able to skip even disable-able functionality intended for fork would simplify code. Also, for programs that launch the <i>same</i> subprocess many times, a better API might allow caching away some of the pre-entrypoint initialization of exec.</p>
]]></description><pubDate>Sun, 07 Jun 2026 18:56:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48437584</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48437584</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48437584</guid></item><item><title><![CDATA[New comment by zbentley in "India's surprise baby bust"]]></title><description><![CDATA[
<p>Thanks for clarifying and amending.</p>
]]></description><pubDate>Sun, 07 Jun 2026 14:29:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48435192</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48435192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48435192</guid></item><item><title><![CDATA[New comment by zbentley in "India's surprise baby bust"]]></title><description><![CDATA[
<p>> improved health and safety and lifespan will shrink the urge to procreate<p>Not what I said at all. Note the “even if I grant … (which I don’t…)”.</p>
]]></description><pubDate>Sat, 06 Jun 2026 02:27:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48420817</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48420817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48420817</guid></item><item><title><![CDATA[New comment by zbentley in "India's surprise baby bust"]]></title><description><![CDATA[
<p>> I will acknowledge industrialization improved people's access to wealth and materialism.<p>And reduced illness, increased education, increased access to better nutrition, increased lifespan, increased <i>able</i> lifespan (knees/back/teeth don’t give out as early), and lots more.<p>Like, even if I grant that this replaced human connection (and I’m not sure that’s true, nor am I sure if it is <i>meaningfully</i> true—access to water replaces thirst, too), some very substantial benefits were acquired in return.</p>
]]></description><pubDate>Fri, 05 Jun 2026 21:29:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48418592</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48418592</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48418592</guid></item><item><title><![CDATA[New comment by zbentley in "India's surprise baby bust"]]></title><description><![CDATA[
<p>> there's a reason authoritarians across the world are banning abortion and targeting birth control<p>I don’t think that’s because of birth rate decline. While authoritarians give lip service to that occasionally, it’s never their primary cited reason (which is usually some combo of religion, purported return to “traditional” prosperity via reduced promiscuity, aggression against feminist political opponents, etc). Also, most authoritarians aren’t that long-term in their goals.</p>
]]></description><pubDate>Fri, 05 Jun 2026 21:21:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=48418501</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48418501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48418501</guid></item><item><title><![CDATA[New comment by zbentley in "India's surprise baby bust"]]></title><description><![CDATA[
<p>Eh, that argument works on any claim and is nonfalsifiable-ish, so I think it can be ignored.<p>People buying more chocolate ice cream than vanilla? Could be changing preferences or Hersheys marketing, or it could be undetected brain worms. People voting for one political party over others? Could be that party is campaigning/governing in a more popular way, could be brain worms.<p>If there’s evidence of contaminants or whatever influencing behavior <i>strongly enough to change large scale demographic trends</i>, then present it. Otherwise, your best chance at good data is to take people at their word when they say why they do things.</p>
]]></description><pubDate>Fri, 05 Jun 2026 21:11:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48418368</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48418368</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48418368</guid></item><item><title><![CDATA[New comment by zbentley in "Redis 8.8: New array data structure, rate limiter, performance improvements"]]></title><description><![CDATA[
<p>A few nice things about doing this in no particular order:<p>Embedding would make local dev/CI integration testing convenient.<p>Embedding replicated Redis with each application instance would give you HA benefits while infra-management complexity.<p>Embedded redis (even via local RPC) is still going to be faster than a lot of languages or frameworks’ built-in data structures. Large array operations in, say, Python are gonna slower than RPCing to Redis (assuming that the data structures are built gradually and not built all at once); to beat Redis you’d have to use numpy or something—-which is definitely preferable, but is extra work if your app already uses Redis for other things.<p>Just like choosing SQLite over e.g. LMDB or RocksDB, embedded Redis would be a nice future proofing option for small apps during the prototype phase; less would have to be changed to move Redis out of the app than if a different cache or persistence service were chosen.</p>
]]></description><pubDate>Fri, 05 Jun 2026 15:42:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48414061</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48414061</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48414061</guid></item><item><title><![CDATA[New comment by zbentley in "My thoughts after using Clojure for about a month"]]></title><description><![CDATA[
<p>> focus their efforts on ensuring downstream IO doesn't get overwhelmed (db read replicas, caching, etc) before optimizing runtime performance or autoscaling out unnecessarily.<p>All good advice, but the choice of runtime can affect the point at which autoscaling and load balancing <i>even need to enter the conversation at all</i>. Optimizing, say, a mostly in-memory cache service and writing it in Golang may yield results like "we can run a single instance of this and serve three orders of magnitude of business growth; slap it behind a DNSRR or a k8s NodePort for update/replacement/fast failover if it crashes, no complex load balancer needed", where writing the same thing in, say, PHP might require discussing orchestration/load balancing/memory/worker process recycling/autoscaling early on in the service's lifetime. Being able to skip those conversations (entirely or for a long time) is a very significant business benefit.</p>
]]></description><pubDate>Wed, 03 Jun 2026 19:25:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48388654</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48388654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48388654</guid></item><item><title><![CDATA[New comment by zbentley in "My thoughts after using Clojure for about a month"]]></title><description><![CDATA[
<p>> I did witness it brutally murder a MySQL cluster because it couldn't serve it fast enough. That was both fun and terrifying to watch on the dashboards.<p>Haha yep. In my experience, everyone running CGI/process-per-request application servers is bullish on switching to a concurrent or cooperative runtime...until they realize they just removed the primary ratelimiter on downstream DB/service accesses.<p>The converse war stories are also amusing: people rewrite their whole app in a concurrent/asynchronous framework and nothing changes, because the DB driver is still farming out all queries to a tiny fixed-size threadpool of connections that was the bottleneck all along.</p>
]]></description><pubDate>Wed, 03 Jun 2026 18:17:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48387648</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48387648</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48387648</guid></item><item><title><![CDATA[New comment by zbentley in "My thoughts after using Clojure for about a month"]]></title><description><![CDATA[
<p>Not the case; good abstractions are valuable, but the performance differences between runtimes are very real.<p>Take the example of some simple HTTP<->blob store service gets slammed with millions of requests when someone using the API does a backfill via some framework on their end that aggressively scales request volume up and out.<p>Something like, say, async Python/starlette with a coroutine per request is gonna perform slightly worse than Erlang, which in turn is gonna perform much worse than Go.<p>You're right that those differences are <i>sometimes</i> marginal when the latency of whatever IO the backend's doing dominates the equation. However, in my experience huge volume surges show issues with the runtime (the thing managing/launching multiplexed request handler routines) or the ecosystem (the backend IO libraries' ability to work with the runtime's IO multiplexing and make things like request coalescing easy or automatic) more often than you'd think.<p>It really takes surprisingly little volume to cripple a return-hello-world Phoenix app that indirects the "hello world" behind way too much middleware and message passing; it takes even less to kick over, say, a Gunicorn instance returning "hello world" at the bottom of the Django middleware stack. Golang with Gin, on the other hand, is surprisingly hard to cripple in the same way. And I say that as someone who likes Elixir and Python a lot more than I like Go!</p>
]]></description><pubDate>Wed, 03 Jun 2026 17:53:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48387316</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48387316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48387316</guid></item><item><title><![CDATA[New comment by zbentley in "My thoughts after using Clojure for about a month"]]></title><description><![CDATA[
<p>Eh, reduction counting isn't magic. Golang manages similar preemption semantics without counting that many operations (some tight loops do have barriers inserted every so often, but that's the exception and not the rule). And reduction counting has some serious costs! It slows the runtime down a shitload (and the BEAM is already in the bottom half of interpreted language runtimes by speed) and makes lots of JIT-flavored runtime optimizations slower or harder to implement.<p>I like immutability too; I wish Java and Golang did more of it. It costs a <i>lot</i> in terms of unexpected copies in the BEAM though, there's less copy-elision optimization than you'd think. That especially bites if you're doing a ton of message passing, because of how process heaps are implemented and how garbage collection (traditional or ETS/ThreadProgress-based) works.<p>I think what I want is something like Golang but with goroutine-based ownership semantics (or Rust with the Go runtime and goroutines): en excellent scheduler for extremely light-weight green threads, no refcounting or reduction counting, and all the clever optimizations around channel sending and copy elision--but no ability to use a value after it's sent to a channel, and only channel-based access to shared global state. That'd get most of the benefits of process-local heaps but without the (copying, cache/memory fragmentation) drawbacks.</p>
]]></description><pubDate>Wed, 03 Jun 2026 17:26:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48386926</link><dc:creator>zbentley</dc:creator><comments>https://news.ycombinator.com/item?id=48386926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48386926</guid></item></channel></rss>