<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: dustfinger</title><link>https://news.ycombinator.com/user?id=dustfinger</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 27 Apr 2026 17:48:42 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dustfinger" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by dustfinger in "An AI agent deleted our production database. The agent's confession is below"]]></title><description><![CDATA[
<p>It would be interestingi to know if AI is less likely to follow rules if the instructions provided to it contain foul or demeaning language. Too bad we couldn't re-play the scenario replacing NEVER F*<i>ING GUESS! with:<p>**Never guess**<p><pre><code>   - All behavioral claims must be derived from source, docs, tests, or direct command output.

   - If you cannot point to exact evidence, mark it as unknown.

   - If a signature, constant, env var, API, or behavior is not clearly established, say so.</code></pre></i></p>
]]></description><pubDate>Sun, 26 Apr 2026 20:28:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47913995</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=47913995</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47913995</guid></item><item><title><![CDATA[New comment by dustfinger in "New 'negative light' technology hides data transfers in plain sight"]]></title><description><![CDATA[
<p>> Only a receiver with the right equipment can pick up the hidden message.<p>So all an eavesdropper has to do is setup the right equipment then? I guess it is only invisible until the technology becomes more widely available.</p>
]]></description><pubDate>Fri, 13 Mar 2026 22:28:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47370827</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=47370827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47370827</guid></item><item><title><![CDATA[New comment by dustfinger in "Living human brain cells play DOOM on a CL1 [video]"]]></title><description><![CDATA[
<p>> We’ve combined lab-grown neurons with silicon chips and made it available to anyone, for first time ever.<p>There is a line somewhere here that I personally feel we should not cross.</p>
]]></description><pubDate>Sun, 08 Mar 2026 16:17:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47298517</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=47298517</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47298517</guid></item><item><title><![CDATA[Etymology of the Word W00T]]></title><description><![CDATA[
<p>Article URL: <a href="https://en.wiktionary.org/wiki/w00t">https://en.wiktionary.org/wiki/w00t</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46641173">https://news.ycombinator.com/item?id=46641173</a></p>
<p>Points: 5</p>
<p># Comments: 3</p>
]]></description><pubDate>Thu, 15 Jan 2026 23:50:08 +0000</pubDate><link>https://en.wiktionary.org/wiki/w00t</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46641173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46641173</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>Appreciate this breakdown and the disclosure.<p>+1 for highlighting that PR quality is the bottleneck. Garbage-in/garbage-out is exactly what I ran into and it’s why I’m planning to introduce PR templates so the why/what changed/impact is consistently present. For sparse PR bodies, I also optionally add truncated diff context for the LLM summary so the output isn’t just a long list of raw PR titles.<p>Also agree there is a split between dev-facing changelogs vs user-facing release comms that need to land where users are. What I built is aimed at the "developer-consumer" audience, people using the library, not contributing to it: it renders into our docs and is meant to be readable as a curated changelog, not a raw list of commits.</p>
]]></description><pubDate>Wed, 14 Jan 2026 00:38:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46610761</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46610761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46610761</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>I agree that the best quality notes are the ones hand written by a thoughtful human. In my case we had about two years of history with no curated notes, and writing that by hand would have meant significant time investment vs shipping fixes and features. The generator helped us get coverage fast, organized the notes chronologically and categorically. I specifically designed the generator with your your concern in mind, in that it preserves manual edits as well as omissions, so we can gradually curate it into something we are proud of.</p>
]]></description><pubDate>Tue, 13 Jan 2026 17:10:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46603998</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46603998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46603998</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>I agree with the philosophy of curating release notes for the consumer of the release. When I first started looking for a release notes strategy, I was considering towncrier for that exact reason. You are also right that commit messages are not intended for the consumer of the release, but a dialogue between developers.<p>Your points are well received and largely why I went PR-based (title/body with optional GitHub metadata) instead of commit-based. A PR title and body tend to be focused on the deliverable, whereas commit messages are narrowly focused on the code change at that moment with developers as the intended audience.<p>Re: git-cliff, I honestly hadn’t evaluated this one, but it looks solid for commit-driven changelogs. I like the rationale behind conventional commits being parsable and templates enforcing consistency. What constraints pushed you toward git-cliff vs writing release notes by hand, and do you have a config/template you have found works well for surfacing breaking changes?</p>
]]></description><pubDate>Mon, 12 Jan 2026 20:14:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46593593</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46593593</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46593593</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>Yeah, that matches what I have seen: if the upstream metadata isn’t reliable, automation can amplify the mess.<p>I tried to avoid relying solely on contributors to accurately label or tag things correctly. The script is tag-driven only for release boundaries (version tags), while categorization is derived from PR title & body with optional GitHub metadata. The script is idempotent and preserves edits/omissions so you can correct the few bad ones post-generation.<p>If you are curious, I am happy to share my script and would be genuinely interested whether it reduces the manual cleanup for your workflow. Also, if you run it with `--ai --github` and a PR body is sparse, it fetches a truncated PR diff and uses that as extra context for the LLM summary.</p>
]]></description><pubDate>Mon, 12 Jan 2026 18:56:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46592635</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46592635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46592635</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>+1 on separating "how to upgrade" due to breaking changes from "what’s new". A dedicated BREAKING.md / MIGRATIONS.md is a really good idea.<p>One thing I am trying to do is make the generator surface breaking/migration items explicitly, but I still think anything that requires human judgment (migration steps, caveats) should be hand-curated in a dedicated document like you suggested.</p>
]]></description><pubDate>Mon, 12 Jan 2026 18:11:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46592073</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46592073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46592073</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>I hear what you are saying, there is a risk that auto-generated release notes end up as PR-title soup. I put a lot of effort in my script to mitigate against that.<p>If you are willing and interested enough to take a quick look, here is what my script generated for our 2025 changelog (no hand-curation yet, this is the raw output):<p><a href="https://raw.githubusercontent.com/confident-ai/deepeval/refs/heads/main/docs/changelog/changelog-2025.mdx" rel="nofollow">https://raw.githubusercontent.com/confident-ai/deepeval/refs...</a><p>I am curious: does this still seem too noisy in your opinion, or is it getting closer? And what would you want to see for breaking changes/migrations to make it actually useful?<p>I now have 2024 & 2025 generated; to fully hand-curate two years of history just wasn’t practical, so I’m trying to get the "80% draft" automatically and then curate over time.</p>
]]></description><pubDate>Mon, 12 Jan 2026 18:09:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46592040</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46592040</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46592040</guid></item><item><title><![CDATA[New comment by dustfinger in "Ask HN: How do you automate your release notes?"]]></title><description><![CDATA[
<p>That has been my concern as well. The script I wrote tries to bucket entries into categories, including "Backward Incompatible Change" so those are easier to spot. Since it is automated I am trading some accuracy for time saved, which seemed like the only practical choice for me, since I had to backfill a lot of history, but it’s been surprisingly decent so far.<p>I am also planning to add some PR templates so contributors include the context up front, which should make any release note generation more accurate.<p>Are you using any tooling to help with changelog curration? I know towncrier is all about fragments, so contributors must had write a brief summary of their contribution, which would be more in-line with your preference.</p>
]]></description><pubDate>Mon, 12 Jan 2026 16:45:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46590950</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46590950</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46590950</guid></item><item><title><![CDATA[Ask HN: How do you automate your release notes?]]></title><description><![CDATA[
<p>How are you generating release notes in your projects?<p>I just had to backfill a year of docs release notes for an OSS repo. I ended up writing a small release tag driven generator: it walks git tags, collects merged PRs between releases, buckets them into categories, and renders Markdown/MDX grouped by year -> month -> category -> version. I also added an optional LLM step that outputs structured JSON via Pydantic schema for PR bullets that includes monthly summaries. It is idempotent and preserves manual edits or omissions, so you can auto-generate, then curate over time.<p>I’m curious what works for you in practice:<p>- Towncrier?<p>- reno?<p>- GitHub Releases / auto-generated notes?<p>- something else?<p>What do you like/hate about your current setup? Any tools you’d recommend?<p>If anyone wants to see the script I wrote, I am happy to share it and would love some constructive feedback.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46590623">https://news.ycombinator.com/item?id=46590623</a></p>
<p>Points: 10</p>
<p># Comments: 15</p>
]]></description><pubDate>Mon, 12 Jan 2026 16:25:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46590623</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46590623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46590623</guid></item><item><title><![CDATA[Play chess via Slack DMs or SMS using an ASCII board]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/dvelton/dm-chess">https://github.com/dvelton/dm-chess</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46580506">https://news.ycombinator.com/item?id=46580506</a></p>
<p>Points: 32</p>
<p># Comments: 16</p>
]]></description><pubDate>Sun, 11 Jan 2026 21:44:36 +0000</pubDate><link>https://github.com/dvelton/dm-chess</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46580506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46580506</guid></item><item><title><![CDATA[New comment by dustfinger in "Show HN: Tag driven changelog generator (MDX) with optional LLM summaries"]]></title><description><![CDATA[
<p>I am curious what are people using for release notes in their own projects? Towncrier, GitHub Releases, something else?<p>If anyone tries my script on their repo and runs into issues, I am happy to help troubleshoot. Also, the output is actually plain Markdown (no JSX). The only Docusaurus specific bit is the YAML frontmatter header. If you are not using Docusaurus, you can just strip that header and rename .mdx to .md.</p>
]]></description><pubDate>Sun, 11 Jan 2026 19:17:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46578861</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46578861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46578861</guid></item><item><title><![CDATA[Show HN: Tag driven changelog generator (MDX) with optional LLM summaries]]></title><description><![CDATA[
<p>I built a tag-driven changelog generator for an OSS project I maintain and used it to backfill our 2025 docs changelog.<p>It walks git tags, finds merged PRs between releases, buckets them into categories, and renders MDX (Docusaurus in our case) organized by year -> month -> category -> version. There is an optional LLM mode that produces structured JSON via a Pydantic schema for PR entry and monthly summaries.<p>Example:<p>python .scripts/changelog/generate.py --year 2025 --github --ai --ai-model gpt-5.2
(or --help)<p>Gotcha: if you use --github, set GITHUB_TOKEN or you will most likely hit GitHub rate limits.<p>Repo script: <a href="https://github.com/confident-ai/deepeval/blob/main/.scripts/changelog/generate.py" rel="nofollow">https://github.com/confident-ai/deepeval/blob/main/.scripts/...</a><p>Disclosure: I maintain DeepEval. Happy to answer questions and take feedback.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46569948">https://news.ycombinator.com/item?id=46569948</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 10 Jan 2026 21:10:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46569948</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46569948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46569948</guid></item><item><title><![CDATA[New comment by dustfinger in "Prompt caching for cheaper LLM tokens"]]></title><description><![CDATA[
<p>I realize cache segregation is mainly about security/compliance and tenant isolation, not protecting secret prompts. Still, if someone obtained access to a company’s prompt templates/system prompts, analyzing them could reveal:<p>- Product logic / decision rules, such as: when to refund, how to triage tickets<p>- Internal taxonomies, schemas, or tool interfaces<p>- Safety and policy guardrails (which adversaries could try to route around)<p>- Brand voice, strategy, or proprietary workflows<p>That is just off the top of my head.</p>
]]></description><pubDate>Fri, 19 Dec 2025 18:13:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46328972</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46328972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46328972</guid></item><item><title><![CDATA[New comment by dustfinger in "Prompt caching for cheaper LLM tokens"]]></title><description><![CDATA[
<p>I wonder if there is valuable information that can be learned by studying a companies prompts? There may be reasons why some companies want their prompts private.</p>
]]></description><pubDate>Fri, 19 Dec 2025 15:46:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46327078</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46327078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46327078</guid></item><item><title><![CDATA[New comment by dustfinger in "Using TypeScript to obtain one of the rarest license plates"]]></title><description><![CDATA[
<p>Ouch!</p>
]]></description><pubDate>Thu, 18 Dec 2025 16:56:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=46315266</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46315266</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46315266</guid></item><item><title><![CDATA[New comment by dustfinger in "Using TypeScript to obtain one of the rarest license plates"]]></title><description><![CDATA[
<p>What we need is a "Little Bobby Tables" vanity plate that exploits a buffer overflow in speed cams.</p>
]]></description><pubDate>Thu, 18 Dec 2025 15:40:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46314026</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46314026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46314026</guid></item><item><title><![CDATA[New comment by dustfinger in "Tell HN: HN was down"]]></title><description><![CDATA[
<p>True. how about <a href="https://ycombinator-status.com" rel="nofollow">https://ycombinator-status.com</a> or <a href="https://status.ycombinator.com" rel="nofollow">https://status.ycombinator.com</a>. They can drop that link on their official ycombinator.com site just so it is easy to tell that it is legit when they are not down. They can maintain the status for all of their official sites there. Well, with the exception of ycombinator-status.com of course. I guess they can post that status on some-sketchy-domain/status-right-now - LOL!<p>Maybe ycombinator does have an official status page somewhere, but it is not easy to find if that is the case.</p>
]]></description><pubDate>Wed, 17 Dec 2025 21:04:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46305485</link><dc:creator>dustfinger</dc:creator><comments>https://news.ycombinator.com/item?id=46305485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46305485</guid></item></channel></rss>