<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: ervine</title><link>https://news.ycombinator.com/user?id=ervine</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 09 May 2026 16:38:33 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ervine" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ervine in "The React2Shell Story"]]></title><description><![CDATA[
<p>So your argument is that instead of explicit class component methods, hooks are implicit based on understanding the react rendering model?<p>I guess so - but react could also change (and I think did at some point) how their class methods work, how often they're triggered, and when.<p>I don't understand the stateless comment - hooks are as stateful as you make them, using useState or useContext or any of the other ways of maintaining data between renders.</p>
]]></description><pubDate>Sat, 09 May 2026 16:15:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48076099</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=48076099</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48076099</guid></item><item><title><![CDATA[New comment by ervine in "The React2Shell Story"]]></title><description><![CDATA[
<p>I think we're just gonna agree to disagree. Cheers.</p>
]]></description><pubDate>Sat, 09 May 2026 15:36:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48075807</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=48075807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48075807</guid></item><item><title><![CDATA[New comment by ervine in "The React2Shell Story"]]></title><description><![CDATA[
<p>It wasn't OOP hate, it was hatred of splitting functionality across a number of methods rather than putting it in a single (reusable, sharable!) hook and having your component consume it.</p>
]]></description><pubDate>Sat, 09 May 2026 15:02:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48075536</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=48075536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48075536</guid></item><item><title><![CDATA[New comment by ervine in "The React2Shell Story"]]></title><description><![CDATA[
<p>You can write spaghetti with class components, too. Doesn't sound like a hooks issue to me.</p>
]]></description><pubDate>Sat, 09 May 2026 15:00:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48075519</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=48075519</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48075519</guid></item><item><title><![CDATA[New comment by ervine in "The React2Shell Story"]]></title><description><![CDATA[
<p>I just don't understand this take, every time I hear it I wonder if people just haven't spent the time to adjust their mental model.<p>Hooks are IMO the best thing that happened to react.</p>
]]></description><pubDate>Sat, 09 May 2026 12:25:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48074427</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=48074427</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48074427</guid></item><item><title><![CDATA[New comment by ervine in "The struggle of resizing windows on macOS Tahoe"]]></title><description><![CDATA[
<p>I didn't realize it was moom giving me my "move app to other monitor" hotkey, and moom didn't launch on startup after upgrading to tahoe. I've been using that hotkey for years.<p>That's when I realized there's no default hotkey for moving an app to an external monitor. That is absolutely wild. (Happy to be wrong)</p>
]]></description><pubDate>Sun, 11 Jan 2026 22:35:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46581119</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=46581119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46581119</guid></item><item><title><![CDATA[New comment by ervine in "Maybe the default settings are too high"]]></title><description><![CDATA[
<p>This is why I love cycling so much.</p>
]]></description><pubDate>Fri, 26 Dec 2025 13:21:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46391725</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=46391725</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46391725</guid></item><item><title><![CDATA[New comment by ervine in "Archiving Git branches as tags"]]></title><description><![CDATA[
<p>Wonder if it's worth squashing in the branch, merging to main, then immediately reverting.<p>Now the work is visible in history, branch can be deleted, and anyone in the future can search the ticket number or whatever if your commit messages are useful.<p>Dunno if it's worth polluting history, just thinking out loud.</p>
]]></description><pubDate>Thu, 25 Dec 2025 22:25:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=46387414</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=46387414</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46387414</guid></item><item><title><![CDATA[New comment by ervine in "`satisfies` is my favorite TypeScript keyword (2024)"]]></title><description><![CDATA[
<p><a href="https://typescript-eslint.io/rules/switch-exhaustiveness-check/" rel="nofollow">https://typescript-eslint.io/rules/switch-exhaustiveness-che...</a> if that is something you're not aware of!</p>
]]></description><pubDate>Sun, 23 Nov 2025 00:46:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=46019681</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=46019681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46019681</guid></item><item><title><![CDATA[New comment by ervine in "`satisfies` is my favorite TypeScript keyword (2024)"]]></title><description><![CDATA[
<p>You can restructure your JS to avoid some crazy verbose TS though, sometimes. I think that's the point they were making. Why be so hostile?</p>
]]></description><pubDate>Sun, 23 Nov 2025 00:08:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46019507</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=46019507</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46019507</guid></item><item><title><![CDATA[New comment by ervine in "`satisfies` is my favorite TypeScript keyword (2024)"]]></title><description><![CDATA[
<p>On the other hand, would we even be talking about it if it hadn't stuck to its goals?</p>
]]></description><pubDate>Sat, 22 Nov 2025 23:35:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46019334</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=46019334</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46019334</guid></item><item><title><![CDATA[New comment by ervine in "At the end you use `git bisect`"]]></title><description><![CDATA[
<p>Honestly it's kind of refreshing to just push files to a server.</p>
]]></description><pubDate>Sun, 02 Nov 2025 20:00:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=45792937</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=45792937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45792937</guid></item><item><title><![CDATA[New comment by ervine in "At the end you use `git bisect`"]]></title><description><![CDATA[
<p>This feels like a "is a hotdog a sandwich?" situation.<p>"Is sftp-ing to prod a merge?"</p>
]]></description><pubDate>Sun, 02 Nov 2025 19:01:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=45792553</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=45792553</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45792553</guid></item><item><title><![CDATA[New comment by ervine in "At the end you use `git bisect`"]]></title><description><![CDATA[
<p>More than one assumption in that sentence, ha!</p>
]]></description><pubDate>Sun, 02 Nov 2025 18:36:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=45792367</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=45792367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45792367</guid></item><item><title><![CDATA[New comment by ervine in "Just use a button"]]></title><description><![CDATA[
<p>I guess if it doesn't update the url, it's a button.<p>If it changes the url, it should be a link. At least that's how I've always done it.</p>
]]></description><pubDate>Fri, 31 Oct 2025 18:11:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45774943</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=45774943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45774943</guid></item><item><title><![CDATA[New comment by ervine in "Adding Breadcrumbs to a Rails Application"]]></title><description><![CDATA[
<p>I mean the use of tailwind in the article is not good. Shows a lack of CSS understanding. Why are they applying `text-base` instead of just setting that on the root element? Why are they setting text color on the <a> tag and then overriding it on the <span> inside?<p>This person would write bad CSS, let's not put the blame on tailwind.<p>Also so much repetition instead of pulling each breadcrumb link out into a shared component. I understand it's just demo code for an article, but if all code bases end up like this that you've seen, the issue isn't tailwind.</p>
]]></description><pubDate>Sun, 19 Oct 2025 10:54:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45633372</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=45633372</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45633372</guid></item><item><title><![CDATA[New comment by ervine in "Next.js version 15.2.3 has been released to address a security vulnerability"]]></title><description><![CDATA[
<p>Watch out, Lee is gonna show up and defend this decision and not respond to any valid criticisms.</p>
]]></description><pubDate>Sun, 23 Mar 2025 18:30:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43454779</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=43454779</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43454779</guid></item><item><title><![CDATA[New comment by ervine in "Tailwind V4 Is Finally Out"]]></title><description><![CDATA[
<p>Yes.</p>
]]></description><pubDate>Thu, 23 Jan 2025 02:04:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=42799830</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=42799830</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42799830</guid></item><item><title><![CDATA[New comment by ervine in "Tailwind CSS v4.0"]]></title><description><![CDATA[
<p>Whether you enjoy utility classes isn't really related at all to what css supports.</p>
]]></description><pubDate>Thu, 23 Jan 2025 02:04:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=42799826</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=42799826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42799826</guid></item><item><title><![CDATA[New comment by ervine in "How types make hard problems easy"]]></title><description><![CDATA[
<p>Oh yeah, you have to get into branded types for this I think, which means a parsing step. Fair point.</p>
]]></description><pubDate>Fri, 20 Dec 2024 11:09:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=42470110</link><dc:creator>ervine</dc:creator><comments>https://news.ycombinator.com/item?id=42470110</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42470110</guid></item></channel></rss>