<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: leftnode</title><link>https://news.ycombinator.com/user?id=leftnode</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 22 Aug 2026 12:58:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=leftnode" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by leftnode in "Improving Heuristics for A* Pathfinding"]]></title><description><![CDATA[
<p>I remember reading it in 2006 or so to better understand pathfinding algorithms for my data structures and algorithms class.</p>
]]></description><pubDate>Mon, 10 Aug 2026 17:34:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49246976</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=49246976</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49246976</guid></item><item><title><![CDATA[New comment by leftnode in "Why some people mow a lawn better than others"]]></title><description><![CDATA[
<p>Absolutely agree. I could easily afford to hire a lawn crew to cut my lawn, but I enjoy doing it every weekend or two for similar reasons. I have a little under half an acre to mow, but I still enjoy doing it manually with a push mower.<p>Gets me outside and moving, accomplishes something tangible, can catch up on a podcast or two or just get lost in my thoughts, often leads to fixing other odds and ends around the house I've put off.</p>
]]></description><pubDate>Tue, 04 Aug 2026 19:40:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49173916</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=49173916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49173916</guid></item><item><title><![CDATA[New comment by leftnode in "Where .env Went Wrong"]]></title><description><![CDATA[
<p>I suppose I'm spoiled by the Symfony framework which has a robust Secrets Component [0].<p>It allows you to generate a public/private key for each environment: test, dev, and prod (by default). The 'prod' private key can't be committed to the repository. Once the cryptographic keys are generated, you can encrypt any secret you want, and the framework will automatically decrypt it and allow you to access it as an environment variable at runtime.<p>The encrypted values for <i>all</i> environments <i>are</i> committed to the repository. For example, the file for the `$STRIPE_SECRET_KEY` environment variable for the 'dev' environment is a file that has these contents (shortened for readability):<p><pre><code>    <?php // dev.STRIPE_SECRET_KEY.c33678

    return "\x1Dq\x11B6\x5B\xFE7\x9B\xA4\xFE...";
</code></pre>
This solves several problems:<p>1. Keys for the 'dev' and 'test' environments can easily be shared with the team because their public and private keys values <i>are</i> committed to the repository. No more sharing secrets file over Slack or through some other mechanism.<p>2. The private key for the 'prod' environment can be stored in a 3rd party vault so it can be made available to the production servers. You can also decrypt 'prod' secrets during deployment to reduce the decryption overhead for each request.<p>3. At worst, agents would have access to the secrets in the 'test' and 'dev' environments only because they couldn't decrypt 'prod' values locally.<p>4. It forces good practices to ensure you're not using the same secret value for production and non-production environments.<p>It's made secret management so easy I don't even give it a second thought. Do other web frameworks support a system like this?<p>[0] <a href="https://symfony.com/doc/current/configuration/secrets.html" rel="nofollow">https://symfony.com/doc/current/configuration/secrets.html</a></p>
]]></description><pubDate>Tue, 04 Aug 2026 19:36:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49173842</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=49173842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49173842</guid></item><item><title><![CDATA[New comment by leftnode in "Launch HN: Unlayer (YC W22) – Add email and document builders to your app"]]></title><description><![CDATA[
<p>Not the OP, nor do I have any relationship to them, but I've had to build or maintain plenty of these in my time and sure, an LLM can knock out a basic one easily, but there are so many edge cases that need to be accounted for that it gets complex quickly.<p>Congrats on the launch - this looks like a genuinely useful tool. I look forward to checking it out.</p>
]]></description><pubDate>Wed, 22 Jul 2026 18:17:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49011086</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=49011086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49011086</guid></item><item><title><![CDATA[New comment by leftnode in "Advertise in ChatGPT"]]></title><description><![CDATA[
<p>I have absolutely no relationship with OpenAI but maybe give it <i>some</i> time before drawing such a conclusion.</p>
]]></description><pubDate>Tue, 21 Jul 2026 20:24:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48997746</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=48997746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48997746</guid></item><item><title><![CDATA[New comment by leftnode in "GitHub CLI now collects pseudoanonymous telemetry"]]></title><description><![CDATA[
<p>Is it spying if:<p>1. It's anonymous<p>2. They're telling you they're doing it<p>3. You can opt out of it</p>
]]></description><pubDate>Wed, 22 Apr 2026 14:23:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47864102</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=47864102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47864102</guid></item><item><title><![CDATA[New comment by leftnode in "April 2026 TLDR Setup for Ollama and Gemma 4 26B on a Mac mini"]]></title><description><![CDATA[
<p>Does this have a CLI only interface?</p>
]]></description><pubDate>Fri, 03 Apr 2026 14:16:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47626907</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=47626907</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47626907</guid></item><item><title><![CDATA[New comment by leftnode in "I built an AI receptionist for a mechanic shop"]]></title><description><![CDATA[
<p>I build software for contractors (plumbers, electricians, HVAC repair, etc) and they're some of the fastest adopters of these systems. I believe YC has even invested in a few.<p>Regarding the AI receptionists, from the calls I've listened to, there's still a bit of the uncanny valley/overlapping speech issues that I'm unsure are ever fixable just due to latency.<p>But for low margin businesses like contracting and (I imagine) auto repair where labor is your most expensive cost, these owners are doing anything they can to reduce their overhead.</p>
]]></description><pubDate>Mon, 23 Mar 2026 19:06:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47493776</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=47493776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47493776</guid></item><item><title><![CDATA[New comment by leftnode in "Locks in PostgreSQL: 3. Other locks (2020)"]]></title><description><![CDATA[
<p>Yes! Just implemented these the other day for a long running process that I didn't want to lock a specific row for.</p>
]]></description><pubDate>Sun, 07 Dec 2025 16:51:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46183073</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=46183073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46183073</guid></item><item><title><![CDATA[Show HN: I built a simple HTTP request catcher]]></title><description><![CDATA[
<p>I built the HTTP request catcher that I wanted to use. Every other one I've dealt with is slow, bloated with ads, or doesn't let me easily see a listing of past requests. Thus, httpthing was born.<p>It's dead simple to use: send a request to `<a href="https://httpthing.com/{endpoint}" rel="nofollow">https://httpthing.com/{endpoint}</a>` and the request will be logged for you to inspect. A unique URL will be returned so you can easily see the request details in a browser.<p>If you want to see all requests sent to `{endpoint}`, just go to `<a href="https://httpthing.com/_/{endpoint}" rel="nofollow">https://httpthing.com/_/{endpoint}</a>`. Requests are public, so it's best to use a randomly generated `{endpoint}`.<p>Simple, I know, but I've started using it for all of my webhook testing. Let me know if you find it simple and useful as well.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46123204">https://news.ycombinator.com/item?id=46123204</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 02 Dec 2025 16:48:07 +0000</pubDate><link>https://httpthing.com/</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=46123204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46123204</guid></item><item><title><![CDATA[New comment by leftnode in "Production RAG: what I learned from processing 5M+ documents"]]></title><description><![CDATA[
<p>The Qwen3 600M and 4B embedding models are near state of the art and aren't too computationally intensive.</p>
]]></description><pubDate>Mon, 20 Oct 2025 19:10:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45647899</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=45647899</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45647899</guid></item><item><title><![CDATA[Show HN: Free API to extract PDF data]]></title><description><![CDATA[
<p>Hi HN,<p>Like everyone, I'm working on an product that uses LLMs to extract data from photos and documents. Part of the processing pipeline is extracting data from PDFs as raw text or a raster image.<p>As part of our leadgen strategy, we've opened our REST API that lets you process pages of a PDF. The API is completely free to use anonymously, but is rate limited to 1 page per 30 seconds. Creating a free account removes this restriction.<p>The two endpoints are:<p>- <a href="https://extract.dev/api/pages/extract/raster" rel="nofollow">https://extract.dev/api/pages/extract/raster</a> - Rasterize a page of a PDF<p>- <a href="https://extract.dev/api/pages/extract/text" rel="nofollow">https://extract.dev/api/pages/extract/text</a> - Extract text from a page of a PDF<p>Both have the same request format:<p><pre><code>    {
        "file": "https://assets.extract-cdn.com/data/hd-receipt.pdf",
        "page": 1
    }
</code></pre>
I've outlined more of the documentation here: <a href="https://extract.dev/docs" rel="nofollow">https://extract.dev/docs</a><p>Under the hood, the API is using Poppler to extract text and rasterize pages. Note that the text extraction functionality extracts actual text encoded in the PDF, and does not employ an OCR model. Give it a spin, I'm interested in your feedback if this is useful or not.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45581760">https://news.ycombinator.com/item?id=45581760</a></p>
<p>Points: 13</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 14 Oct 2025 16:10:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=45581760</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=45581760</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45581760</guid></item><item><title><![CDATA[New comment by leftnode in "Just let me select text"]]></title><description><![CDATA[
<p>I think that's the point...</p>
]]></description><pubDate>Wed, 24 Sep 2025 15:09:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45361463</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=45361463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45361463</guid></item><item><title><![CDATA[New comment by leftnode in "Why our website looks like an operating system"]]></title><description><![CDATA[
<p>I think the opposite is true. Sure, it's technically impressive, but users have been trained for decades at this point to understand how a basic marketing page should look and this isn't it. These kinds of sites are best left as portfolio pages for designers to show off their skills, not for B2B SaaS landing pages.</p>
]]></description><pubDate>Fri, 12 Sep 2025 11:10:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45220914</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=45220914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45220914</guid></item><item><title><![CDATA[New comment by leftnode in "Show HN: 1 Million Rows"]]></title><description><![CDATA[
<p>The company names look like Amazon merchants.</p>
]]></description><pubDate>Mon, 11 Aug 2025 15:02:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=44864935</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=44864935</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44864935</guid></item><item><title><![CDATA[New comment by leftnode in "Introduction to the A* Algorithm (2014)"]]></title><description><![CDATA[
<p>I have a deep love of A* because it was the first complex algorithm I fully understood. In my first data structures and algorithms in college (early 2000's), we had to pick an algorithm to study, code, and write a paper on and I picked A*.<p>I spent hours painstakingly drawing similar grids that the author of this article made and manually doing the calculations [0]. I still have these notes somewhere, even though they're over 20 years old at this point, because I was so proud of the work I put into it.<p>At any rate, thanks for this article and the trip down memory lane.<p>[0] <a href="https://imgur.com/a/zRYaodL" rel="nofollow">https://imgur.com/a/zRYaodL</a> (apologies for the Imgur link)</p>
]]></description><pubDate>Wed, 18 Jun 2025 16:47:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=44311433</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=44311433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44311433</guid></item><item><title><![CDATA[New comment by leftnode in "Backblaze seemingly does not support files greater than 1 TB"]]></title><description><![CDATA[
<p>Funny quip aside, thanks for bringing Arq to my attention. This looks excellent and isn't enshittified.</p>
]]></description><pubDate>Tue, 04 Feb 2025 12:21:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42931422</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=42931422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42931422</guid></item><item><title><![CDATA[New comment by leftnode in "I still like Sublime Text"]]></title><description><![CDATA[
<p>Yes.</p>
]]></description><pubDate>Wed, 29 Jan 2025 15:49:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42866430</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=42866430</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42866430</guid></item><item><title><![CDATA[New comment by leftnode in "Questions censored by DeepSeek"]]></title><description><![CDATA[
<p>How are you running the Qwen 2.5 Coder 7B model [0]? Running locally using llama.cpp, I asked it to briefly describe what happened in China during the 1989 Tiananmen Square protest and it responded with "I'm unable to engage in discussions regarding political matters due to the sensitive nature of the topic. Please feel free to ask any non-political questions you may have, and I'll be happy to assist."<p>When I asked the same model about what happened during the 1970 Kent State shootings, it gave me exactly what I asked for.<p>[0] <a href="https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct-GGUF/blob/main/qwen2.5-coder-7b-instruct-q8_0-00001-of-00003.gguf" rel="nofollow">https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct-GGUF/b...</a></p>
]]></description><pubDate>Tue, 28 Jan 2025 23:54:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42859730</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=42859730</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42859730</guid></item><item><title><![CDATA[New comment by leftnode in "Show HN: Dumbo – Hono inspired framework for PHP"]]></title><description><![CDATA[
<p>Symfony 7.2 can work as a micro framework, believe it or not: <a href="https://symfony.com/blog/new-in-symfony-7-2-simpler-single-file-symfony-applications" rel="nofollow">https://symfony.com/blog/new-in-symfony-7-2-simpler-single-f...</a></p>
]]></description><pubDate>Mon, 18 Nov 2024 17:15:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42174525</link><dc:creator>leftnode</dc:creator><comments>https://news.ycombinator.com/item?id=42174525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42174525</guid></item></channel></rss>