<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: TheFlyingFish</title><link>https://news.ycombinator.com/user?id=TheFlyingFish</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 06 May 2026 08:18:02 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=TheFlyingFish" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by TheFlyingFish in "A GitHub Issue Title Compromised 4k Developer Machines"]]></title><description><![CDATA[
<p>The linked article isn't describing a form of input sanitization, it's a complete separation between trusted and untrusted contexts. The trusted model has no access to untrusted input, and the untrusted model has no access to tools.<p>Simon Willison has a good explainer on CaMeL: <a href="https://simonwillison.net/2025/Apr/11/camel/" rel="nofollow">https://simonwillison.net/2025/Apr/11/camel/</a></p>
]]></description><pubDate>Fri, 06 Mar 2026 20:44:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47280820</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47280820</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47280820</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Ghostty – Terminal Emulator"]]></title><description><![CDATA[
<p>He's living the hacker dream. Made a billion bucks, then went right back to writing code. People upvote because they wish they were him.</p>
]]></description><pubDate>Tue, 03 Mar 2026 00:47:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47226422</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47226422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47226422</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Ghostty – Terminal Emulator"]]></title><description><![CDATA[
<p>The HN zeitgeist has something of a love/hate relationship with the web, I've noticed. HN in general seems to skew a little older than a lot of online communities, so a lot of HN users were adults back in the early days of the web/Usenet/etc. There's a tendency to view those days with nostalgia, leading a lot of people to feel like the "good old days" of the web were "ruined" by the modern shift into more interactivity, fancier/prettier design, etc. And "web developers" are the ones proximately responsible for the shift, so they get the hate too.<p>I laugh every time I see someone on HN asserting that the web "shouldn't" be used for anything beyond "documents and lightly interactive content", which is not uncomment. There's some real old-man-yelling-at-clouds energy there.</p>
]]></description><pubDate>Mon, 02 Mar 2026 10:45:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47216219</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47216219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47216219</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "How do I cancel my ChatGPT subscription?"]]></title><description><![CDATA[
<p>If you're crazy then I am too. 50% odds it was written by a human, 50% bot.</p>
]]></description><pubDate>Sat, 28 Feb 2026 12:25:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47194453</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47194453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47194453</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "How we rebuilt Next.js with AI in one week"]]></title><description><![CDATA[
<p>I imagine offloading a lot of the heavy lifting to Vite helps cut down on the code size.</p>
]]></description><pubDate>Wed, 25 Feb 2026 02:29:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47146538</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47146538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47146538</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "My journey to the microwave alternate timeline"]]></title><description><![CDATA[
<p>I once managed to trigger what I think was a race condition in a microwave's beep routine. It was one of the type that does a single long beep rather than individual beeps, and like most it would cut the beep short when you opened the door. But one time, one single time, I managed to open the door PRECISELY as the timer finished, and the beep just didn't stop. I finally closed and opened the door after maybe 30 seconds, and that stopped it.<p>I was never able to trigger it again, so I have no idea whether it was a race condition or some other random one-in-a-million happenstance, but it makes a fun theory at least.</p>
]]></description><pubDate>Tue, 24 Feb 2026 00:37:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47131222</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47131222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47131222</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Loon: A functional lang with invisible types, safe ownership, and alg. effects"]]></title><description><![CDATA[
<p>I've never used a Lisp either, but I get the impression that "forcing you to write the AST" is sort of the secret sauce. That is, if your source code is basically an AST to begin with, then transforming that AST programmatically (i.e. macros) is much more ergonomic. So you do, which means that Lisp ends up operating at a higher level of abstraction than most languages because you can basically create DSL on the fly for whatever you're doing.<p>That's my impression, at least. Like I said, I've never actually used a Lisp. Maybe I'm put off by the smug superiority of so many Lisp people who presume that using Lisp makes them better at programming, smarter, and probably morally superior to me.</p>
]]></description><pubDate>Sat, 21 Feb 2026 23:09:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47105944</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=47105944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47105944</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Replacing JavaScript with Just HTML"]]></title><description><![CDATA[
<p>Technically native selects do have a very rudimentary form of filtering: start typing text with the select focused and it will auto-select the first matching option.<p>E.g. if the select is a list of US states, type "N" and it will jump to Nebraska. Continue into "New" and you'll get New Hampshire, etc.<p>This is better than nothing (and I personally use it all the time) but not a patch on an actual proper select-with-filtering which, yes, you still need JS to implement properly.</p>
]]></description><pubDate>Mon, 29 Dec 2025 01:56:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46416581</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=46416581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46416581</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "A “frozen” dictionary for Python"]]></title><description><![CDATA[
<p>That works if you're dealing with a known set of keys (i.e. what most statically-typed languages would call a struct). It falls down if you need something where the keys are unknowable until runtime, like a lookup table.<p>I do like dataclasses, though. I find them sneaking into my code more and more as time goes on. Having a declared set of properties is really useful, and it doesn't hurt either that they're syntactically nicer to use.</p>
]]></description><pubDate>Thu, 11 Dec 2025 14:28:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46231804</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=46231804</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46231804</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Anthropic acquires Bun"]]></title><description><![CDATA[
<p>I haven't used Deno, but I do use Bun purely as a replacement for npm. It does the hard-linking thing that seems to be increasingly common for package managers these days (i.e. it populates your local node_modules with a bunch of hard links to its systemwide cache), which makes it vastly quicker and more disk-efficient than npm for most usage.<p>Even with a cold cache, `bun install` with a large-ish dependency graph is significantly faster than `npm install` in my experience.<p>I don't know if Deno does that, but some googling for "deno install performance vs npm install" doesn't turn up much, so I suspect not?<p>As a runtime, though, I have no opinion. I did test it against Node, but for my use case (build tooling for web projects) it didn't make a noticeable difference, so I decided to stick with Node.</p>
]]></description><pubDate>Tue, 02 Dec 2025 18:35:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46124685</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=46124685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46124685</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Shai-Hulud Returns: Over 300 NPM Packages Infected"]]></title><description><![CDATA[
<p>Requests is a great example of my point, actually. Creating a brand-new Python venv and running `uv add requests` tells me that a total of 5 packages were added. By contrast, creating a new Rust project and running `cargo add reqwest` (which is morally equivalent to Python's `requests`) results in adding 160 packages, literally 30x as many.<p>I don't think languages should try to include _everything_ in their stdlib, and indeed trying to do so tends to result in a lot of legacy cruft clogging up the stdlib. But I think there's a sweet spot between having a _very narrow_ stdlib and having to depend on 160 different 3rd-party packages just to make a HTTP request, and having a stdlib with 10 different ways of doing everything because it took a bunch of tries to get it right. (cf. PHP and hacks like `mysql_real_escape_string`, for example.)<p>Maybe Python also has a historical advantage here. Since the Internet was still pretty nascent when Python got its start, it wasn't the default solution any time you needed a bit of code to solve a well-known problem (I imagine, at least; I was barely alive at that point). So Python could afford to wait and see what would actually make good additions to the stdlib before implementing them.<p>Compare to Rust which _immediately_ had to run gauntles like "what to do about async", with thousands of people clamoring for a solution _right now_ because they wanted to do async Rust. I can definitely sympathize with Rust's leadership wanted to do the absolute minimum required for async support while they waited for the paradigm to stabilize. And even so, they still get a lot of flak for the design being rushed, e.g. with `Pin`.<p>So it's obviously a difficult balance to strike, and maybe the solution isn't as simple as "do more in the stdlib". But I'd be curious to see it tried, at least.</p>
]]></description><pubDate>Mon, 24 Nov 2025 14:29:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46034504</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=46034504</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46034504</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Shai-Hulud Returns: Over 300 NPM Packages Infected"]]></title><description><![CDATA[
<p>I've worried about this for a while with Rust packages. The total size of a "big" Rust project's dependency graph is pretty similar to a lot of JS projects. E.g. Tauri, last I checked, introduces about 600 dependencies just on its own.<p>Like another commenter said, I do think it's partially just because dependency management is so easy in Rust compared to e.g. C or C++, but I also suspect that it has to do with the size of the standard library. Rust and JS are both famous for having minimal standard libraries, and what do you know, they tend to have crazy-deep dependency graphs. On the other hand, Python is famous for being "batteries included", and if you look at Python project dependency graphs, they're <i>much</i> less crazy than JS or Rust. E.g. even a higher-level framework like FastAPI, that itself depends on lower-level frameworks, has only a dozen or so dependencies. A Python app that I maintain for work, which has over 20 top-level dependencies, only expands to ~100 once those 20 are fully resolved. I really think a lot of it comes down to the standard library backstopping the most common things that everybody needs.<p>So maybe it would improve the situation to just expand the standard library a bit? Maybe this would be hiding the problem more than solving it, since all that code would still have to be maintained and would still be vulnerable to getting pwned, but other languages manage somehow.</p>
]]></description><pubDate>Mon, 24 Nov 2025 11:25:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46032873</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=46032873</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46032873</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Uv is the best thing to happen to the Python ecosystem in a decade"]]></title><description><![CDATA[
<p>uv helps a <i>lot</i> with the first problem. Not so much with the second, though.</p>
]]></description><pubDate>Thu, 30 Oct 2025 10:28:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45758354</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=45758354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45758354</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Uv is the best thing to happen to the Python ecosystem in a decade"]]></title><description><![CDATA[
<p>SPy looks really interesting! I've run across projects like MyPyc before, but as you say they kill a lot of the "joy" of Python by removing things like decorators and operator overloading.<p>One question, more out of curiosity than any genuine need: do you (or do you plan to) support any kind of trait/interface based polymorphism? E.g. it's a pretty common idiom to have a function that works on "any iterable type" and that sort of thing, which seems like it would be best modeled as an interface. I guess you could argue that's at odds with Python's tradition of "duck typing" but then again, so is static typing in general so I'm not sure.</p>
]]></description><pubDate>Thu, 30 Oct 2025 10:20:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45758297</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=45758297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45758297</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "The <output> Tag"]]></title><description><![CDATA[
<p>Reader mode is based on a whole slew of heuristics including tag names, class names, things like link-to-text-content ratio, and other stuff I can't recall. IIRC it considers semantic tag names a stronger signal than e.g. class names, so having <article> in your page isn't necessary but helps a lot.</p>
]]></description><pubDate>Sun, 12 Oct 2025 01:26:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=45554292</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=45554292</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45554292</guid></item><item><title><![CDATA[Salter's Screwdriver Theory of Latency]]></title><description><![CDATA[
<p>Article URL: <a href="https://jrs-s.net/2025/05/15/salters-screwdriver-theory-of-latency/">https://jrs-s.net/2025/05/15/salters-screwdriver-theory-of-latency/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43998590">https://news.ycombinator.com/item?id=43998590</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 15 May 2025 19:45:55 +0000</pubDate><link>https://jrs-s.net/2025/05/15/salters-screwdriver-theory-of-latency/</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=43998590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43998590</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Show HN: I built a hardware processor that runs Python"]]></title><description><![CDATA[
<p>I've used Python a lot over the last ~10 years. It's probably my favorite language, although I'm not immune to its weak points.<p>To answer your questions in order,<p>a) I haven't done much work with embedded Python, but like any dynamically-typed language that runs in a VM there's a lot of runtime infrastructure that adds latency, complexity, energy consumption, bundle size, etc. It sounds like this project aims to remove the vast majority of that. So take startup time, for instance: Normal Python takes ~50ms to fire up the interpreter and get into actual user code. If I'm understanding it correctly, with PyXL that would be vastly lower. Although I guess the ARM chip still has to load the code onto the FPGA, so maybe not, idk.<p>b) and c) are kind of the same question, to me - at least, "why use Python for embedded" is a subset of "why use Python at all."<p>For me, Python more than any other language is great at <i>getting out of its own way</i>, so that you can spend your precious brain energy on whatever <i>problem</i> you're solving and less on the <i>tool</i> you're using to solve it. This is maybe less true in recent years, as later Pythons have added a lot more complex features (like async/await, for instance, which I actually really like in Python but definitely adds complexity to the language).<p>Finally, I think a lot of it comes down to personal style/taste/chance (i.e. if Python is the first language you encounter, you're probably more likely to end up liking Python.) The Zen of Python[0], which you may have seen, does a good job of explaining the Python way of approaching problems, although like I said a few of those principles have been less-rigidly adhered to in recent years (like "there should be only one way to do it.")<p>If you hang out in Python circles, you'll probably come across the phrase "Python fits your brain." I'm not sure where it was originally coined but it very definitely describes my experience with Python: it (mostly) just works like I expect it to, whether that's with regard to syntax, semantics, stdlib, etc.<p>Not that it doesn't have its bad points, of course. Dependency management, as you mentioned, can be a bit hellish at times. A lot of it comes down to the fact that dependencies in Python were originally conceived as <i>systemwide</i> state, much like dynamically-loaded C libs on Linux. This works fine until you need to use two different, mutually-incompatible versions of the same lib, at which point all hell breaks loose. There have been various attempts to improve on this more recently, so far uv[1] looks pretty promising, but time will tell.<p>The one saving grace of Python dependencies is that it has a very rich standard library, so the average Python project  tends to have way fewer total dependencies than the average project in, say, JS or Rust.<p>The typing story for Python is also a bit lacking. Yes, there are now optional type hints and things like MyPy to make use of them, but even if your own code is all completely typed, in my experience it's usually not long before you need to call out to something that isn't well-typed and then your whole house of cards starts to fall apart.<p>Anyway, just my rambling $0.02.<p>[0] <a href="https://peps.python.org/pep-0020/" rel="nofollow">https://peps.python.org/pep-0020/</a></p>
]]></description><pubDate>Mon, 28 Apr 2025 19:01:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=43824791</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=43824791</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43824791</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "The DuckDB Local UI"]]></title><description><![CDATA[
<p>After playing around for a while, a few things come to mind:<p>* Being able to specify a db at startup would be pretty cool. I'm teaching a class on SQL this summer and I'm already envisioning workflows where a gatekeeper proxy spins up duckdb-ui containers on-demand for users as they log in/out, and it would be much better if the UI can be pre-seeded with an existing database.<p>* This is maybe a big ask, but markdown cells in notebooks would be nice. Again thinking of my classroom use-case, it would be nice to distribute course materials (lessons/exercises/etc) as notebooks, but that's a bit of a non-starter without markdown or some equivalent content-centric cell type.<p>* Not a feature request, I just have to say I'm a big fan of how well it handles displaying massive datasets with on-demand streaming and all. I was imagining that I'd have to introduce the `LIMIT` clause right off the bat so that people don't swamp themselves with 100k's of rows, but if I end up using this then maybe I can hold off on that and introduce it at a more natural time.<p>Regardless, this is great and I definitely have uses for it outside the class I mentioned, so thanks!</p>
]]></description><pubDate>Thu, 13 Mar 2025 14:28:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=43353739</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=43353739</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43353739</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Why we use our own hardware"]]></title><description><![CDATA[
<p>Lots of people here mentioning reasons to both use and avoid the cloud. I'll just chip in one more on the pro-cloud side: reliability at low scale.<p>To expand: At $dayjob we use AWS, and we have no plans to switch because we're <i>tiny</i>, like ~5000 DAU last I checked. Our AWS bill is <$600/mo. To get anything remotely resembling the reliability that AWS gives us we would need to spend tens of thousands up-front buying hardware, then something approximating our current AWS bill for colocation services. Or we could host fully on-prem, but then we're paying even more up-front for site-level stuff like backup generators and network multihoming.<p>Meanwhile, RDS (for example) has given us something like one unexplained 15-minute outage in the last six years.<p>Obviously every situation is unique, and what works for one won't work for another. We have no expectation of ever having to suddenly 10x our scale, for instance, because we our growth is limited by other factors. But at our scale, given our business realities, I'm convinced that the cloud is the best option.</p>
]]></description><pubDate>Sun, 22 Dec 2024 18:49:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42488254</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=42488254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42488254</guid></item><item><title><![CDATA[New comment by TheFlyingFish in "Trump wins presidency for second time"]]></title><description><![CDATA[
<p>Isn't the problem with deflation that it de-incentivizes investment (why accept risk when you can just stuff your mattress with money and grow your wealth risk-free), which tanks the economy?<p>Lowering prices sounds nice, but my understanding has always been that it would come at the cost of less actual wealth overall.</p>
]]></description><pubDate>Wed, 06 Nov 2024 23:05:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=42070960</link><dc:creator>TheFlyingFish</dc:creator><comments>https://news.ycombinator.com/item?id=42070960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42070960</guid></item></channel></rss>