<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: francislavoie</title><link>https://news.ycombinator.com/user?id=francislavoie</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 05 Sep 2026 06:45:38 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=francislavoie" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by francislavoie in "The Rust React Compiler is now native in Vite"]]></title><description><![CDATA[
<p><a href="https://react.dev/learn/react-compiler/introduction" rel="nofollow">https://react.dev/learn/react-compiler/introduction</a></p>
]]></description><pubDate>Sat, 05 Sep 2026 01:00:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49572018</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49572018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49572018</guid></item><item><title><![CDATA[New comment by francislavoie in "Rust Glancer: Rust LSP using 100x less RAM"]]></title><description><![CDATA[
<p>Language Server Protocol, it's what your IDE (like VSCode or other) uses to do linting, syntax checking, and "go to reference" stuff.</p>
]]></description><pubDate>Sat, 22 Aug 2026 00:24:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49395365</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49395365</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49395365</guid></item><item><title><![CDATA[New comment by francislavoie in "DeepSeek Harness developer preview"]]></title><description><![CDATA[
<p>Can be a TUI, can be a GUI.</p>
]]></description><pubDate>Thu, 13 Aug 2026 14:10:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49286250</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49286250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49286250</guid></item><item><title><![CDATA[New comment by francislavoie in "DeepSeek Harness developer preview"]]></title><description><![CDATA[
<p>A "harness" is basically what you call Claude Code and such, i.e. a TUI to run the agent.</p>
]]></description><pubDate>Thu, 13 Aug 2026 14:00:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49286117</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49286117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49286117</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>The component itself is the semantics, adding naming over CSS classes adds no value whatsoever, only adds cognitive load and requirement of context switching to understand "what does this named class actually do?"</p>
]]></description><pubDate>Sun, 02 Aug 2026 11:05:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49143287</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49143287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49143287</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>I disagree. I don't want to jump between two files constantly. With Tailwind I can stick to one file and never need to think about naming things.</p>
]]></description><pubDate>Sun, 02 Aug 2026 10:17:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142993</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49142993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142993</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>Your complaint is about bad developers, not about Tailwind. Using Tailwind correctly means making heavy use of components to avoid duplication. Using Tailwind also removes the burden of having to do one of the hardest things in software: naming things, which is what semantic classes requires you to do.</p>
]]></description><pubDate>Sun, 02 Aug 2026 10:13:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142962</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49142962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142962</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>I would reach for class-variance-authority (aka cva) instead for stuff like a size prop, it declaratively solves that.</p>
]]></description><pubDate>Sun, 02 Aug 2026 10:07:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142926</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49142926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142926</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>Absolutely not. Semantic classes are the wrong way to go. Your components (and their props API) are what encode the semantics. With Tailwind you never need to try to come up with a name for anything relating to style, you just use utility classes. It reduces cognitive load significantly.</p>
]]></description><pubDate>Sun, 02 Aug 2026 10:05:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142910</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49142910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142910</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>Using @apply defeats the entire purpose of Tailwind. The point of it is to localize styling alongside the markup. If you're using @apply then you're constantly context switching from your markup to your CSS files while working.<p>There's plenty of ways to manage the bevy of classes you need. First step is making use of components to deduplicate stuff. Then in those components, use a library like class-variance-authority aka "cva()" which allows you to set up complex named presets for your components (like size="small" or color="primary" and things like that).</p>
]]></description><pubDate>Sun, 02 Aug 2026 09:59:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142859</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49142859</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142859</guid></item><item><title><![CDATA[New comment by francislavoie in "I don't recommend Tailwind CSS"]]></title><description><![CDATA[
<p>Saying "unless you use @apply" invalidates this article for me. Everyone knows that @apply only exists as an escape hatch, it is not supposed to be used, except for when it's necessary like for compatibility with libraries that declare their own classes that you need to override.<p>The most commonly repeated point in the article is "escape hatches bad" and I think that's completely absurd. Of course you want escape hatches, otherwise when you do hit an edgecase you get stuck with no solution. That's exactly what would force you to throw away that approach and pivot. Tailwind doesn't have that problem because it was designed to include escape hatches.<p>Users deciding to use those escape hatches instead of sticking to a design, isn't Tailwind's fault.</p>
]]></description><pubDate>Sun, 02 Aug 2026 08:43:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142418</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49142418</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142418</guid></item><item><title><![CDATA[New comment by francislavoie in "Git worktrees are not an isolation boundary for coding agents"]]></title><description><![CDATA[
<p>I set up a custom hook in Claude which runs my own worktree creation/cleanup script, which takes care of copying my node_modules into the worktree, my .env (plus doing some edits to the .env to isolate it so it can run in parallel), and stuff like that. Each worktree gets its own docker compose project name so they can run docker stacks in parallel. Works pretty seamlessly.</p>
]]></description><pubDate>Thu, 30 Jul 2026 15:37:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49111504</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=49111504</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49111504</guid></item><item><title><![CDATA[New comment by francislavoie in "Chatto is now open source"]]></title><description><![CDATA[
<p>Yeah a lot of them like Mattermost become surprisingly limited unless you pay. It's very annoying.</p>
]]></description><pubDate>Wed, 08 Jul 2026 16:23:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48833915</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=48833915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48833915</guid></item><item><title><![CDATA[New comment by francislavoie in "Lore – Open source version control system designed for scalability"]]></title><description><![CDATA[
<p>Obviously, and that's why tools like perforce and lore exist. What's your point?</p>
]]></description><pubDate>Wed, 17 Jun 2026 18:58:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48575082</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=48575082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48575082</guid></item><item><title><![CDATA[New comment by francislavoie in "VoidZero Is Joining Cloudflare"]]></title><description><![CDATA[
<p>But they give a usable interface and toolkit to the runtime (V8 etc). 99% of users use one of those three.</p>
]]></description><pubDate>Fri, 05 Jun 2026 15:23:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48413796</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=48413796</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48413796</guid></item><item><title><![CDATA[New comment by francislavoie in "VoidZero Is Joining Cloudflare"]]></title><description><![CDATA[
<p>Vite is not a package manager and is not a JS runtime. That's what Node/Bun/Deno do. Vite is the remaining glue for any web project's build and testing needs.</p>
]]></description><pubDate>Thu, 04 Jun 2026 14:45:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48399477</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=48399477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48399477</guid></item><item><title><![CDATA[New comment by francislavoie in "Show HN: PHP-fts – Full-text search engine in pure PHP, no extensions"]]></title><description><![CDATA[
<p>We've been using <a href="https://github.com/loupe-php/loupe" rel="nofollow">https://github.com/loupe-php/loupe</a>, works quite well for small-to-medium single-instance apps.</p>
]]></description><pubDate>Wed, 06 May 2026 23:57:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48043561</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=48043561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48043561</guid></item><item><title><![CDATA[New comment by francislavoie in "Why I forked httpx"]]></title><description><![CDATA[
<p>What, Go's net/http is fantastic. I don't understand that take. Many servers are built on it because it's so fully featured out of the box.</p>
]]></description><pubDate>Wed, 25 Mar 2026 10:01:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47515332</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=47515332</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47515332</guid></item><item><title><![CDATA[New comment by francislavoie in "RFC 9849. TLS Encrypted Client Hello"]]></title><description><![CDATA[
<p>(Disclosure: I'm a Caddy maintainer), Caddy already supports ECH, leaning on the DNS plugins to automate setting the DNS HTTPS records to wire it up. Here's a lot of technical detail about it <a href="https://caddyserver.com/docs/automatic-https#encrypted-clienthello-ech" rel="nofollow">https://caddyserver.com/docs/automatic-https#encrypted-clien...</a></p>
]]></description><pubDate>Wed, 04 Mar 2026 10:15:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47245452</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=47245452</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47245452</guid></item><item><title><![CDATA[New comment by francislavoie in "Physics Girl: Super-Kamiokande – Imaging the sun by detecting neutrinos [video]"]]></title><description><![CDATA[
<p>Is it a "Ship of Theseus" photon? Hehe</p>
]]></description><pubDate>Wed, 04 Mar 2026 04:38:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47243116</link><dc:creator>francislavoie</dc:creator><comments>https://news.ycombinator.com/item?id=47243116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47243116</guid></item></channel></rss>