<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: jamespwilliams</title><link>https://news.ycombinator.com/user?id=jamespwilliams</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 23 Oct 2026 15:26:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jamespwilliams" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Certificate Transparency now enforced in Firefox on desktop, starting with v135]]></title><description><![CDATA[
<p>Article URL: <a href="https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/OagRKpVirsA">https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/OagRKpVirsA</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42938392">https://news.ycombinator.com/item?id=42938392</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 04 Feb 2025 20:48:57 +0000</pubDate><link>https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/OagRKpVirsA</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=42938392</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42938392</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Go: Sentinel errors and errors.Is() slow your code down by 3000%"]]></title><description><![CDATA[
<p><a href="https://go-review.googlesource.com/c/go/+/576015" rel="nofollow">https://go-review.googlesource.com/c/go/+/576015</a> this change to optimise errors.Is in the err == nil case was merged recently. It’s not included in the latest Go release, hence the stats here, but should end up in a release pretty soon I’d imagine.</p>
]]></description><pubDate>Sat, 01 Jun 2024 09:31:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=40544208</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=40544208</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40544208</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Go: Sentinel errors and errors.Is() slow your code down by 3000%"]]></title><description><![CDATA[
<p>That err == nil check was added very recently and isn’t included in the latest Go release, which the author used in this article.</p>
]]></description><pubDate>Sat, 01 Jun 2024 09:21:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=40544163</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=40544163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40544163</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Google Public DNS's approach to fight against cache poisoning attacks"]]></title><description><![CDATA[
<p>And conversely, short domains like Google’s own g.co are less secure!</p>
]]></description><pubDate>Sun, 07 Apr 2024 17:28:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=39962257</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39962257</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39962257</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Show HN: Goralim - a rate limiting pkg for Go to handle distributed workloads"]]></title><description><![CDATA[
<p>Fun weekend project but definitely not production-ready (no tests, no error handling, concurrent requests will cause a race condition, etc.). If readers are looking for something production-ready to use, consider <a href="https://github.com/go-redis/redis_rate">https://github.com/go-redis/redis_rate</a> (which implements GCRA/leaky bucket), or <a href="https://github.com/ulule/limiter">https://github.com/ulule/limiter</a> (which uses a much simpler algorithm, but has good middleware).</p>
]]></description><pubDate>Wed, 03 Apr 2024 18:38:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=39921241</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39921241</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39921241</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Xz.git: Fix Linux Landlock Feature Test in Autotools"]]></title><description><![CDATA[
<p>Can you spot the intentional bug in this commit?</p>
]]></description><pubDate>Sat, 30 Mar 2024 22:31:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=39879326</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39879326</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39879326</guid></item><item><title><![CDATA[Xz.git: Fix Linux Landlock Feature Test in Autotools]]></title><description><![CDATA[
<p>Article URL: <a href="https://git.tukaani.org/?p=xz.git;a=commitdiff;h=328c52da8a2bbb81307644efdb58db2c422d9ba7">https://git.tukaani.org/?p=xz.git;a=commitdiff;h=328c52da8a2bbb81307644efdb58db2c422d9ba7</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39879325">https://news.ycombinator.com/item?id=39879325</a></p>
<p>Points: 29</p>
<p># Comments: 6</p>
]]></description><pubDate>Sat, 30 Mar 2024 22:31:24 +0000</pubDate><link>https://git.tukaani.org/?p=xz.git;a=commitdiff;h=328c52da8a2bbb81307644efdb58db2c422d9ba7</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39879325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39879325</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Type-Safe Printf() in TypeScript"]]></title><description><![CDATA[
<p>> Maybe it would be easier to have some kind of framework for compiler plugins that do extra checks. [...] But I haven't seen any language community do something like that. What am I missing?<p>Go has adopted a similar approach to this - they've made it fairly easy to write separate plugins that check stuff like this. The plugins aren't executed as part of the compiler though, they're standalone tools. For example, see golangci-lint, which bundles together a load of plugins of this kind.<p>Some of these plugins are shipped within the go command directly, as part of the "go vet" subcommand. (including a printf format check, which is similar to what's described in this post, i.e. it checks that arguments are of the correct type).</p>
]]></description><pubDate>Sun, 24 Mar 2024 17:44:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=39808810</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39808810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39808810</guid></item><item><title><![CDATA[New comment by jamespwilliams in "How to Lose Control of Your Shell"]]></title><description><![CDATA[
<p>> Now, listen. I wish I could continue here and end with “… and this is why ZSH does it that way!”<p><a href="https://github.com/zsh-users/zsh/blob/47c7bc9b1493c7374f076b5471cfd57ee30f4ba5/Src/exec.c#L1344">https://github.com/zsh-users/zsh/blob/47c7bc9b1493c7374f076b...</a> has a comment about this behaviour, but no justification. I think it's just an optimization to save a little bit of time by not forking, and to avoid having the zsh process hanging around taking resources for no reason.</p>
]]></description><pubDate>Sat, 09 Mar 2024 17:20:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=39653132</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39653132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39653132</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Freenginx: Core Nginx developer announces fork"]]></title><description><![CDATA[
<p>nginx supports graceful reloading and I’m pretty sure it has for a very long time - there are references to it in the changelog from 2005<p><a href="https://nginx.org/en/docs/control.html" rel="nofollow">https://nginx.org/en/docs/control.html</a></p>
]]></description><pubDate>Wed, 14 Feb 2024 23:39:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=39377142</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39377142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39377142</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Anki – Powerful, intelligent flash cards"]]></title><description><![CDATA[
<p>It doesn’t cover all of your requirements but you might find Clozemaster interesting</p>
]]></description><pubDate>Sun, 28 Jan 2024 18:55:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=39168661</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39168661</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39168661</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Anki – Powerful, intelligent flash cards"]]></title><description><![CDATA[
<p>I can recommend this too, although I use DeepL instead of Google Translate, and I also use DeepL Write to identify issues in my grammar</p>
]]></description><pubDate>Sun, 28 Jan 2024 18:53:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=39168650</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=39168650</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39168650</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Non-interactive SSH password authentication"]]></title><description><![CDATA[
<p>Depending on your use case it might be better to just store the key unencrypted. There’s not really much point encrypting it if you’re storing the passphrase on disk alongside the key anyway.</p>
]]></description><pubDate>Mon, 25 Dec 2023 21:35:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=38766351</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38766351</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38766351</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Non-interactive SSH password authentication"]]></title><description><![CDATA[
<p>Something like <a href="https://matrixzj.github.io/documentations/idm_decrypt_ssh_private_key_with_openssl.html" rel="nofollow noreferrer">https://matrixzj.github.io/documentations/idm_decrypt_ssh_pr...</a> (then ssh -i decrypted_key) should work and avoid ssh-agent</p>
]]></description><pubDate>Mon, 25 Dec 2023 18:27:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=38764823</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38764823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38764823</guid></item><item><title><![CDATA[New comment by jamespwilliams in "SSH over HTTPS"]]></title><description><![CDATA[
<p>You could probably use a self-signed cert, then configure socat either to trust that certificate (with the cafile option) or to disable verification (with the verify option)</p>
]]></description><pubDate>Sun, 24 Dec 2023 12:38:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=38753100</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38753100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38753100</guid></item><item><title><![CDATA[Checking If a Certificate Is Revoked: How Hard Can It Be?]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.agwa.name/blog/post/checking_if_a_certificate_is_revoked_how_hard_can_it_be">https://www.agwa.name/blog/post/checking_if_a_certificate_is_revoked_how_hard_can_it_be</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38676229">https://news.ycombinator.com/item?id=38676229</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 17 Dec 2023 20:45:19 +0000</pubDate><link>https://www.agwa.name/blog/post/checking_if_a_certificate_is_revoked_how_hard_can_it_be</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38676229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38676229</guid></item><item><title><![CDATA[Shared wildcard certificate in EV chargers]]></title><description><![CDATA[
<p>Article URL: <a href="https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/Z1koTnE1Rh8">https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/Z1koTnE1Rh8</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38518122">https://news.ycombinator.com/item?id=38518122</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 04 Dec 2023 15:04:24 +0000</pubDate><link>https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/Z1koTnE1Rh8</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38518122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38518122</guid></item><item><title><![CDATA[New comment by jamespwilliams in "Shellcheck finds bugs in your shell scripts"]]></title><description><![CDATA[
<p>Shellcheck is a godsend<p><a href="https://github.com/jamespwilliams/strictbash">https://github.com/jamespwilliams/strictbash</a>, I wrote this little wrapper a while back that you can use as a shebang for scripts. It runs shellcheck for you before the script executes, so it’s not possible to run the script at all if there are failures. It also sets all the bash “strict mode” [0] flags.<p>[0] <a href="http://redsymbol.net/articles/unofficial-bash-strict-mode/" rel="nofollow noreferrer">http://redsymbol.net/articles/unofficial-bash-strict-mode/</a></p>
]]></description><pubDate>Thu, 23 Nov 2023 21:48:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=38397940</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38397940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38397940</guid></item><item><title><![CDATA[Chromium Money Tree Browser]]></title><description><![CDATA[
<p>Article URL: <a href="https://lyra.horse/misc/chromium_vrp_tree.html">https://lyra.horse/misc/chromium_vrp_tree.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38371344">https://news.ycombinator.com/item?id=38371344</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 21 Nov 2023 22:29:04 +0000</pubDate><link>https://lyra.horse/misc/chromium_vrp_tree.html</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38371344</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38371344</guid></item><item><title><![CDATA[The Awful German Language]]></title><description><![CDATA[
<p>Article URL: <a href="https://faculty.georgetown.edu/jod/texts/twain.german.html">https://faculty.georgetown.edu/jod/texts/twain.german.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38054398">https://news.ycombinator.com/item?id=38054398</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 28 Oct 2023 23:20:17 +0000</pubDate><link>https://faculty.georgetown.edu/jod/texts/twain.german.html</link><dc:creator>jamespwilliams</dc:creator><comments>https://news.ycombinator.com/item?id=38054398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38054398</guid></item></channel></rss>