<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: tdfirth</title><link>https://news.ycombinator.com/user?id=tdfirth</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Jul 2026 03:42:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tdfirth" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tdfirth in "Arrows to Arrows, Categories to Queries"]]></title><description><![CDATA[
<p>Great post! I've worked on a few query generating systems of varying degrees of complexity, and SQL is pretty rough as a compilation target. I've spent more time than I'd have liked wrestling with queries as comparably ungodly as the beauty you have presented.<p>One trick that I always find helpful is to unroll the subqueries into a long sequence of CTEs. You can do a depth first traversal of whatever data structure produces your subqueries and build a list of CTEs as you go (and track of all the CTE names of course). The ordering 'just works'!<p>Slightly nicer SQL doesn't seem important at first for stuff like this, but it's actually a godsend for debugging. Every operation in the query gets a name that's accessible in the outermost scope, so you can slap a `select * from cochoice_abc123` on the end and see what's going on.<p>Figuring out what's going on in those subqueries was no doubt hellish at times.</p>
]]></description><pubDate>Wed, 28 Jan 2026 00:11:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46789125</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46789125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46789125</guid></item><item><title><![CDATA[New comment by tdfirth in "Claude Code gets native LSP support"]]></title><description><![CDATA[
<p>No rename symbol? What am I missing? It seems like a no brainer.</p>
]]></description><pubDate>Mon, 22 Dec 2025 22:23:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=46359875</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46359875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46359875</guid></item><item><title><![CDATA[New comment by tdfirth in "The Rise of SQL:the second programming language everyone needs to know"]]></title><description><![CDATA[
<p>If you do backend web development in 99% of software companies then being very good at whatever your RDBMS is is a superpower.<p>It's definitely worth learning SQL very well, but you also need to learn the data structures your RDBMS uses, how queries translate into operations on that data, and what those operations look like in a query plan.<p>You can go surprisingly far with just that knowledge.<p>A great resource is <a href="https://use-the-index-luke.com/" rel="nofollow">https://use-the-index-luke.com/</a></p>
]]></description><pubDate>Mon, 22 Dec 2025 22:09:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46359746</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46359746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46359746</guid></item><item><title><![CDATA[New comment by tdfirth in "Go's escape analysis and why my function return worked"]]></title><description><![CDATA[
<p>Ha! I had not intended to imply that one is better than the other, but I am glad that it made you feel good :).<p>I also came "from above".</p>
]]></description><pubDate>Thu, 11 Dec 2025 18:46:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46235314</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46235314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46235314</guid></item><item><title><![CDATA[New comment by tdfirth in "Go's escape analysis and why my function return worked"]]></title><description><![CDATA[
<p>I don’t think this is confusing to the vast majority of people writing Go.<p>In my experience, the average programmer isn’t even aware of the stack vs heap distinction these days. If you learned to write code in something like Python then coming at Go from “above” this will just work the way you expect.<p>If you come at Go from “below” then yeah it’s a bit weird.</p>
]]></description><pubDate>Thu, 11 Dec 2025 13:53:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46231364</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46231364</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46231364</guid></item><item><title><![CDATA[New comment by tdfirth in "Django: what’s new in 6.0"]]></title><description><![CDATA[
<p>American hegemony, and all that.</p>
]]></description><pubDate>Tue, 09 Dec 2025 22:05:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46211385</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46211385</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46211385</guid></item><item><title><![CDATA[New comment by tdfirth in "Launch HN: Mentat (YC F24) – Controlling LLMs with Runtime Intervention"]]></title><description><![CDATA[
<p>I believe they change color to express emotion.</p>
]]></description><pubDate>Tue, 09 Dec 2025 19:11:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46209190</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46209190</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46209190</guid></item><item><title><![CDATA[New comment by tdfirth in "Show HN: Gemini Pro 3 imagines the HN front page 10 years from now"]]></title><description><![CDATA[
<p>You're right. How naive of me.</p>
]]></description><pubDate>Tue, 09 Dec 2025 18:46:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46208837</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46208837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46208837</guid></item><item><title><![CDATA[New comment by tdfirth in "Show HN: Gemini Pro 3 imagines the HN front page 10 years from now"]]></title><description><![CDATA[
<p>Google kills Gemini cloud services is the best one. I can't believe I haven't seen that joke until today.</p>
]]></description><pubDate>Tue, 09 Dec 2025 18:29:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46208598</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=46208598</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46208598</guid></item><item><title><![CDATA[New comment by tdfirth in "Structured outputs on the Claude Developer Platform"]]></title><description><![CDATA[
<p>In my experience (I've put hundreds of billions of tokens through structured outputs over the last 18 months), I think the answer is yes, but only in edge cases.<p>It generally happens when the grammar is highly constrained, for example if a boolean is expected next.<p>If the model assigns a low probability to both true and false coming next, then the sampling strategy will pick whichever one happens to score highest. Most tokens have very similar probabilities close to 0 most of the time, and if you're picking between two of these then the result will often feel random.<p>It's always the result of a bad prompt though, if you improve the prompt so that the model understands the task better, then there will then be a clear difference in the scores the tokens get, and so it seems less random.</p>
]]></description><pubDate>Fri, 14 Nov 2025 20:40:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45931914</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=45931914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45931914</guid></item><item><title><![CDATA[Ask HN: Are LLMs an Acceptable Lisp?]]></title><description><![CDATA[
<p>I say this in jest, but it's a fun little idea.<p>It's easy to make the case that an LLM 'program' is homoiconic, as the code and the data are all just plain text.<p>LLMs also offer rich metaprogramming (prompts that write prompts).<p>They even arguably offer features like CL's condition system.<p>Of course, they don't operate on symbolic expressions, so it's a stretch to actually call them a lisp (or any other programming language), but they seem to share a lot of the same properties.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45386691">https://news.ycombinator.com/item?id=45386691</a></p>
<p>Points: 6</p>
<p># Comments: 2</p>
]]></description><pubDate>Fri, 26 Sep 2025 14:08:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=45386691</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=45386691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45386691</guid></item><item><title><![CDATA[New comment by tdfirth in "SQL pipe syntax available in public preview in BigQuery"]]></title><description><![CDATA[
<p>It should have always worked this way. Without this feature you take the algebra out of relational algebra. That's the root of most of the composition issues in SQL.<p>Sadly it's a few decades too late though, and sadly this just fragments the "ecosystem" further.</p>
]]></description><pubDate>Thu, 13 Feb 2025 19:49:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=43040433</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=43040433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43040433</guid></item><item><title><![CDATA[New comment by tdfirth in "Stimulation Clicker"]]></title><description><![CDATA[
<p>The best strategy is to write a helper function in the console to click for you. Then invest heavily in the DVDs, DVD bounce rate, stimulation per bounce, and general SPS increases.<p>I reached several quintillion stimulation, at which point I was offered to purchase "go to the beach" for 2 million. This ends the game and plays a relaxing beach video.<p>You too can get to the beach in just 5 minutes.</p>
]]></description><pubDate>Mon, 06 Jan 2025 23:53:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=42617536</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=42617536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42617536</guid></item><item><title><![CDATA[New comment by tdfirth in "Researchers find high levels of lead, mercury and arsenic in Beethoven's hair"]]></title><description><![CDATA[
<p>This is a beautiful comment, and I couldn't agree more.<p>There is only one standard of accomplishment and it's set by people like Mozart.<p>Accepting that is humbling, but it's required to know yourself and grow. My contributions probably won't amount to much, but Mozart (et al) have shown us what good looks like and it's fun to strive.</p>
]]></description><pubDate>Wed, 15 May 2024 19:40:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=40371408</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=40371408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40371408</guid></item><item><title><![CDATA[New comment by tdfirth in "Tell HN: Ever think of applying to YC? Do it this weekend for S24"]]></title><description><![CDATA[
<p>You're right that I didn't mean to communicate that, but it's a good point. I agree with you entirely that this is the big downside of YC and frankly all VC backed entrepreneurship. It is not the path of highest expected return for a founder. If you want a high expected return then a FAANG job or a bootstrapped SaaS product you can build yourself are good options. Some days that's what I wish I was doing to be honest.<p>I think a lot of VC backed founders aren't just in it because they want to get rich though. Sure, we all want that, but we're also all predisposed to irrationally believe that we're the exception. That trait (for better or worse) comes with implications, and many founders I speak to are simply compelled to try because it's hard, and it's theirs, and they're impatient.<p>I also very much agree with the sibling though. Getting rejected does not carry that much signal, because YC are wrong more than they're right. So just keep trying.</p>
]]></description><pubDate>Sat, 20 Apr 2024 14:34:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=40097640</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=40097640</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40097640</guid></item><item><title><![CDATA[New comment by tdfirth in "Tell HN: Ever think of applying to YC? Do it this weekend for S24"]]></title><description><![CDATA[
<p>This is the process. They want people with high agency, a bias to action, and who make progress in the face of uncertainty.</p>
]]></description><pubDate>Sat, 20 Apr 2024 12:55:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=40097032</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=40097032</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40097032</guid></item><item><title><![CDATA[New comment by tdfirth in "Tell HN: Ever think of applying to YC? Do it this weekend for S24"]]></title><description><![CDATA[
<p>This was not my experience. I have no degree, I'm not American, and I applied back in October 2021 about 3 hours before the dead line and filmed my application video from a coffee shop. I didn't have a good network. I didn't have a product yet. I was accepted first time.<p>As you say, a lot of YC founders don't have a real business yet, but they're not there because they're well connected. They're there because YC thinks they fit the profile of someone who really wants to build a big business and might pull it off. They're wrong most of the time but it's a numbers game.</p>
]]></description><pubDate>Sat, 20 Apr 2024 12:53:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=40097020</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=40097020</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40097020</guid></item><item><title><![CDATA[Show HN: Nasty, a cross-warehouse, type-checked, unit-testable analytics library]]></title><description><![CDATA[
<p>Hey HN - our team wants to open source a project called NASTY (NASTY Abstract Syntax Tree thingY) that we built for ourselves. NASTY was built to maintain testable/composable data pipelines. Our team was ripping our hair out trying to maintain dbt/SQL scripts across different data warehouses (Redshift, BigQuery, Postgres, Snowflake) on top of ever shifting data foundations maintained by our customer's internal data teams. NASTY is the result of our learnings from field experience.<p>We wanted to write abstractions so that we could reuse code. We wanted to bundle those abstractions into libraries. We wanted to statically analyze our models so that we caught more errors before production. We wanted a fast unit test suite that you could iterate on locally without connecting to a data warehouse.<p>In short, we wanted to use all the same practices we used for building our other software. Tools like dbt made a great start at importing these kinds of practices into analytics, but there are many great aspects of the software engineering workflow that still aren't easy to replicate in data.<p>We've found it to be a super productive way to work, and we thought others might want to use it too. It's very early days so we've put up a page for to explain it, and we've made some executable examples for people to have a go. Let us know what you think!<p>FAQ:<p>Is NASTY an ORM? A SQL builder?<p>Neither! NASTY is kinda it's own thing. NASTY is more like a minimal relational algebra programming language shipped as a Typescript library. It borrows a bunch of learnings from other programming languages and applies them to OLAP programming / data engineering. It's an important distinction, because it totally changes the way you can think about building transformations.<p>Why TypeScript? Why not Python?<p>The 100% honest answer is we had a ton of typescript experience and we had a node/react app with pulumi's TS apis. We like typescript and by being a library instead of a full programming language, we can leverage things like vitest, eslint, node, TS's language server, TSdoc, etc.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39641713">https://news.ycombinator.com/item?id=39641713</a></p>
<p>Points: 47</p>
<p># Comments: 6</p>
]]></description><pubDate>Fri, 08 Mar 2024 15:10:28 +0000</pubDate><link>https://getnasty.dev/</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=39641713</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39641713</guid></item><item><title><![CDATA[New comment by tdfirth in "My Overkill Home Network"]]></title><description><![CDATA[
<p>I'm in the UK (Oxfordshire) and have a 1gb symmetrical connection at home. It's provided by Gigaclear - there's a handful of other similar operators that do fibre in more "rural" areas. It costs £79 a month, so it's not cheap to be honest, but I love it.</p>
]]></description><pubDate>Thu, 10 Aug 2023 22:37:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=37082617</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=37082617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37082617</guid></item><item><title><![CDATA[New comment by tdfirth in "Ask HN: How to do market research for product?"]]></title><description><![CDATA[
<p>Don't overthink it, just get out there and talk to people. The more the better. In my experience, the limiting factor on day 1 is a lack of information, so your job is to learn until it's fairly obvious what to do. Thinking doesn't really generate new data, only action can, so walk into every restaurant you come across, write cold emails, etc.<p>As far as how to conduct these sorts of interviews goes, a few people have mentioned the mom test - it's v short and simple but it is indeed good. People, for the most part, avoid conflict and so don't give you honest feedback. Instead they tend to be complimentary, but non-committal. As a result, you need to be a little indirect in your line of questioning, and pay more attention to what they do than what they say.<p>When it comes to testing a product, try and deliver the value manually instead. Businesses don't buy software, they buy solutions to problems. Software is just a way to deliver the solution to many customers. If you can't convince someone to pay you to keep their menu up to date by hand, they won't pay for your software to do it either. Perhaps you convince them to give you the relevant credentials to update menus across platforms yourself, and then they email you when something changes, or you give them a google form, or you go into the restaurant every day and ask what's new. Not everyone is open to working with someone in a scrappy way like this, but you'd be surprised.<p>You can easily serve a handful of customers manually like this, which will give you the data you need to decide if it's worth it, and the data you need to build the product.<p>Anyway, good luck!</p>
]]></description><pubDate>Tue, 04 Jul 2023 11:38:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=36585322</link><dc:creator>tdfirth</dc:creator><comments>https://news.ycombinator.com/item?id=36585322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36585322</guid></item></channel></rss>