<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: thraxil</title><link>https://news.ycombinator.com/user?id=thraxil</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 10 Sep 2026 09:27:36 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=thraxil" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by thraxil in "When Feature Flags Do and Don't Make Sense (2019)"]]></title><description><![CDATA[
<p>> Also sometimes flipping feature flags can be faster than doing a rollback, especially if multiple systems are involved.<p>I would argue that if flipping a feature flag <i>isn't</i> faster than doing a rollback, your feature flags are not functional. They should be essentially instantaneous and the first thing to reach for as soon as you've identified a problem.<p>> Also sometimes flipping feature flags can be faster than doing a rollback, especially if multiple systems are involved.<p>This I totally agree with. Using feature flags well requires some discipline on the team's part to stay on top of them and remove them once they've served their purpose.</p>
]]></description><pubDate>Sun, 09 Aug 2026 08:23:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=49229528</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=49229528</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49229528</guid></item><item><title><![CDATA[New comment by thraxil in "What I love about Django"]]></title><description><![CDATA[
<p>The other thing that I think people tend to forget is that there are plenty of situations where N+1 queries just aren't that big a deal. Not every view in every application that every developer builds needs to handle massive amounts of traffic with low latency and high cardinality tables. I've built so many apps where there's one or two users, small amounts of data, etc. And even on apps that do have a lot of traffic, there are often internal/admin/maintenance views that don't have the same requirements and no one will notice an N+1 where N = 5 in the worst possible case.<p>Every time ORMs get discussed, it seems to be dominated by people who are like "but my app has 5 billion concurrent users doing 2 million requests per second and if there's an extra 5ms on my requests, it will all explode!" and can't comprehend that not everyone is building the same kind of systems all the time. Great, maybe an ORM isn't appropriate for your situation.</p>
]]></description><pubDate>Fri, 07 Aug 2026 08:38:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49207501</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=49207501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49207501</guid></item><item><title><![CDATA[New comment by thraxil in "What I love about Django"]]></title><description><![CDATA[
<p>As someone who's used Django since 0.97 and loves it, Content Types are one of those features that I recommend avoiding. It looks amazing at first but you will eventually regret it.</p>
]]></description><pubDate>Thu, 06 Aug 2026 12:24:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49195710</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=49195710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49195710</guid></item><item><title><![CDATA[New comment by thraxil in "What I love about Django"]]></title><description><![CDATA[
<p>> Having that in mind, the next project was entirely in Pylons. All was good, until we were asked to add Unicode support.<p>How long ago was this? I feel like unicode has kind of been a solved problem in Python since python3 came out. In the python2 days it was, indeed, miserable.</p>
]]></description><pubDate>Thu, 06 Aug 2026 10:04:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49194694</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=49194694</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49194694</guid></item><item><title><![CDATA[New comment by thraxil in "Control the Ideas, Not the Code"]]></title><description><![CDATA[
<p>You realize he's not a native English speaker, right? His English grammar is better than my Italian, so I don't feel the need to criticize.</p>
]]></description><pubDate>Mon, 13 Jul 2026 14:04:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48892898</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=48892898</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48892898</guid></item><item><title><![CDATA[New comment by thraxil in "Price per 1M tokens is meaningless"]]></title><description><![CDATA[
<p>Not every application uses LLMs the same way. For some use-cases, price per 1M tokens is absolutely meaningful. Eg, we do a lot of pretty basic classification/entity-extraction/summarization type work on large inputs (100k tokens per request being very common). It's pretty easy stuff; Gemini 2.0 Flash was perfectly adequate, quite fast, and cost $0.10 per 1M tokens (and even less when we could make use of the batch API). Every newer more powerful model obviously can handle the same work but costs significantly more. When we're deciding what model to use, price per 1M tokens is definitely a meaningful metric.</p>
]]></description><pubDate>Tue, 07 Jul 2026 09:04:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48815267</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=48815267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48815267</guid></item><item><title><![CDATA[New comment by thraxil in "Show HN: Write SaaS apps where users control where their data is stored"]]></title><description><![CDATA[
<p>Inrupt, TBL's company, is doing SOLID for enterprise customers.</p>
]]></description><pubDate>Fri, 26 Jun 2026 08:14:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48683838</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=48683838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48683838</guid></item><item><title><![CDATA[New comment by thraxil in "Show HN: Write SaaS apps where users control where their data is stored"]]></title><description><![CDATA[
<p>Have you looked at the W3C's SOLID standard? I haven't looked deeply into what you're doing, but it sounds like a less interoperable version of what SOLID already does. <a href="https://solidproject.org/TR/protocol" rel="nofollow">https://solidproject.org/TR/protocol</a></p>
]]></description><pubDate>Thu, 25 Jun 2026 09:15:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48670973</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=48670973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48670973</guid></item><item><title><![CDATA[New comment by thraxil in "Fable Converted Pylint to Rust"]]></title><description><![CDATA[
<p>Interesting to read the comments and see the reaction here.<p>I didn't use Fable (just Opus and Gemini) but I recently ported the `djlint` Python library to Rust, also relying heavily on LLMs (but not trying to one-shot it). `djlint` is a library to lint and reformat HTML and Django template files (and some other formats but I haven't tackled them yet as I don't really have any need). It's currently unmaintained (for a couple years at least) but was part of our CI/CD and the reformat in particular is very slow on a large codebase with thousands of templates. For our code, it took about 4 minutes to run. I generated a Rust port in a similar way, aiming for byte-for-byte output compatability. The Rust version runs on the same code in a fraction of a second; fast enough to put in a pre-commit hook. Some of that was the raw Python->Rust conversion, but a lot was some optimization work that I did afterwards. The Python version was heavily regexp-based, basically running a big slow regexp for every rule that it implements, sometimes running the regexp in a loop starting with each tag it encounters as it goes through each file. For the Rust version, I switched it to properly tokenize the files and then match rules on the AST in a single (or relatively few in some cases) pass. Honestly, there's still a lot of low hanging fruit to make it faster but it's already such a big improvement that I'm pretty happy with it. I'm sure those optimizations could've been done in Python but if I'm the one maintaining the code now, I'd much rather deal with Rust than Python with or without LLM assistance.</p>
]]></description><pubDate>Fri, 19 Jun 2026 13:16:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48598225</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=48598225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48598225</guid></item><item><title><![CDATA[New comment by thraxil in "Michael Rabin has died"]]></title><description><![CDATA[
<p>I took his Introduction to Cryptography class when he was a visiting professor at Columbia. Absolute master of an old-school chalkboard lecturer. They don't make them like that any more.</p>
]]></description><pubDate>Sat, 18 Apr 2026 10:42:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47814812</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=47814812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47814812</guid></item><item><title><![CDATA[New comment by thraxil in "Qwen3.6-Plus: Towards real world agents"]]></title><description><![CDATA[
<p>Yeah. Back when Gemma2 came out we benchmarked it and were looking at open models. For our use case though, while the tasks are pretty simple, we do need a pretty large context window and Gemini had a big lead there over the open models for quite a while. I'll probably be evaluating the current batch of open models in the near future though.</p>
]]></description><pubDate>Thu, 02 Apr 2026 20:11:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47619559</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=47619559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47619559</guid></item><item><title><![CDATA[New comment by thraxil in "Qwen3.6-Plus: Towards real world agents"]]></title><description><![CDATA[
<p>Thanks. Yeah, for now we're moving to 3.1 flash lite as that's the new cheapest at $.25/1M and is also still "good enough". 2.5 flash is more expensive at $.30/1M (looks like Deep Infra charges the same as GCP/VertexAI for it). I might check them out for Gemma though. We benchmarked Gemma2 when that came out and it wasn't remotely usable for us largely because the context window was way too small. It looks like 3 or 4 might be worth evaluating though.</p>
]]></description><pubDate>Thu, 02 Apr 2026 20:07:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47619514</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=47619514</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47619514</guid></item><item><title><![CDATA[New comment by thraxil in "Qwen3.6-Plus: Towards real world agents"]]></title><description><![CDATA[
<p>No. Right now I'm upset that Google has removed (or at least is in the process of removing) the Gemini 2.0 flash model. We use it for some pretty basic functionality because it's cheap and fast and honestly <i>good enough</i> for what we use it for in that part of our app. We're being forced to "upgrade" to models that are at least 2.5 times as expensive, are slower and, while I'm sure they're better for complex tasks, don't do measurably better than 2.0 flash for what we need. Yay. We've stuck with the GCP/Gemini ecosystem up until now, but this is kind of forcing us to consider other LLM providers.</p>
]]></description><pubDate>Thu, 02 Apr 2026 16:10:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47616348</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=47616348</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47616348</guid></item><item><title><![CDATA[New comment by thraxil in "Delve – Fake Compliance as a Service"]]></title><description><![CDATA[
<p>Last time I went through SOC 2 we talked to our auditor about this. His view was that there are and basically always have been auditors/companies that will sign off on anything without verifying it if you're paying them. The rest of the industry knows who they are though. If you are taking things seriously and hire an auditor who does, that's one of the things that they look at when you're reviewing the reports from the services/subprocessors that you use. Ie, you can get a SOC 2 that doesn't mean anything but then any of your customers who know/care will flag it and it won't be worth anything.</p>
]]></description><pubDate>Sat, 21 Mar 2026 16:08:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47468287</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=47468287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47468287</guid></item><item><title><![CDATA[New comment by thraxil in "Ratchets in software development (2021)"]]></title><description><![CDATA[
<p>Shameless self-promotion, but my own post on Ratchets from a few years back: <a href="https://thraxil.org/users/anders/posts/2022/11/26/Ratchet/" rel="nofollow">https://thraxil.org/users/anders/posts/2022/11/26/Ratchet/</a>
Similar basic idea, slightly different take.</p>
]]></description><pubDate>Mon, 02 Feb 2026 10:33:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46854462</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=46854462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46854462</guid></item><item><title><![CDATA[New comment by thraxil in "Ask HN: Expository/Succinct Books on Modern Physics"]]></title><description><![CDATA[
<p>Leonard Susskind's "The Theoretical Minimum" series is a great start. His corresponding Stanford lectures are on youtube as well and are a nice supplement.</p>
]]></description><pubDate>Sat, 03 Jan 2026 19:29:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46480551</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=46480551</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46480551</guid></item><item><title><![CDATA[New comment by thraxil in "How uv got so fast"]]></title><description><![CDATA[
<p>Working heavily in Python for the last 20 years, it absolutely was a big deal. `pip install` has been a significant percentage of the deploy time on pretty much every app I've ever deployed and I've spent countless hours setting up various caching techniques trying to speed it up.</p>
]]></description><pubDate>Fri, 26 Dec 2025 21:19:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46396384</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=46396384</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46396384</guid></item><item><title><![CDATA[New comment by thraxil in "Avoid UUID Version 4 Primary Keys in Postgres"]]></title><description><![CDATA[
<p>Nope. Out of the box GCP Cloud SQL instance.</p>
]]></description><pubDate>Tue, 16 Dec 2025 09:44:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46286608</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=46286608</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46286608</guid></item><item><title><![CDATA[New comment by thraxil in "Avoid UUID Version 4 Primary Keys in Postgres"]]></title><description><![CDATA[
<p>Yep. We have tables that use UUIDv4 that have 60M+ rows and don't have any performance problems with them. Would some queries be faster using something else? Probably, but again, for us it's not close to being a bottleneck. If it becomes a problem at 600M or 6B rows, we'll deal with it then. We'll probably switch to UUIDv7 at some point, but it's not a priority and we'll do some tests on our data first. Does my experience mean you should use UUIDv4? No. Understand your own system and evaluate how the tradeoffs apply to you.</p>
]]></description><pubDate>Mon, 15 Dec 2025 13:34:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46274307</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=46274307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46274307</guid></item><item><title><![CDATA[New comment by thraxil in "How to make a Smith chart"]]></title><description><![CDATA[
<p>I switched from EE to CS (well, "Computer Engineering" technically) in the late 90s. Not specifically due to Smith charts, but that's relatable. For me it was just realizing that I was procrastinating on doing my EE problem sets, which just started to seem like endless grinding of differential equations, by playing around with whatever we were doing in the couple CS classes I had. I wouldn't say I've made "a large fortune" in software, but it's kept me gainfully employed for a few decades so I think it worked out.</p>
]]></description><pubDate>Sat, 25 Oct 2025 10:23:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45702686</link><dc:creator>thraxil</dc:creator><comments>https://news.ycombinator.com/item?id=45702686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45702686</guid></item></channel></rss>