<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: vbernat</title><link>https://news.ycombinator.com/user?id=vbernat</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 08:05:06 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=vbernat" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by vbernat in "Leaving Mozilla"]]></title><description><![CDATA[
<p>But PulseAudio API is still the "standard".</p>
]]></description><pubDate>Sat, 13 Jun 2026 12:04:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48516453</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=48516453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48516453</guid></item><item><title><![CDATA[New comment by vbernat in "Leaving Mozilla"]]></title><description><![CDATA[
<p>Options have a maintenance cost. Pulseaudio is the current Linux audio stack, like plain ALSA was before when it replaced OSS.</p>
]]></description><pubDate>Sat, 13 Jun 2026 08:19:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48514826</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=48514826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48514826</guid></item><item><title><![CDATA[New comment by vbernat in "Porting the ThinkPad X61 to Coreboot"]]></title><description><![CDATA[
<p>Unrelated, the Emacs-based design of the website is quite nice.</p>
]]></description><pubDate>Tue, 09 Jun 2026 12:06:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=48460009</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=48460009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48460009</guid></item><item><title><![CDATA[New comment by vbernat in "Intro to TLA+ for the LLM Era: Prompt Your Way to Victory"]]></title><description><![CDATA[
<p>Isn't this line incorrect?<p><pre><code>    BB == b > 1 /\ b' = b - 2 /\ w' = w + 1           \* Picked 2 black
</code></pre>
It should b > 2, otherwise you'll get in an invalid state.</p>
]]></description><pubDate>Tue, 19 May 2026 18:07:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48196939</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=48196939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48196939</guid></item><item><title><![CDATA[New comment by vbernat in "Project Glasswing: what Mythos showed us"]]></title><description><![CDATA[
<p>I don't understand why Cloudflare got unrestricted access while Daniel Stenberg got Mythos run by a third party on cURL and only got a report. Well, I understand, but I may be wrong.</p>
]]></description><pubDate>Mon, 18 May 2026 18:54:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48183930</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=48183930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48183930</guid></item><item><title><![CDATA[New comment by vbernat in "New Nginx Exploit"]]></title><description><![CDATA[
<p>nginx had this defect for a long time too!</p>
]]></description><pubDate>Thu, 14 May 2026 19:47:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48140266</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=48140266</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48140266</guid></item><item><title><![CDATA[New comment by vbernat in "A desktop made for one"]]></title><description><![CDATA[
<p>I find this fascinating. I also like to customize my desktop experience with my own code, but it's more assembling stuff with some additional code as glue.<p>A word of warning: a reliable lock tool for X11 is difficult. You should look at XSecureLock, which uses a multiprocess approach to avoid leaving the desktop unprotected in case of crash. It also implements a number of countermeasure to ensure the desktop stays locked and the locker stays in the front of the display. It's small too, so easy to audit (but written in C).</p>
]]></description><pubDate>Sun, 03 May 2026 17:31:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47999308</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47999308</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47999308</guid></item><item><title><![CDATA[CSS and vertical rhythm for text, images, and tables]]></title><description><![CDATA[
<p>Article URL: <a href="https://vincent.bernat.ch/en/blog/2026-css-vertical-rhythm">https://vincent.bernat.ch/en/blog/2026-css-vertical-rhythm</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47971627">https://news.ycombinator.com/item?id=47971627</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 01 May 2026 05:46:29 +0000</pubDate><link>https://vincent.bernat.ch/en/blog/2026-css-vertical-rhythm</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47971627</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47971627</guid></item><item><title><![CDATA[New comment by vbernat in "Before GitHub"]]></title><description><![CDATA[
<p>I've switched to GitHub from Trac because of spam. Despite using Akismet and bayesian filters, on a small instance, there were still several spam tickets if you didn't require an account (for the details, <a href="https://vincent.bernat.ch/en/blog/2011-migrating-to-github" rel="nofollow">https://vincent.bernat.ch/en/blog/2011-migrating-to-github</a>). I am a bit amazed that Trac still exists and is maintained today.</p>
]]></description><pubDate>Wed, 29 Apr 2026 04:10:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47944091</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47944091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47944091</guid></item><item><title><![CDATA[New comment by vbernat in "Why Switzerland has 25 Gbit internet and America doesn't"]]></title><description><![CDATA[
<p>Did you check on <a href="https://cartefibre.arcep.fr/" rel="nofollow">https://cartefibre.arcep.fr/</a>? If your address is there, you will know the status of your address and notably the infrastructure operator, which has the obligation to cover your zone before 2030. If your address is not there (and the zone is empty, otherwise, this is up to your municipality to fix the missing address), it means there is no infrastructure operator yet. This is up to your local government to make a deal with an infrastructure operator to cover this zone.<p>As for the numbers, as it is open data, there are some sites like <a href="https://infofibre.fr/" rel="nofollow">https://infofibre.fr/</a> where this is easier to see where we are. You can see that even rural regions have more than 90% of household coverage.<p>As for definitions, there are two cases for availability: immediate availability (infrastructure operator present up and you have at least one commercial operator after 3 months) or delayed availibility (the infrastructure operator has 6 months to make the address available after being asked by a commercial operator).</p>
]]></description><pubDate>Mon, 06 Apr 2026 10:45:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47659195</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47659195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47659195</guid></item><item><title><![CDATA[New comment by vbernat in "Why Switzerland has 25 Gbit internet and America doesn't"]]></title><description><![CDATA[
<p>In reality, this does not happen that way. If a path already exists, you can pay to use the same duct (unless it's full) to install your own fibers. At least, it works this way in France.</p>
]]></description><pubDate>Mon, 06 Apr 2026 07:05:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47657779</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47657779</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47657779</guid></item><item><title><![CDATA[New comment by vbernat in "Why Switzerland has 25 Gbit internet and America doesn't"]]></title><description><![CDATA[
<p>France has 90% FTTH coverage in 2025, with 60% of households over 1 Gbps. One of the incumbents, Free (my employer), deployed P2P fibers in very dense areas but is switching to P2MP for economic reasons (and because this was not a competitive advantage). It's unclear to me if Switzerland plans to achieve this coverage with P2P. What looks great in Switzerland is not that each household has four dedicated fibers to the CO, but that Swisscom has responsibility for these fibers. In France, we have competition between operators for both services and infrastructure. In very dense areas, each building can have its own infrastructure operator (with an obligation to share); in less dense areas, this is by district (with an obligation to share); and in rural areas, this is a subsidized network (with an obligation to share). The downside is that there are "mutualisation points" where each ISP can go to plug or unplug subscribers, and they become a mess (<a href="https://img.lemde.fr/2020/06/04/300/0/900/600/1440/960/60/0/2005399_BSRUJTqyG5Uu__r6rHTrzVSF.jpg" rel="nofollow">https://img.lemde.fr/2020/06/04/300/0/900/600/1440/960/60/0/...</a>).<p>BTW, I am also disturbed by AI-generated images. The ones with the three workers laying cables look highly unrealistic and made me pause for a couple of minutes, wondering if they lay cables that way in Germany. The ones about how households are connected to CO look like you get multiple 720-fiber cables to the same household.</p>
]]></description><pubDate>Mon, 06 Apr 2026 05:47:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47657386</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47657386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47657386</guid></item><item><title><![CDATA[New comment by vbernat in "Stop picking my Go version for me"]]></title><description><![CDATA[
<p>What the article does not say is that if you don't have a recent enough version, by default, Go automatically downloads a more recent toolchain. So, for most users, this is transparent.<p>However, this behavior can be disabled (for example, when building for a Linux distribution).</p>
]]></description><pubDate>Sun, 29 Mar 2026 05:19:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47560587</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47560587</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47560587</guid></item><item><title><![CDATA[New comment by vbernat in "Calculate "1/(40rods/ hogshead) → L/100km" from your Zsh prompt"]]></title><description><![CDATA[
<p>I'm the author. This demonstrates how Zsh's flexibility allows you to trigger a calculator, such as Numbat or Qalculate, using the '=' alias, without running into quoting issues.</p>
]]></description><pubDate>Sat, 28 Mar 2026 13:53:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47554626</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47554626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47554626</guid></item><item><title><![CDATA[Calculate "1/(40rods/ hogshead) → L/100km" from your Zsh prompt]]></title><description><![CDATA[
<p>Article URL: <a href="https://vincent.bernat.ch/en/blog/2026-zsh-calculator">https://vincent.bernat.ch/en/blog/2026-zsh-calculator</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47554586">https://news.ycombinator.com/item?id=47554586</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 28 Mar 2026 13:49:42 +0000</pubDate><link>https://vincent.bernat.ch/en/blog/2026-zsh-calculator</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47554586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47554586</guid></item><item><title><![CDATA[New comment by vbernat in "OpenCode – Open source AI coding agent"]]></title><description><![CDATA[
<p>From the code, this does not seem to be true anymore. It falls back to the current model if no small model is identified with the current provider. <a href="https://github.com/anomalyco/opencode/blob/9b805e1cc4ba4a98419ca13d9d487c4550af8ddf/packages/opencode/src/provider/provider.ts#L1385" rel="nofollow">https://github.com/anomalyco/opencode/blob/9b805e1cc4ba4a984...</a></p>
]]></description><pubDate>Sat, 21 Mar 2026 08:53:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47465285</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47465285</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47465285</guid></item><item><title><![CDATA[New comment by vbernat in "Show HN: µJS, a 5KB alternative to Htmx and Turbo with zero dependencies"]]></title><description><![CDATA[
<p>The idea is that all the rendering is done server-side. So, the user always get a full page.</p>
]]></description><pubDate>Sun, 08 Mar 2026 04:15:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47294339</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=47294339</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47294339</guid></item><item><title><![CDATA[New comment by vbernat in "Ask HN: Share your personal website"]]></title><description><![CDATA[
<p><a href="https://vincent.bernat.ch" rel="nofollow">https://vincent.bernat.ch</a></p>
]]></description><pubDate>Wed, 14 Jan 2026 19:56:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46622019</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=46622019</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46622019</guid></item><item><title><![CDATA[New comment by vbernat in "We can't have nice things because of AI scrapers"]]></title><description><![CDATA[
<p>No, this is done by paying app developers to bundle some random SDK. Search for Bright Data.</p>
]]></description><pubDate>Wed, 14 Jan 2026 04:29:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46612346</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=46612346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46612346</guid></item><item><title><![CDATA[New comment by vbernat in "My Home Fibre Network Disintegrated"]]></title><description><![CDATA[
<p>From the photos, it does not look like the fibers themselves are damaged. You should check the error rate on both sides. If it is 0, the not optimal values of your speedtest are not related to your fiber. If it is not 0, the more likely issues are in order: connectors to clean (buy a cleaning pen), bend radius somewhere, faulty optics, then the fiber. You can also pay a professional to run an OTDR on your fiber. It would show where the fiber is degraded.</p>
]]></description><pubDate>Sun, 11 Jan 2026 07:35:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46573459</link><dc:creator>vbernat</dc:creator><comments>https://news.ycombinator.com/item?id=46573459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46573459</guid></item></channel></rss>