<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: agwa</title><link>https://news.ycombinator.com/user?id=agwa</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 09 Sep 2026 05:12:48 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=agwa" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by agwa in "Go 1.27"]]></title><description><![CDATA[
<p>The database/sql package gained native support[1] for the uuid.UUID type so it will Just Work even without the methods. This probably should have been mentioned in the release notes and database/sql package docs.<p>[1] <a href="https://cs.opensource.google/go/go/+/refs/tags/go1.27.0:src/database/sql/convert.go;l=270-280" rel="nofollow">https://cs.opensource.google/go/go/+/refs/tags/go1.27.0:src/...</a></p>
]]></description><pubDate>Wed, 19 Aug 2026 20:51:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=49367077</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=49367077</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49367077</guid></item><item><title><![CDATA[New comment by agwa in "Kirkland Roundabouts"]]></title><description><![CDATA[
<p>What's particularly crazy about this interchange is that there is going to be a second, elevated peanut roundabout that's rotated 90 degrees, for buses to use: <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaydUTu5zZRzjWuaYrVeLGK-BrP199uWPhR25VwsOy1Uj77soFaQxuoIzMff3MMgo9WPZRkgqzUqM0kwdSF0fOUnSZqV3V_dzBhRDjypOQOL9b-pK2yAEjO2Mxa7qC8bBEInTiw2aDFfrP5Mkur15_1nxtNDmNzzNK46ymuDzJPtDuwJ-NAh1FGV76XzER/s1280/85th-3LevelInterchange-Rendering.png" rel="nofollow">https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg...</a></p>
]]></description><pubDate>Wed, 17 Jun 2026 20:34:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48576471</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48576471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48576471</guid></item><item><title><![CDATA[New comment by agwa in "Stop Using JWTs"]]></title><description><![CDATA[
<p>You would think so, but even an <i>authentication</i> company screwed it up:<p><a href="https://cybercx.co.nz/blog/json-web-token-validation-bypass-in-auth0-authentication-api/" rel="nofollow">https://cybercx.co.nz/blog/json-web-token-validation-bypass-...</a></p>
]]></description><pubDate>Tue, 16 Jun 2026 20:15:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48561386</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48561386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48561386</guid></item><item><title><![CDATA[New comment by agwa in "Stop Using JWTs"]]></title><description><![CDATA[
<p>The cost is the vigilance required to use them safely. It's not just compute/storage costs.</p>
]]></description><pubDate>Tue, 16 Jun 2026 20:12:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48561341</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48561341</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48561341</guid></item><item><title><![CDATA[New comment by agwa in "Stop Using JWTs"]]></title><description><![CDATA[
<p>Fair enough, but those optimizations are basically free. People think stateless tokens are free but they really are not.</p>
]]></description><pubDate>Tue, 16 Jun 2026 19:50:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48560956</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48560956</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48560956</guid></item><item><title><![CDATA[New comment by agwa in "Stop Using JWTs"]]></title><description><![CDATA[
<p>As someone who operates a PostgreSQL database containing 27 billion SSL certificates, each 1-2kb each, with a bunch of secondary indexes that get inserted in random order, I find it pretty incredible that people see the need to optimize their session database. At what scale does the size of the session database actually matter?<p>Those stateless tokens may be "unforgeable", but they are replayable, and if you're not mindful of that you can have security vulnerabilities.</p>
]]></description><pubDate>Tue, 16 Jun 2026 19:40:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48560811</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48560811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48560811</guid></item><item><title><![CDATA[New comment by agwa in "Fooling Go's X.509 Certificate Verification"]]></title><description><![CDATA[
<p>Aw, thanks :-)</p>
]]></description><pubDate>Mon, 08 Jun 2026 23:09:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48453717</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48453717</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48453717</guid></item><item><title><![CDATA[New comment by agwa in "Fooling Go's X.509 Certificate Verification"]]></title><description><![CDATA[
<p>The blog post provides a certificate chain that validates in OpenSSL but not in Go.<p>The reason it doesn't validate in Go is that the Subject field in the CA certificate uses a different string encoding than the Issuer field in the leaf certificate, so the fields are not byte-for-byte equal.<p>Go requires the Issuer and Subject to be byte-for-byte equal. This was permitted by older specs, but RFC 5280 changed the rules to require the use of RFC 4518 (LDAP stringprep) for comparing strings. This turned a simple memcmp into a complicated algorithm that requires implementing Unicode normalization, for virtually zero benefit. That's the last thing you want in your security-critical certificate verifier, so Go quite sensibly chose to follow the older specs in this regard. The CA/Browser Forum's Baseline Requirements also mandate byte-for-byte equality, so Go's behavior won't cause publicly-trusted certificates to be incorrectly rejected.<p>Note that LDAP stringprep is so complicated that OpenSSL doesn't even try to implement it properly and uses an approximation instead. So you would also be able to "fool" OpenSSL into rejecting certificate chains that RFC 5280 says are valid.<p>The blog post says that this is an "ongoing debate" in the Go project but I don't think that's accurate. I'd be shocked if they ever changed this behavior, given that crypto/x509 targets publicly-trusted certificates and the current behavior is so much simpler.</p>
]]></description><pubDate>Mon, 08 Jun 2026 21:19:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48452278</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48452278</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48452278</guid></item><item><title><![CDATA[New comment by agwa in "A CGo-free port of SQLite/SQLite3"]]></title><description><![CDATA[
<p>The following go flags let you build statically-linked cgo binaries, provided that all the C libraries that you're using support static linking and don't call the NSS functions in glibc:<p>-tags netgo,osusergo -linkmode external -extldflags -static<p>I regularly compile (cross-compile, even) static Go binaries that use the cgo sqlite package. But it's certainly a lot simpler if you can avoid cgo.</p>
]]></description><pubDate>Sun, 07 Jun 2026 21:07:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48438556</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48438556</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48438556</guid></item><item><title><![CDATA[New comment by agwa in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>I think that on Unixes without overcommit, people allocate massive amounts of swap so that fork never fails.</p>
]]></description><pubDate>Sun, 07 Jun 2026 00:29:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48430582</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48430582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48430582</guid></item><item><title><![CDATA[New comment by agwa in "IPv6 zones in URLs are a mistake"]]></title><description><![CDATA[
<p>Yeah, I agree. No criticism of Go's behavior is intended; just pointing out that the RFC is technically dead.</p>
]]></description><pubDate>Fri, 05 Jun 2026 00:10:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48406398</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48406398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48406398</guid></item><item><title><![CDATA[New comment by agwa in "IPv6 zones in URLs are a mistake"]]></title><description><![CDATA[
<p>That RFC is obsoleted by <a href="https://datatracker.ietf.org/doc/html/rfc9844" rel="nofollow">https://datatracker.ietf.org/doc/html/rfc9844</a> which removes all guidance around URIs:<p>> This document completely obsoletes [RFC6874], which implementors of web browsers have determined is impracticable to support [LINK-LOCAL-URI], and replaces it with a generic UI requirement. Note that obsoleting [RFC6874] reverts the change that it made to the URI syntax defined by [RFC3986], so [RFC3986] is no longer updated by [RFC6874]. As far as is known, this change will have no significant impact on non-browser deployments of URIs.</p>
]]></description><pubDate>Thu, 04 Jun 2026 22:58:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48405808</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48405808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48405808</guid></item><item><title><![CDATA[New comment by agwa in "A Post-Quantum Future for Let's Encrypt"]]></title><description><![CDATA[
<p>The downside is that to get the size optimization, TLS servers will get moderately more complicated (they'll need to have multiple MTC certificates configured and select the right one depending on the client's state), and TLS clients will get considerably more complicated (they'll need to continuously download landmarks for each CA out-of-band from a trusted source).<p>I expect many non-browser TLS clients won't support the small landmark-relative certificates, because there isn't a clear party to operate the landmark distribution service (Chrome has Google, and Firefox has Mozilla, but who does curl have?). I'm also worried that support will be lacking in open source TLS servers, though that's a more tractable problem. Consequentially, I expect the large standalone certificates to be quite common outside of connections between browsers and CDNs.</p>
]]></description><pubDate>Wed, 03 Jun 2026 20:53:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48389884</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48389884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48389884</guid></item><item><title><![CDATA[New comment by agwa in "A Post-Quantum Future for Let's Encrypt"]]></title><description><![CDATA[
<p>You'll be able to immediately use use a "standalone certificate" while waiting for the batch to be created. The tradeoff is that the standalone certificate will have multiple huge ML-DSA signatures.</p>
]]></description><pubDate>Wed, 03 Jun 2026 20:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48389786</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48389786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48389786</guid></item><item><title><![CDATA[New comment by agwa in "Openrsync: An implementation of rsync, by the OpenBSD team"]]></title><description><![CDATA[
<p>Right, I read all that and I didn't see anything to indicate that AI is being used to write code - just one person's unsubstantiated claim.</p>
]]></description><pubDate>Sat, 30 May 2026 14:25:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48336552</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48336552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48336552</guid></item><item><title><![CDATA[New comment by agwa in "Openrsync: An implementation of rsync, by the OpenBSD team"]]></title><description><![CDATA[
<p>Where do you see that about Postfix? I followed the links and the only thing I see is that AI is being used to <i>find</i> bugs, not write code.</p>
]]></description><pubDate>Sat, 30 May 2026 13:59:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48336274</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48336274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48336274</guid></item><item><title><![CDATA[New comment by agwa in "Apple Silicon costs more than OpenRouter"]]></title><description><![CDATA[
<p>Those changes were passed during the first Trump administration by a Republican congress, though they didn't go into effect until Biden was in office.<p><a href="https://kpmg.com/kpmg-us/content/dam/kpmg/pdf/2023/tcja-changes-research-experimentation-costs-section-174-tmm-0202723.pdf" rel="nofollow">https://kpmg.com/kpmg-us/content/dam/kpmg/pdf/2023/tcja-chan...</a></p>
]]></description><pubDate>Mon, 18 May 2026 02:16:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48174969</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=48174969</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48174969</guid></item><item><title><![CDATA[New comment by agwa in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>If you want your dev environment to be as similar to prod as possible, and you use a proxy in prod, then you should use a proxy in dev also.  I was presenting a solution to someone who doesn't want to do that.</p>
]]></description><pubDate>Wed, 29 Apr 2026 23:19:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47955997</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=47955997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47955997</guid></item><item><title><![CDATA[New comment by agwa in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>Do be aware that CGI, unlike FastCGI, has a pretty big footgun due to the use of environment variables to convey HTTP headers: <a href="https://httpoxy.org/" rel="nofollow">https://httpoxy.org/</a><p>Go's CGI server implementation doesn't set $HTTP_PROXY so you're safe from that, but I still don't love how CGI uses environment variables.</p>
]]></description><pubDate>Wed, 29 Apr 2026 19:31:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47953246</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=47953246</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47953246</guid></item><item><title><![CDATA[New comment by agwa in "FastCGI: 30 years old and still the better protocol for reverse proxies"]]></title><description><![CDATA[
<p>Please see the section about untrusted headers - this is not fixed by HTTP/2.<p>You're right that being able to point your browser right at the app is very convenient. With Go, you can have a command line flag that switches between http.Serve (for development) and fcgi.Serve (for production).</p>
]]></description><pubDate>Wed, 29 Apr 2026 19:11:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47952945</link><dc:creator>agwa</dc:creator><comments>https://news.ycombinator.com/item?id=47952945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47952945</guid></item></channel></rss>