<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: CharlieDigital</title><link>https://news.ycombinator.com/user?id=CharlieDigital</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 20 Aug 2026 01:08:07 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=CharlieDigital" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by CharlieDigital in "The Unexpected AI Stack: C# + .NET (Part 1)"]]></title><description><![CDATA[
<p>This is a 5 part series that is intentionally (hand) written to help dev teams understand how to scaffold a codebase for agentic engineering by focusing on key, underlying technical decisions and manual wiring <i>before</i> building with AI.  Getting the foundations right helps provide the tools and safeguards for coding agents to iterate more efficiently while reducing slop.<p>Specifically:<p>- Giving agents access to programmable runtime orchestration (Aspire.dev[0])
- Empowering agents to iterate rapidly with <i>runtime mutability</i> (using CSharpRepl[1]) to dynamically modify code at runtime while retaining full application state
- Using the GitHub Copilot SDK to build an agentic core with a multi-platform harness, BYOK, any model provider
- Testcontainers[2] with automatic transactions to streamline and isolate integration tests
- A well-documented, AI-friendly UI framework (Nuxt UI[3])
- Logging and telemetry to give agents insights and visibility into the runtime state of the application<p>The core setup is used at a series C, post-YC startup to ship fast with AI while maintaining high quality standards (in combination with other tools facilitating code review and context management)<p><i>Part 1</i> (<a href="https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-1/" rel="nofollow">https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-cs...</a>) is an intro into a few key parts of this stack.<p><i>Part 2</i> (<a href="https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-2/" rel="nofollow">https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-cs...</a>) is focused on walking through the hands on scaffolding.<p><i>Part 3</i> (<a href="https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-3/" rel="nofollow">https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-cs...</a>) covers wiring GitHub Copilot SDK as an agent runtime and incorporating CSharpRepl to allow agents to dynamically work with the runtime DI container<p><i>Part 4</i> (<a href="https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-4/" rel="nofollow">https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-cs...</a>) wires up the test harness using Testcontainers to give agents isolated test environments<p><i>Part 5</i> (<a href="https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-5/" rel="nofollow">https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-cs...</a>) wires up logging and telemetry to give agents visibility into runtime state and I start to build the prototype application now that the foundations are ready.<p>---<p>The project repo is here: <a href="https://github.com/zeeq-ai/zeeq-tmpl" rel="nofollow">https://github.com/zeeq-ai/zeeq-tmpl</a> (be sure to check the branches; main is currently the base code only)<p>I encourage working through the posts since the goal is to underscore the platform level decision making process and assembly of the foundational core.<p>[0] <a href="https://aspire.dev/" rel="nofollow">https://aspire.dev/</a><p>[1] <a href="https://fuqua.io/CSharpRepl/" rel="nofollow">https://fuqua.io/CSharpRepl/</a><p>[2] <a href="https://testcontainers.com/" rel="nofollow">https://testcontainers.com/</a><p>[3] <a href="https://ui.nuxt.com/" rel="nofollow">https://ui.nuxt.com/</a></p>
]]></description><pubDate>Mon, 17 Aug 2026 15:31:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=49332693</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49332693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49332693</guid></item><item><title><![CDATA[The Unexpected AI Stack: C# + .NET (Part 1)]]></title><description><![CDATA[
<p>Article URL: <a href="https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-1/">https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-1/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49332692">https://news.ycombinator.com/item?id=49332692</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 17 Aug 2026 15:31:51 +0000</pubDate><link>https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-1/</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49332692</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49332692</guid></item><item><title><![CDATA[New comment by CharlieDigital in "DeepSeek Harness developer preview"]]></title><description><![CDATA[
<p>Everyone thinks their workflow is a special snowflake.<p>Truth is that useful dev workflows and tooling probably coalesces in a tight band.  There's really no point in re-inventing the wheel over and over again at this level (the raw tooling).</p>
]]></description><pubDate>Thu, 13 Aug 2026 23:42:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49293115</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49293115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49293115</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Ask HN: What are you working on? (August 2026)"]]></title><description><![CDATA[
<p>I'm (solo) spinning off the internal agent knowledge and observability layer used at Motion (YC W20, series C, ~40 devs).  It was born out of a need to lift all devs using heterogeneous models, harnesses, and prompting styles to a higher level of consistency and quality while surfacing the visibility to see what's working and what's not.  The knowledge layer is integrated into the code review layer and all of it tied together with telemetry to the document section level to see how each piece of context is affecting code generation.<p>Open source repo (.NET 10 + C# + Postgres): <a href="https://github.com/zeeq-ai/zeeq-app" rel="nofollow">https://github.com/zeeq-ai/zeeq-app</a><p>Docs and more info: <a href="https://zeeq.ai" rel="nofollow">https://zeeq.ai</a></p>
]]></description><pubDate>Mon, 10 Aug 2026 01:10:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49238111</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49238111</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49238111</guid></item><item><title><![CDATA[MCP Is Dead; Long Live MCP – Revisited]]></title><description><![CDATA[
<p>Article URL: <a href="https://chrlschn.dev/blog/2026/08/mcp-is-dead-long-live-mcp/">https://chrlschn.dev/blog/2026/08/mcp-is-dead-long-live-mcp/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49221508">https://news.ycombinator.com/item?id=49221508</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 08 Aug 2026 13:05:15 +0000</pubDate><link>https://chrlschn.dev/blog/2026/08/mcp-is-dead-long-live-mcp/</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49221508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49221508</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Stateless MCP has recaptured my interest"]]></title><description><![CDATA[
<p>MCP is even more important now in enterprise and thus the shift towards the streamable, stateless HTTP server implementation.</p>
]]></description><pubDate>Fri, 07 Aug 2026 14:51:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49211388</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49211388</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49211388</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Stateless MCP has recaptured my interest"]]></title><description><![CDATA[
<p>It isn't.<p>MCP over streamable HTTP is just JSON RPC payload over HTTP.<p>The internal interface for the ChatGPT app and Coded are all MCP based (stdio on local).<p>All enterprise AI rollout is eventually going to converge on MCP as a key piece of that infra because it can mask credentials behind one gateway that's easier to control and more secure.</p>
]]></description><pubDate>Fri, 07 Aug 2026 14:50:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49211363</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49211363</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49211363</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Pi's Minimalism Is Its Advantage"]]></title><description><![CDATA[
<p>how many extensions do you need for browsing the web?  Adblocker.  Not much else because the browser already does the important work.<p>Same with any of the off the shelf harnesses.<p>Go build something useful instead of tweaking the minutiae of the harness.</p>
]]></description><pubDate>Wed, 05 Aug 2026 04:31:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49178579</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49178579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49178579</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Stateless MCP has recaptured my interest"]]></title><description><![CDATA[
<p>Stateless MCP was already possible before this and made sense for whole classes of use cases where it helps to have a remote fleet of servers.<p>Wrote about this back in March: <a href="https://chrlschn.dev/blog/2026/03/mcp-is-dead-long-live-mcp/" rel="nofollow">https://chrlschn.dev/blog/2026/03/mcp-is-dead-long-live-mcp/</a><p>MCP is going to be a foundational piece of enterprise agent infra.</p>
]]></description><pubDate>Wed, 05 Aug 2026 04:28:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49178562</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49178562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49178562</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Pi's Minimalism Is Its Advantage"]]></title><description><![CDATA[
<p>End up building Pi extensions instead of actual product.<p>Doesn't make sense to me, but to each their own.</p>
]]></description><pubDate>Wed, 05 Aug 2026 00:11:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=49176991</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=49176991</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49176991</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Codex logging bug may write TBs to local SSDs"]]></title><description><![CDATA[
<p>> ...Do they just want to force you to keep busy<p>Given functionally unlimited access to tokens with frontier models, there is really no "force you to keep busy"; it should just bake overnight.  We're talking about a rather simple and well-defined specification; not something novel and complex.</p>
]]></description><pubDate>Mon, 22 Jun 2026 16:12:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48632160</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48632160</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48632160</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Codex logging bug may write TBs to local SSDs"]]></title><description><![CDATA[
<p>Anthropic were the progenitors of the Model Context Protocol.  Claude Code does not fully implement the client end of the protocol.  A protocol; a literal pre-defined spec that an agent should be able to one-shot.  Neither does Codex.  Codex does not implement MCP Prompts.<p>(I want Codex to implement MCP Prompts because then we have one central way to ship skills from a server).<p>The fact that neither platform can implement <i>a protocol</i> given what is functionally infinite frontier model tokens really says a lot.  I do not care what kind of random project some influencer can ship with a swarm of 1000 agents.  If you cannot make the basics work, it is a farce.</p>
]]></description><pubDate>Mon, 22 Jun 2026 11:12:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48628617</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48628617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48628617</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Fruit Is Too Sweet"]]></title><description><![CDATA[
<p>Pink Lady, Snapdragon, Sweetango are all probably closer to alanced compared to Cosmic Crisp.  Cosmic Crisp being more tart than Sugarbee, but still definitely more sweet than tart in flavor profile IMO.<p>Sweetango and Pink Lady are probably what I would consider balanced sweet and tart.</p>
]]></description><pubDate>Mon, 15 Jun 2026 20:20:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48546519</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48546519</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48546519</guid></item><item><title><![CDATA[New comment by CharlieDigital in "The only scalable delete in Postgres is DROP TABLE"]]></title><description><![CDATA[
<p><p><pre><code>    > And you cannot keep doing high concurrent DROP TABLEs to run your large scale CRUD app
</code></pre>
In this kind of use case/design, I would assume it would make use of partitions to make this more palatable in which case it would seem that you would bypass this issue of "high concurrent DROP TABLE".  Large scale CRUD app just points to recent-ish partitions.  Old partitions are either going to be low or on access and can be dropped easily or transformed/transferred into some long term/cold storage.</p>
]]></description><pubDate>Sun, 14 Jun 2026 17:30:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48530055</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48530055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48530055</guid></item><item><title><![CDATA[New comment by CharlieDigital in "pg_durable: Microsoft open sources in-database durable execution"]]></title><description><![CDATA[
<p>A few things are not clear to me from reading through docs and examples:<p><pre><code>    df.wait_for_schedule()
</code></pre>
How does this call work?  Is it idempotent if I call it from an application?  If I run it 2x with the same parameters, does it double tick?  Am I invoking this manually from a query console to only do this one time?  Am I running this as part of a migration script?<p>For this[0]:<p><pre><code>    -- Wait for human signal (5 minute timeout)
    ~> (df.wait_for_signal('approval', 300) |=> 'sig')

    ~> df.if(
        $$SELECT NOT ($sig::jsonb->>'timed_out')::boolean
            AND ($sig::jsonb->'data'->>'approved')::boolean$$,
</code></pre>
Is the `timed_out` a fixed constant that is returned on timeout?<p>Also not immediately clear: how to handle errors/exceptions?<p>[0] <a href="https://github.com/microsoft/pg_durable/blob/main/examples/invoice-approval/sql/05_start_workflow.sql" rel="nofollow">https://github.com/microsoft/pg_durable/blob/main/examples/i...</a></p>
]]></description><pubDate>Fri, 05 Jun 2026 19:20:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48416974</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48416974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48416974</guid></item><item><title><![CDATA[New comment by CharlieDigital in "VoidZero Is Joining Cloudflare"]]></title><description><![CDATA[
<p>Really good talk that goes over this: <a href="https://corecursive.com/vue-with-evan-you/" rel="nofollow">https://corecursive.com/vue-with-evan-you/</a><p>Totally worth the listen.</p>
]]></description><pubDate>Thu, 04 Jun 2026 19:57:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48403829</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48403829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48403829</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Uber's $1,500/month AI limit is a useful signal for AI tool pricing"]]></title><description><![CDATA[
<p><p><pre><code>    > We are shipping more features
</code></pre>
That's not really the important question; the important question: <i>is it generating revenue</i>.<p>If you increase your spend -> ship more features -> no correlated increase in revenue, that's just burning money.<p>If a team of 10 spends 1 extra headcount ($180k/year) and ships features with no corresponding growth in revenue, what does that mean?<p>There was probably a reason it was on the backlog (because it didn't really have value).</p>
]]></description><pubDate>Wed, 03 Jun 2026 19:55:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48389092</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48389092</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48389092</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Uber's $1,500/month AI limit is a useful signal for AI tool pricing"]]></title><description><![CDATA[
<p>Even if the laptop costs $5k and you upgrade it every year with the latest hardware and run local models (assuming your workload can tolerate smaller models at slower tok/s), you win.</p>
]]></description><pubDate>Wed, 03 Jun 2026 19:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48389043</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48389043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48389043</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Uber's $1,500/month AI limit is a useful signal for AI tool pricing"]]></title><description><![CDATA[
<p>That's because for some of these folks, the cost of the tokens doesn't have to match the value of the output; the hype from the story is all they need.<p>Normal people have to produce something of value from that spend.  So starting 100 agents and then waking up to something cool but useless just means you spent a few thousand dollars and created nothing of value............</p>
]]></description><pubDate>Wed, 03 Jun 2026 17:47:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48387204</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48387204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48387204</guid></item><item><title><![CDATA[New comment by CharlieDigital in "Uber's $1,500/month AI limit is a useful signal for AI tool pricing"]]></title><description><![CDATA[
<p>You're a content creator; you define your revenue stream.<p>Uber engineers do not define their revenue stream; the product leadership team does.<p>$1500/mo of AI spend by engineers does not equate to revenue.  They need to figure out revenue first before zeroing in on AI spend.</p>
]]></description><pubDate>Wed, 03 Jun 2026 14:25:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48384576</link><dc:creator>CharlieDigital</dc:creator><comments>https://news.ycombinator.com/item?id=48384576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48384576</guid></item></channel></rss>