<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: raggi</title><link>https://news.ycombinator.com/user?id=raggi</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 01 Nov 2026 14:38:10 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=raggi" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by raggi in "A City Canceled Flock's Contract. Flock Ignored It. Police Chief Unplugged Them"]]></title><description><![CDATA[
<p>The city should start charging them rent for the pole space.</p>
]]></description><pubDate>Sat, 31 Oct 2026 18:17:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=50318540</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50318540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50318540</guid></item><item><title><![CDATA[New comment by raggi in "A/SIDE – Private photo sharing and encrypted messages"]]></title><description><![CDATA[
<p>If did:web gets a rooting solution that isn’t dnssec maybe, until then nope.</p>
]]></description><pubDate>Sat, 31 Oct 2026 18:13:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=50318487</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50318487</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50318487</guid></item><item><title><![CDATA[New comment by raggi in "CVE-2026-98432: Linux TCP Use-After-Free Risk and Patch Validation"]]></title><description><![CDATA[
<p>Everyone who’s read the patch.<p>Want a big name? RedHat.</p>
]]></description><pubDate>Fri, 30 Oct 2026 15:34:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=50305399</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50305399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50305399</guid></item><item><title><![CDATA[New comment by raggi in "CVE-2026-98432: Linux TCP Use-After-Free Risk and Patch Validation"]]></title><description><![CDATA[
<p>mptpcp usage is not a prerequisite</p>
]]></description><pubDate>Fri, 30 Oct 2026 04:55:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=50299996</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50299996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50299996</guid></item><item><title><![CDATA[New comment by raggi in "noalloc: Tooling and libraries to enforce zero heap allocations in Golang"]]></title><description><![CDATA[
<p>Historically that was rejected.<p>Tides have shifted somewhat, but I suspect this may still be rejected.<p>Unfortunately a lot of people’s experience with such proposals was also historically getting gaslit by a brigade, so a lot of folks moved on and won’t bother trying again.</p>
]]></description><pubDate>Thu, 29 Oct 2026 18:54:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=50294084</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50294084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50294084</guid></item><item><title><![CDATA[New comment by raggi in "noalloc: Tooling and libraries to enforce zero heap allocations in Golang"]]></title><description><![CDATA[
<p>The end state of inappropriate use of garbage collected languages.<p>Go/GC are mostly fine for medium frequency medium scale mid stack problems.<p>It’s bad for high frequency computing. It’s bad for very small targets, for very large targets, and by association software that lives at the very bottom of the stack.<p>Go is a high efficiency framework for writing mid sized servers, not a systems language. The runtimes hard opinions and closed interface are the reason for this enclosing definition and the GC is one part of that.</p>
]]></description><pubDate>Thu, 29 Oct 2026 18:53:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=50294066</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50294066</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50294066</guid></item><item><title><![CDATA[New comment by raggi in "Tailscale SSH: Investigation and remediation update"]]></title><description><![CDATA[
<p>we'd love to hear about it at security@tailscale.com, we're happy to work from & with and credit early ideas as well.</p>
]]></description><pubDate>Tue, 27 Oct 2026 21:43:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=50266271</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50266271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50266271</guid></item><item><title><![CDATA[New comment by raggi in "Tailworm – Tailscale Vulnerabilities"]]></title><description><![CDATA[
<p>(tailscalar here): it's been a long day working on this, and we will have more details to follow. quickly though, on this point about enumeration, some of this may be a difference in headscale. the tailscale control plane performs what we colloquially refer to as "netmap trimming" - if node a has no acls that allow it to do anything with node b, then neither a or b would see each other in their netmap.</p>
]]></description><pubDate>Sun, 25 Oct 2026 01:38:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=50227392</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50227392</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50227392</guid></item><item><title><![CDATA[New comment by raggi in "/dev/null: social network for developers"]]></title><description><![CDATA[
<p>It’s actually changed for the worse. Now everyone wants their slop to be the winning protocol, so the competing standards problem has become far broader</p>
]]></description><pubDate>Sat, 17 Oct 2026 01:45:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=50127061</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=50127061</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50127061</guid></item><item><title><![CDATA[New comment by raggi in "FTL: A new operating system for clouds"]]></title><description><![CDATA[
<p>parts of the kernel design remind me of zircon (handle oriented objects, vmo's, and so on), but then various lines are cut in different places (kernel knows of threads but not processes, maybe handles slightly higher level networking)</p>
]]></description><pubDate>Sat, 03 Oct 2026 17:56:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49946318</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49946318</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49946318</guid></item><item><title><![CDATA[New comment by raggi in "One month coding with GLM 5.3 Flash"]]></title><description><![CDATA[
<p>Some vague commentary about performance with what appears to be assumptions about GPU availability, but no clarity about which inference provider is being used. If ZAI is assumed, I believe they aren't subject to the assumptions in the post based on what they've said publicly, but if they were using some other provider, perhaps.<p>The second reason appeared to be simply "because we chose not to". The post seems to be pretty much content-less in any practical sense. I clicked on it because I do quite like this models average performance and I was hoping to see some kind of review content.</p>
]]></description><pubDate>Fri, 02 Oct 2026 21:17:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49938702</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49938702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49938702</guid></item><item><title><![CDATA[New comment by raggi in "Rune is now open source"]]></title><description><![CDATA[
<p>Similar reflection, I ran `kitten __benchmark__ --render` in rune, the CPU time spent was 1:55. I ran the same in a libghostty based terminal emulator and spent 0:44 on CPU.<p>I say this only because yes you can do engineering to meet the benchmark without dropping to deeper systems layers, but closing the gap on efficiency is hard. I'm not saying this to be a downer on your project - an IDE and VTE in Go are a fun project to have around, but the blog post makes implied claims of equivalence with moderate investment - but I think that's limited to single benchmark chasing. I say this as a polyglot who's day job is a Go based program that would be far easier to optimize in a systems language.</p>
]]></description><pubDate>Fri, 11 Sep 2026 20:31:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49664923</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49664923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49664923</guid></item><item><title><![CDATA[New comment by raggi in "Rune is now open source"]]></title><description><![CDATA[
<p>The build time claim in the blog post is dubious, part of the problem is CGO isn't fast, but also if build time was really a motivator the null build path is entirely unoptimized for objects with long build times:<p>cached null (no changes) build:<p><pre><code>        ~github/unstablebuild/rune % make
        pre-commit not installed; skipping git hook setup
        cd cmd/buildstamp && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/buildstamp
        cd cmd/extension_chaos && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_chaos
        cd cmd/extension_color_palette && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_color_palette
        cd cmd/extension_fuzzy_search && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_fuzzy_search
        cd cmd/extension_go && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_go
        cd cmd/extension_python && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_python
        cd cmd/extension_rtc && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_rtc
        cd cmd/extension_rust && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_rust
        cd cmd/extension_zig && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/extension_zig
        cd cmd/runefox && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/runefox
        cd cmd/sshshop && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/sshshop
        cd cmd/walkbench && CGO_ENABLED=1 go build  -ldflags="-X unstable.build/rune/internal/debug.Tag=$(git describe --tags) -X unstable.build/rune/internal/debug.Commit=$(git rev-parse --short HEAD) -X unstable.build/rune/internal/debug.BuildDate=2026-09-11T20:16:22Z  -X unstable.build/rune/internal/debug.Package=six" -o ../../bin/walkbench
        make  35.90s user 5.88s system 191% cpu 21.846 total 1975848 rss
</code></pre>
vs. cached non-null (changed) build:<p><pre><code>    ~github/zed-industries/zed % touch crates/zed/src/zed.rs
    ~github/zed-industries/zed % cargo build
       Compiling zed v1.18.0 (/home/raggi/src/github.com/zed-industries/zed/crates/zed)
       Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.42s
    cargo build  10.15s user 9.34s system 228% cpu 8.531 total 7930312 rss

</code></pre>
Build times are a valid thing to care about and talk about, but the claims implied don't stand up to scrutiny.</p>
]]></description><pubDate>Fri, 11 Sep 2026 20:20:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49664777</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49664777</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49664777</guid></item><item><title><![CDATA[New comment by raggi in "Matrox: Graphics for Professionals"]]></title><description><![CDATA[
<p>I have a friend whose wife has strong sight challenges. He once swapped a much newer and more powerful card with me for my last matrox card, iirc it was a millennium ii. The matrox utilities included with the drivers had one of the best desktop zoom systems ever delivered on windows and this was worth more to them than anything else.</p>
]]></description><pubDate>Mon, 31 Aug 2026 06:46:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49506387</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49506387</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49506387</guid></item><item><title><![CDATA[New comment by raggi in "Tailcat – Like netcat, but over Tailscale’s data plane"]]></title><description><![CDATA[
<p>always have! our darwin and windows clients are closed source, but they wrap the oss implementation in github.com/tailscale/tailscale and you can see and even use all the same hooks yourself.<p>the control plane is closed source, but headscale is an open source alternative that we embrace and encourage people to use if it meets their needs/desires</p>
]]></description><pubDate>Wed, 26 Aug 2026 19:56:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49454925</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49454925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49454925</guid></item><item><title><![CDATA[New comment by raggi in "Xwayland 26.1.0 rc1"]]></title><description><![CDATA[
<p>> But, at the same time. A design that requires everyone to implement their own protocols and everyone to refix the same bugs in their own compositor is inherintly bad.<p>Consider that if every DE wrote their own Xorg implementation the story would be the same.<p>A key question is why everyone is writing their own compositor, this is not about the protocol design, it's about the state of collaboration.<p>I spent some time in the last week fixing lowdpi font rendering in cosmic, enabling me to switch to it. I then discovered that cosmic-comp's VRR had a terrible feedback path causing conformant applications to stutter badly, so I have large patch stack rewiring full screen feedback, tranche compatibility, fence timing and so on (it's fucking buttery now though, which is nice). That then showed up some input processing bugs becoming visible via playing videos in firefox, leading further to me discovering that cross-plane locking was causing frame drops too. Now I've got a giant stack of shit I need to cleanup and upstream - but the end result (along with the freetype render patches I got into Firefox a while back) is a better DE than I've had on Linux in decades. Maybe if upstreaming goes well I'll do MPO for an encore.<p>> In X, if the WM crashes, X is still running, and you can just restart the WM. In Wayland, if you hit a bug it takes everything down with it.<p>See above, the WM did not need to embed the compositor. That's not a protocol requirement, it's and implementer choice. I actually really wish it didn't. Of all the aforementioned patches only two are in Smithay. As I was actually fixing compositing for the workflow I just had to suffer through I would have had to restart pretty much the whole session anyway - though in fact the later stages of my workflow I was only directly killing cosmic-comp and cosmic-session was automatically restarting it all. No really good way to recover the surfaces though, so apps still need to restart.<p>This is not unlike the _another_ bug stream I tracked down this evening, where cosmic-applets would fail to display tray icons on both displays correctly - that turned out to be a bug where one icon provider was unresponsive to part of the protocol, coupled with a synchronous dispatch from the event handle into that blocking return call. Perhaps more interestingly though that manifest during diagnosis something I've seen a lot in other DE chains where tray icons for auto-started electron apps were highly sketchy - well a common electron wrapper gives up entirely on the first whiff of an error with the dbus interface and doesn't retry.<p>Years ago I gave up on Linux DE's because reconfiguring xft, gnome, etc was too much of a time sink. How far I've come, now I'm back :'(</p>
]]></description><pubDate>Thu, 20 Aug 2026 01:59:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=49369591</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49369591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49369591</guid></item><item><title><![CDATA[New comment by raggi in "Xwayland 26.1.0 rc1"]]></title><description><![CDATA[
<p>Nice. XWayland has been a key transitional piece we'll still need for a while.</p>
]]></description><pubDate>Thu, 20 Aug 2026 01:07:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49369259</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49369259</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49369259</guid></item><item><title><![CDATA[New comment by raggi in "Google is making private AI practical with homomorphic encryption"]]></title><description><![CDATA[
<p><a href="https://www.jeremykun.com/2024/05/04/fhe-overview/#the-highest-level-view" rel="nofollow">https://www.jeremykun.com/2024/05/04/fhe-overview/#the-highe...</a><p>> Fourth, there is a bandwidth concern. FHE encryption schemes generally increase the size of the data being encrypted, and the user must send the server a special set of encryption keys to enable the computation, which are relatively large as well. The special keys need only be generated and sent once and can be used for all future computations, but they can easily be gigabytes in size. In one example FHE scheme with lightweight keys, a ciphertext encrypting a single integer is on the order of 25 KB, and the special keys are about 0.5 GB. In others, 16,000 or more integers are packed into a single ciphertext of similar size, but the keys can be 10s of GiBs.</p>
]]></description><pubDate>Fri, 14 Aug 2026 19:47:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=49303716</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49303716</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49303716</guid></item><item><title><![CDATA[New comment by raggi in "Tracking down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>SQLite has an online backup API as well, but it is slower and requires a significant additional page cache cost.<p>The team chose SQLite early on (there are some blog posts about this) and then we vertically scaled against the SQLite architecture. There are subtle ways you come to depend on the proximity/latency when you scale with local storage that mean switching requires a lot of non-obvious work - it’s probably the largest hazard for embracing SQLite in a growing saas - but at the same time you can push the vertical scale pretty far, which has great margins.<p>Had we scaled a different architecture of database there’s little reason to believe it would have been plain sailing as seems to be implied here.</p>
]]></description><pubDate>Thu, 13 Aug 2026 14:35:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=49286616</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49286616</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49286616</guid></item><item><title><![CDATA[New comment by raggi in "Tracking down the 16-year-old WAL-reset SQLite bug"]]></title><description><![CDATA[
<p>We have very good reasons for our checkpointing model, related to our backup + disaster recover strategy, along with resource cost. It might be worth writing about one day, so I'll not give away all the details, but in very short form, we organize a backup strategy that has minimal pause time, avoids doubling the page cache cost of the database, and enables extremely fast byte-copy restores in disaster recovery.</p>
]]></description><pubDate>Wed, 12 Aug 2026 23:09:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49279817</link><dc:creator>raggi</dc:creator><comments>https://news.ycombinator.com/item?id=49279817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49279817</guid></item></channel></rss>