<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: davidfstr</title><link>https://news.ycombinator.com/user?id=davidfstr</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 07:43:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=davidfstr" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by davidfstr in "Advanced Mac Substitute is an API-level reimplementation of 1980s-era Mac OS"]]></title><description><![CDATA[
<p>Wine for classic Mac OS? Amazing. Well done.</p>
]]></description><pubDate>Sat, 11 Apr 2026 16:51:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47732055</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=47732055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47732055</guid></item><item><title><![CDATA[New comment by davidfstr in "Ask HN: Do you have any evidence that agentic coding works?"]]></title><description><![CDATA[
<p>You should not be using Python types without a type checker in use to enforce them.<p>With a type checker on, types are fantastic for catching missed cases early.</p>
]]></description><pubDate>Wed, 21 Jan 2026 09:07:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46703004</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=46703004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46703004</guid></item><item><title><![CDATA[New comment by davidfstr in "Is Northern Virginia still the least reliable AWS region?"]]></title><description><![CDATA[
<p>I intentionally avoid using us-east-1 for anything, since I’ve seen so many outages.</p>
]]></description><pubDate>Wed, 24 Dec 2025 00:43:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46371218</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=46371218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46371218</guid></item><item><title><![CDATA[New comment by davidfstr in "We pwned X, Vercel, Cursor, and Discord through a supply-chain attack"]]></title><description><![CDATA[
<p>> If you didn't know, you can embed JavaScript into an SVG file.<p>Oh yikes. I did not know.</p>
]]></description><pubDate>Fri, 19 Dec 2025 12:27:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46325090</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=46325090</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46325090</guid></item><item><title><![CDATA[New comment by davidfstr in "Stacked Diffs with git rebase —onto"]]></title><description><![CDATA[
<p>I’ve been meaning to write this article for a long time @flexdinesh . Thanks for taking the time to share this technique for managing stacked diffs using vanilla git rebase!</p>
]]></description><pubDate>Fri, 05 Dec 2025 15:03:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46162200</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=46162200</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46162200</guid></item><item><title><![CDATA[Issue counts always go up]]></title><description><![CDATA[
<p>Article URL: <a href="https://dafoster.net/articles/2025/08/20/issue-counts-always-go-up/">https://dafoster.net/articles/2025/08/20/issue-counts-always-go-up/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44962420">https://news.ycombinator.com/item?id=44962420</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 20 Aug 2025 14:43:11 +0000</pubDate><link>https://dafoster.net/articles/2025/08/20/issue-counts-always-go-up/</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=44962420</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44962420</guid></item><item><title><![CDATA[New comment by davidfstr in "Designing Software in the Large"]]></title><description><![CDATA[
<p>I have to take special effort to tamp down on duplication in AI generated code.<p>For me it's not uncommon for AI to draft an initial solution in X minutes, which I then spend 3*X minutes refactoring. Here's a specific example for a recent feature I coded: <a href="https://www.youtube.com/watch?v=E25R2JgQb5c" rel="nofollow">https://www.youtube.com/watch?v=E25R2JgQb5c</a></p>
]]></description><pubDate>Tue, 12 Aug 2025 00:46:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44871120</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=44871120</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44871120</guid></item><item><title><![CDATA[Designing Software in the Large]]></title><description><![CDATA[
<p>Article URL: <a href="https://dafoster.net/articles/2025/07/22/designing-software-in-the-large/">https://dafoster.net/articles/2025/07/22/designing-software-in-the-large/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44864467">https://news.ycombinator.com/item?id=44864467</a></p>
<p>Points: 96</p>
<p># Comments: 39</p>
]]></description><pubDate>Mon, 11 Aug 2025 14:25:58 +0000</pubDate><link>https://dafoster.net/articles/2025/07/22/designing-software-in-the-large/</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=44864467</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44864467</guid></item><item><title><![CDATA[New comment by davidfstr in "Ty: A fast Python type checker and language server"]]></title><description><![CDATA[
<p>mypy is compiled using mypyc. It does not run as Python code.</p>
]]></description><pubDate>Thu, 08 May 2025 01:12:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=43922113</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=43922113</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43922113</guid></item><item><title><![CDATA[New comment by davidfstr in "Why can't HTML alone do includes?"]]></title><description><![CDATA[
<p>For HTML-in-HTML natively I use iframes and still remember how to use Frames & framesets.</p>
]]></description><pubDate>Sun, 04 May 2025 16:02:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=43887501</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=43887501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43887501</guid></item><item><title><![CDATA[New comment by davidfstr in "Font with Built-In Syntax Highlighting"]]></title><description><![CDATA[
<p>I find it amusing that the motivation for creating a complex font program that supports syntax highlighting internally is the desire to avoid a complex syntax highlighter JavaScript library. The complexity is still there; it's just been moved around.<p>Edit: Perhaps this is a reminder that <i>custom fonts</i> are a potential attack vector for security-sensitive websites since font rendering runs highly-complex programs, probably in a language that isn't memory safe.</p>
]]></description><pubDate>Thu, 15 Aug 2024 14:20:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=41256431</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=41256431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41256431</guid></item><item><title><![CDATA[Redis relicensing: Why is this a problem?]]></title><description><![CDATA[
<p>Article URL: <a href="https://dafoster.net/articles/2024/03/24/redis-relicensing-why-is-this-a-problem/">https://dafoster.net/articles/2024/03/24/redis-relicensing-why-is-this-a-problem/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39807228">https://news.ycombinator.com/item?id=39807228</a></p>
<p>Points: 1</p>
<p># Comments: 2</p>
]]></description><pubDate>Sun, 24 Mar 2024 13:51:08 +0000</pubDate><link>https://dafoster.net/articles/2024/03/24/redis-relicensing-why-is-this-a-problem/</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=39807228</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39807228</guid></item><item><title><![CDATA[New comment by davidfstr in "Returns: Brings functional programming to Python land"]]></title><description><![CDATA[
<p>Looks like this library is serious. Most of what I see can be written more succinctly using existing Python functionality:<p><pre><code>  1. Maybe -> Optional[T]
  2. Result -> Union[SuccessT, FailureT]
  3. Future, FutureResult -> concurrent.futures.Future[T]
  4. IO ->  don't use this; none of the standard library I/O supports it
