<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: bilkow</title><link>https://news.ycombinator.com/user?id=bilkow</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 23 Sep 2026 09:47:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=bilkow" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by bilkow in "The case against JPEG XL"]]></title><description><![CDATA[
<p>Thanks for the detailed explanation and example!</p>
]]></description><pubDate>Wed, 16 Sep 2026 00:03:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49720514</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49720514</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49720514</guid></item><item><title><![CDATA[New comment by bilkow in "The case against JPEG XL"]]></title><description><![CDATA[
<p>> Well, the default in avifenc can always be changed.<p>Sure, that was kind of my point, but I think it's important to point out it's the default. I had read somewhere else in the comments that they just "happened" to use 2 passes (that I now realized was also written by you), that I interpreted as them maybe making a bad decision in the comparison page, but I think it's very reasonable to use the default. I also usually prefer to use the default unless I have a good reason not to do so.<p>And I think that `--layered` is fine as a name, and I had realized that as the docs were right below the docs for `--progressive`, which do mention it encodes a "layered image", although it could use an example on how to use it effectively.<p>> I'm surprised HN likes progressive loading to be more granular, and use that to push back.<p>Not necessarily? Using more passes would probably help in specific the metric in the comment I was responding to, by making AVIF possibly look better on a larger fraction of the decoding time. I mostly interpreted your comment as saying that it would have been better if they used more passes, and that's on me.<p>The reason I was comparing the breakpoints in the decode time was because I was responding to an allegation that "even there, AVIF looks better for 90% of the decode time", and I decided to point out that's not not the case and chose some pretty clear breakpoints that are very hard to argue about. Very subjectively the actual breakpoints could be a lot earlier, for the Poke the AVIF only looks better (in the sense that you can figure out what's there better) in a 6% range (from 2 to 8%) or maybe 9% (from 2% to 11%) of the decode time. There are many (relatively big) seeds that are just not there on the AVIF side, but you can distinguish on the JXL side, even if they're blurry. Percentages used in reference to the JXL side.<p>> I'm wondering if there are generational differences at play? Maybe it's the difference of being used to the blurhash vs. old-school JPEG loading experience.<p>Hmmm I don't know, maybe. TBF with today's usual internet speeds progressive loading isn't as important as it was as more steps make less sense if you have a good connection.<p>> Well, focusing on the "Poke bowl" example: with AVIF you can clearly tell apart each ingredient at 8kB. You can derive enough semantic understanding just from this base layer. Having decent edge preservation helps significantly here.<p>Sure, I see what you mean, you can distinguish more image element in the AVIF example, that's true. I don't like the lack of consistency and some of the artifacts to the point where I'd prefer not using progressive encoding, so that's not what I'd call "usable", but that seems like a matter of taste. It surely does look closer to a "final image" than the JXL at that point.<p>As a note, I think what I'd prefer would be 2 passes, with the 1st pass being around how JXL looks at around 11% / 39 kB. You can get a rough idea of what's the image about and the elements on it, with roughly the right colors, but it's still clearly loading, so there's no confusion, and without many "artifacts" like the progressive AVIF in the example (no idea if AVIF is able to make progressive encoding in a way that's more "blurry"). The caveat is that more steps are better when it takes too long (more than a few seconds) so the user knows it's not stuck.</p>
]]></description><pubDate>Tue, 15 Sep 2026 01:01:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49706405</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49706405</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49706405</guid></item><item><title><![CDATA[New comment by bilkow in "The case against JPEG XL"]]></title><description><![CDATA[
<p>> their demo only uses two passes for progressive AVIF -- it's just their choice<p>Also worth mentioning: AFAIK "their choice" here is just the default, i.e. what `avifenc --progressive` outputs, so maybe if the default is suboptimal, it could be improved?<p>> Even still, the demo proves that AVIF can deliver a usable image with up to 3x as fewer bytes as JXL!<p>Usable for what? As a clearly loading image / placeholder, I personally like the JXL version better (as already indicated in my previous comment). As a final image I think both of them are unusable, and if that's the intention I think it would be better to encode both aiming for very low quality, maybe also reducing the resolution, without progressive loading, then compare. My understanding is that AVIF is usually better at very low bitrates, so it would probably be better, but I don't think this example "proves" that.</p>
]]></description><pubDate>Mon, 14 Sep 2026 19:00:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=49702167</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49702167</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49702167</guid></item><item><title><![CDATA[New comment by bilkow in "The case against JPEG XL"]]></title><description><![CDATA[
<p>> For progressive, JXL shows a blurry mess for the majority of its decode, while AVIF shows a crisp image that clearly shows what is in the image. Go ahead and try the demo yourself! AVIF also supports more than one layer, but I used Team JXL's image on purpose to show that even there, AVIF looks better for 90% of the decode time.<p>I'm not sure I agree? IMO after about 30% most images look better on JXL than on AVIF, the exceptions being the pigeon, which looks better on JXL after 43% (still less than half) and the sunflower, which looks better on 66% (but you can clearly see what's on the image a lot earlier). Also, blurry convey better the idea of loading and the AVIF version may have some weird artifacts / look weirder (although that's subjective), for example the Quechua woman's eyes are very distorted on the progressive AVIF and, on the Poke bowl, some of the seeds on top of one of the top radish pieces are kind of missing / look like a shadow (while other seeds of the same size appear). In contrast the JXL version is usually blurrier and less saturated at the beginning but is more "uniform/reliable" (distorts all of the "objects" more or less the same), and later it looks finished but actually isn't (which may be a problem on its own).</p>
]]></description><pubDate>Mon, 14 Sep 2026 17:54:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49701057</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49701057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49701057</guid></item><item><title><![CDATA[New comment by bilkow in "Rust is tier-1 language at Microsoft"]]></title><description><![CDATA[
<p>I think what Linus pushed back on was specifically "social media brigading" as a solution to internal issues: <a href="https://lkml.org/lkml/2025/2/6/1292" rel="nofollow">https://lkml.org/lkml/2025/2/6/1292</a></p>
]]></description><pubDate>Thu, 10 Sep 2026 19:19:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49648960</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49648960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49648960</guid></item><item><title><![CDATA[New comment by bilkow in ".name Termination"]]></title><description><![CDATA[
<p>Let's pretend it's OK for them to just drop your domain, ignoring the stability and security issues that arise from that (and how ICANN should prevent that, in theory).<p>How about the fact that you paid for a service for 10 years and they decided to stop providing it midway? Will you at least get a refund? If not, that's surely illegal right?</p>
]]></description><pubDate>Thu, 03 Sep 2026 23:55:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49558736</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49558736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49558736</guid></item><item><title><![CDATA[New comment by bilkow in "Using jq to format JSON on the clipboard"]]></title><description><![CDATA[
<p>Loved it! I made this version for `fish` and `wl-clipboard`:<p><pre><code>    function clipboard-format-json
        # Inspired by https://chris48s.github.io/blogmarks/posts/2021/jsontidy/
        if set -l formatted "$(wl-paste | jq '.')"
            wl-copy $formatted
        end
    end
</code></pre>
By saving it to .config/fish/functions/clipboard-format-json.fish, it should immediately work</p>
]]></description><pubDate>Wed, 02 Sep 2026 17:11:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49539314</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49539314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49539314</guid></item><item><title><![CDATA[New comment by bilkow in "Hang on to Your Firefox"]]></title><description><![CDATA[
<p>I also discovered the joy of shift-selecting a big range of tabs and pressing ^W only once. It also feels pretty good, but in a slightly different way...</p>
]]></description><pubDate>Wed, 02 Sep 2026 04:18:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49531673</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49531673</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49531673</guid></item><item><title><![CDATA[New comment by bilkow in "Play Store blocks AuroraStore, hurting GrapheneOS users"]]></title><description><![CDATA[
<p>> never displays or updates apps correctly. Half the time an app showed up on the website that didn't show up on the phone app. The other half of the time even when I did get something installed, it would just never understand that an update existed and needed to download and update a given app<p>You probably "just" need to pull down while on the "Latest" or "Updates" tab, to update your repository (it will show a small banner at the top while it's doing that). It's incremental, so it may take a while if it has been some time since you last did it (and auto-updates are disabled).<p>The way F-Droid works is that it downloads the whole index and then the catalog, version checks, etc, all runs locally, quite similarly to some package repositories actually.<p>I am not claiming its intuitive, but I think that part works fine once you understand how it works.</p>
]]></description><pubDate>Tue, 01 Sep 2026 19:56:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49527250</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49527250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49527250</guid></item><item><title><![CDATA[New comment by bilkow in "How much of HN is AI?"]]></title><description><![CDATA[
<p>About the post you linked, see [1] and [2], which makes me question both whether that is an actual vulnerability (Signal, the messenger recommended by the author, also didn't have that check, and it's addition is absent from release notes and CVEs) and whether the post was made in good faith (the check was added to libsignal on the same day that the author disclosed the vulnerability to Matrix, which can be a coincidence, but doesn't seem likely given that the code has been there for years).<p>Can't speak about the other issues, I haven't had those but I barely use it. Based on comments, it's clear they exist or have existed for quite some time.<p>[1] <a href="https://blog.erinshepherd.net/2026/02/non-contributory-keys-in-the-matrix/" rel="nofollow">https://blog.erinshepherd.net/2026/02/non-contributory-keys-...</a><p>[2] <a href="https://matrix.org/blog/2026/02/analysis-of-reported-issues-in-vodozemac/" rel="nofollow">https://matrix.org/blog/2026/02/analysis-of-reported-issues-...</a></p>
]]></description><pubDate>Tue, 25 Aug 2026 16:59:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=49437164</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49437164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49437164</guid></item><item><title><![CDATA[New comment by bilkow in "Malicious Rust crate Arrayref runs a build-time payload"]]></title><description><![CDATA[
<p>My personal opinion on each of those:<p>JSON: there are a ton of different ways to do serialization and deserialization, each with their own tradeoffs, and serde (the most popular) is far from universally agreed upon. The same goes for JSON specifically, there are many different serialization formats with different tradeoffs.<p>regex: Owned by the rust-lang organization already. You get the benefits of trust (if you trust std, you trust the rust-lang organization anyway), but without the issues of being in std (backwards compatibility and bloat). The only problem I see with that is that BurntSushi is still the owner of the package and as such can still publish new versions on his own (AFAIK crates.io currently requires at least one user owner, but that's something that can be solved by improving crates.io permissions).<p>walkdir: It has been been postponed, due to the complexity of WalkDir, but may be added in the future. I agree this should be in std. <a href="https://web.archive.org/web/20260820171531/https://github.com/rust-lang/libs-team/issues/677#issuecomment-3428945051" rel="nofollow">https://web.archive.org/web/20260820171531/https://github.co...</a><p>RNG: rand is still evolving, with breaking changes half a year ago. Preferred generators tend to change over time, so I don't see those getting into std (remember, it has to be maintained forever!). I could see the interface (traits) getting into std, but I see no advantage to it: it's maintained by rust-random, but even if you wanted it to be maintained by the same authors as the Rust language (let's say you trust them more than rust-random), you could just move it back to rust-lang-nursery or rust-lang.<p>CLI arg parsing: not simple at all! The community's preferred solution has 70kLOC (with support for so many features), but there's also argh, pico-args, and others, each with their own tradeoffs.<p>> That's why projects end up with 100s of crates, sometimes 1000s.<p>Also because libraries are split up in many crates. For example, regex is split in 3 crates: regex, regex-syntax and regex-automata, and depends on other crates from the same author, such as aho-corasick.<p>All that said, there are many crates, such as algorithms like aho-corasick, that I think could me moved into the rust-lang org, like regex was.<p>See also: <a href="https://home.expurple.me/posts/a-big-standard-library-is-overkill/" rel="nofollow">https://home.expurple.me/posts/a-big-standard-library-is-ove...</a></p>
]]></description><pubDate>Thu, 20 Aug 2026 17:31:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49377634</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49377634</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49377634</guid></item><item><title><![CDATA[New comment by bilkow in "RustDesk now supports true unattended remote access on Wayland"]]></title><description><![CDATA[
<p>> A modern consumer GPU can crack "four random English words" in a day.<p>Let's run the math:<p>EFF's long wordlist[0] (the one used by Bitwarden's passphrase generator) has 7776 words, which is about 13 bits of entropy per word (log2(7776) = 12.92). A 4-word passphrase then has 51.7 bits of entropy, meaning there are 2^51.7 possible options for the passphrase, which is 3.66E15 possible options.<p>For reference, a password with all completely random characters and symbols, for each character you have 70 possibilities, or about 6 bits of entropy. An 8-character completely random password (no words or the usual patterns) then has about 49 bits of entropy, which is less than a 4 word passphrase.<p>About the time it takes to crack it, assuming you can test an average of 1 password per μs (you probably can't, as passwords are usually stored using key derivation functions[1][2] with work factors tweaked for current hardware) it would take ~116 years to crack it. I usually see 5-passphrase recommended nowadays, which would multiply the required effort by 7776.<p>Sure, a 16-character random password has a lot more entropy, but it's also a lot harder to interact with (reading, comparing, typing) if you end up needing to, and it's still easier to crack than an 8-word passphrase.<p>[0] <a href="https://www.eff.org/dice" rel="nofollow">https://www.eff.org/dice</a>
[1] <a href="https://en.wikipedia.org/wiki/Key_derivation_function" rel="nofollow">https://en.wikipedia.org/wiki/Key_derivation_function</a>
[2] <a href="https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html" rel="nofollow">https://cheatsheetseries.owasp.org/cheatsheets/Password_Stor...</a></p>
]]></description><pubDate>Fri, 14 Aug 2026 19:02:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49303181</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49303181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49303181</guid></item><item><title><![CDATA[New comment by bilkow in "On non-rooted Android 17, ADB uninstall of system apps fails"]]></title><description><![CDATA[
<p>It's because of the Play Integrity API, which AFAIK runs downloaded binaries in the DroidGuard environment: <a href="https://en.wikipedia.org/wiki/Play_Integrity_API" rel="nofollow">https://en.wikipedia.org/wiki/Play_Integrity_API</a><p>The strongest levels require hardware key attestation (which, in my understanding, uses a certificate that's baked in secure hardware and signed by Google):
- <a href="https://grapheneos.org/articles/attestation-compatibility-guide" rel="nofollow">https://grapheneos.org/articles/attestation-compatibility-gu...</a>
- <a href="https://developer.android.com/privacy-and-security/security-key-attestation" rel="nofollow">https://developer.android.com/privacy-and-security/security-...</a></p>
]]></description><pubDate>Thu, 06 Aug 2026 18:40:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49200596</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49200596</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49200596</guid></item><item><title><![CDATA[New comment by bilkow in "Born Against, or why hobby programming communities are against LLM usage"]]></title><description><![CDATA[
<p>Specifically about "humans": my understanding is that Clean-room design is not a requirement and the "Case law" section on your Wikipedia link explains that and has examples.<p>How and whether the same principles can be applied to LLMs, I have no idea. I imagine it would involve discussions about creativity, for example.<p>Not a lawyer.</p>
]]></description><pubDate>Thu, 06 Aug 2026 02:23:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49191684</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49191684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49191684</guid></item><item><title><![CDATA[New comment by bilkow in "Position: LLMs Can't Jump"]]></title><description><![CDATA[
<p>See also this article, which discusses transcripts from lectures given by Einstein in Kyoto and Chicago in 1922 and 1921 (respectively), and letters from 1899, with earlier accounts of the Michelson-Morley experiment influence:<p><a href="https://arxiv.org/abs/0908.1545" rel="nofollow">https://arxiv.org/abs/0908.1545</a></p>
]]></description><pubDate>Wed, 05 Aug 2026 15:55:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49184637</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49184637</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49184637</guid></item><item><title><![CDATA[New comment by bilkow in "Developers are attached to tools because tools encode trust"]]></title><description><![CDATA[
<p>Your quote is missing the end, required for it to make sense (irrelevant parts omitted):<p>> When Windows ME and Windows Vista came out [...]. Microsoft was forced to respond by making [...] Windows XP and [...] Windows 7 respectively.<p>It's basically from ME and Vista to XP and 7, respectively. AFAIK respectively in this context means that for ME, they were forced to respond with XP, and for Vista, they were forced to respond with 7.</p>
]]></description><pubDate>Sun, 02 Aug 2026 23:01:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49149297</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49149297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49149297</guid></item><item><title><![CDATA[New comment by bilkow in "Google will expand age checks on Android worldwide till the end of the year"]]></title><description><![CDATA[
<p>> It does all this while leaving everyone else undisturbed.<p>> it's the least intrusive, least effort solution to the problem that will actually work.<p>Currently, I have no account tied to my phone or my computer(s), except for an older iPad. Also, I have never sent my ID to any FAANG company. This would force everyone (including adults) to tie an account to their devices and a government ID to their accounts. Bans (which Google does not justify, a lot of the time) would gate users from using apps and possibly sites.<p>In other words, this helps solidify Google's control over Android users. The problem would be the same for Apple, Microsoft, etc, and in many cases it already is the same.<p>I get that most people probably have a cloud account for their own devices, and I think that's OK. But currently there is the option not to use their services, and I think that's the fundamental issue, they're effectively removing that option by making apps block users who don't have an account, in the guise of age verification (together with Play Integrity, etc). That option is fundamentally linked to the right to privacy, as once you're required to use certain services to be basically integrated into society (making payments, communicating with others, watching turtle documentaries according to the post) you're not effectively able to exert that right anymore.<p>There are also other related rights and freedoms here, like the rights to repair, tinker and innovate, that are affected by this action, which helps cement an ecosystem where every app requires Play Services, and as such, is hard to be ported or emulated into other ecosystems, and other actions from Google and Apple.</p>
]]></description><pubDate>Thu, 30 Jul 2026 20:30:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49115341</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=49115341</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49115341</guid></item><item><title><![CDATA[New comment by bilkow in "98% isn't much"]]></title><description><![CDATA[
<p>Ah you're right! You were actually very clear by saying Android 9 or below, but I misinterpreted while multitasking here, sorry for that.<p>> If you're arguing that it is Google who is dropping support/making people have insecure browsers, we're in agreement. As with Safari (or at least those at Apple who control/fund Safari), the Android team is very anti-Web/Chrome. Lots has been written about all of that at <a href="https://infrequently.org" rel="nofollow">https://infrequently.org</a>.<p>Oh, haven't seen that blog before. Incredible resource, thanks! And yeah, Google, Apple, and also a situation with vendors (e.g. Qualcomm, due to drivers) that makes it so miserable. Not only due to the way they favor their stores, but also indirectly due to how hard they make to have updated or custom OSes for older devices. I believe it's a consequence of the amount of control they exert, Apple by plainly not allowing bootloader unlocking and Google by gatekeeping essential APIs (especially Play Integrity) on "secure" (read: controlled by Google) OSes.<p>It's a bit insane that we live in two completely different realities on desktop vs mobile, where it's easy to install a current OS and browser in 15+ year old computers but can't even have an up-to-date browser on an 8 year old device, much less and up-to-date OS.</p>
]]></description><pubDate>Tue, 07 Jul 2026 19:58:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48822913</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=48822913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48822913</guid></item><item><title><![CDATA[New comment by bilkow in "98% Isn't Much"]]></title><description><![CDATA[
<p>There seem to be updated stats here: <a href="https://composables.com/android-distribution-chart" rel="nofollow">https://composables.com/android-distribution-chart</a><p>Which seems to indicate about 4.8% are below Android 9.<p>But also, Firefox for Android still supports Android 8, of which there are 1.7% below.<p>There's a discussion to be made here about who is dropping support for these users, is it Google (and especially Apple, who doesn't allow other browsers on iOS) or the site owner? Especially given how insecure it is to use outdated browsers.</p>
]]></description><pubDate>Tue, 07 Jul 2026 15:27:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48819165</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=48819165</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48819165</guid></item><item><title><![CDATA[New comment by bilkow in "Nintendo has raised its employees base salary by 10%"]]></title><description><![CDATA[
<p>Note that the snack price was increased "from 12 yen ($0.08) to 15 yen ($0.10)". That's a 25% increase.</p>
]]></description><pubDate>Wed, 01 Jul 2026 14:41:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48747644</link><dc:creator>bilkow</dc:creator><comments>https://news.ycombinator.com/item?id=48747644</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48747644</guid></item></channel></rss>