</code></pre>
I do appreciate the use of "container" as a term instead of "monad".<p>I also appreciate the typechecker enhancements being put forward by their custom plugins.</p>
]]></description><pubDate>Tue, 20 Feb 2024 13:48:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=39441181</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=39441181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39441181</guid></item><item><title><![CDATA[New comment by davidfstr in "Beeper Mini is back"]]></title><description><![CDATA[
<p>WhatsApp is owned by Meta/Facebook</p>
]]></description><pubDate>Tue, 12 Dec 2023 13:38:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=38611892</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=38611892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38611892</guid></item><item><title><![CDATA[New comment by davidfstr in "We should promote more personal indexing, rather than algorithmic indexing"]]></title><description><![CDATA[
<p>> A better resource today would have to start with some radical choice such as whitelisting, if only to reduce the head-end costs of ingesting material.<p>> It's tempting to imagine some rules like: no ads, no popups of any kind, government mandated or not, especially no cookie banners, no paywall, but even sites like Wikipedia fail at those criteria today.<p>This sounds like the approach that the Marginalia (<a href="https://search.marginalia.nu/" rel="nofollow noreferrer">https://search.marginalia.nu/</a>) search engine is taking. My understanding is that its algorithm favors text-heavy sites. And additions to its index are done via GitHub Pull Request so it's effectively using an approve-list (whitelist).</p>
]]></description><pubDate>Wed, 25 Oct 2023 19:00:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=38016835</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=38016835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38016835</guid></item><item><title><![CDATA[New comment by davidfstr in "Ask HN: In which areas have you compared 3+ tools and formed strong preferences?"]]></title><description><![CDATA[
<p>I’ve used 3+ text editors on macOS (BBEdit, Sublime, VS Code, PyCharm), and prefer Sublime for my day-to-day work writing Python/JavaScript web apps, mainly because of fast code navigation and relatively fast typing speed.<p>BBEdit I still use for multi-file search & replace since I prefer its interface for that. It also has the fastest typing speed.<p>PyCharm I use exclusively for identifying & removing unused imports in Python.<p>VS Code I don’t use at all. Relatively slow typing speed. Relatively slow navigation.</p>
]]></description><pubDate>Tue, 01 Aug 2023 17:02:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=36958826</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=36958826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36958826</guid></item><item><title><![CDATA[New comment by davidfstr in "Ask HN: Most interesting tech you built for just yourself?"]]></title><description><![CDATA[
<p>I created a smart spreadsheet app for tracking any books, movies, or TV series I'm interested in watching which can automatically run web searches for sources to stream/rent/buy any item on the list (ex: Netflix, Amazon Prime, my local library, my local bookstore).<p>This way I can focus on <i>what</i> I want to watch and not worry about <i>how</i> I will watch it.</p>
]]></description><pubDate>Fri, 28 Apr 2023 14:24:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=35741619</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=35741619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35741619</guid></item><item><title><![CDATA[New comment by davidfstr in "Tell HN: I DDoSed myself using CloudFront and Lambda Edge and got a $4.5k bill"]]></title><description><![CDATA[
<p>> Servers can also be liability. You need to document, implement and maintaing hardening, have a process for regularly patching os and apps, […], have backup and disaster recovery procedures, regularly test the procedures, […] and so on.<p>Much of this complexity I eliminate by using the Immutable Server pattern:<p>Specifically I deploy my app as a Docker container hosted on a virtual machine cluster managed by AWS ElasticBeanstalk. OS upgrades and patches (outside the container) are done by AWS.<p>If anything goes wrong with a VM I just terminate it and a different fresh VM spins up to take its place.</p>
]]></description><pubDate>Tue, 28 Jun 2022 19:05:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=31911734</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=31911734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31911734</guid></item><item><title><![CDATA[New comment by davidfstr in "Ask HN: Is Ruby on Rails still relevant?"]]></title><description><![CDATA[
<p>Personally if I was starting a project in the same space as Rails/Ruby I’d go with Django/Python instead.<p>I prefer the “explicit is better than implicit” norm in the Python community over the “powerful yet mystifying magic” I find in Rails. (This is personal preference.)<p>I also appreciate Python source code being easier to manipulate with tools than Ruby, since Ruby did not have a formal grammar the last time I checked. Any tools that did exist appeared to usually include the yacc/bison file from MRI (the main Ruby implementation) as the best approximation of a language definition.</p>
]]></description><pubDate>Tue, 26 Apr 2022 19:23:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=31171970</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=31171970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31171970</guid></item><item><title><![CDATA[New comment by davidfstr in "Things I can’t do on macOS which I can do on Ubuntu (2020)"]]></title><description><![CDATA[
<p>Several of the missing capabilities mentioned here can be done with 3rd party tools.<p>* BetterSnapTool for window snapping and maximization (although I prefer Moom for better control).<p>* Afloat to force a particular window to always be on top.<p>* TinkerTool to mess with various other settings.<p>Sure, these may not be “built-in” as first party capabilities, but Apple has a history of slowly bringing such capabilities into the OS over time. Flux (for altering screen tint at night time) became standard. So did TextExpander (for auto-expanding abbreviations).</p>
]]></description><pubDate>Tue, 26 Apr 2022 15:14:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=31168480</link><dc:creator>davidfstr</dc:creator><comments>https://news.ycombinator.com/item?id=31168480</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31168480</guid></item></channel></rss>