<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: zmj</title><link>https://news.ycombinator.com/user?id=zmj</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 03:57:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=zmj" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by zmj in "Ask HN: How is AI-assisted coding going for you professionally?"]]></title><description><![CDATA[
<p>It's great. I'd guess 80-90% of my code is produced in Copilot CLI sessions since the beginning of the year. Copilot CLI is worse than Claude Code, but not by a huge amount. This is mostly working in established 100k+ LOC codebases in C# and TypeScript, with a couple greenfield new projects. I have to write more code by hand in the greenfield projects at their formative stage; LLMs do better following conventions in an existing codebase than being consistent in a new one.<p>Important things I've figured out along the way:<p>1. Enable the agent to debug and iterate. Whatever you'd do to test and verify after you write your first pass at an implementation, figure out a way for an agent to do it too. For example: every API call is instrumented with OpenTelemetry, and the agent has a local collector to query.<p>2. Make scripts or skills to increase the reliability of fallible multi-step processes that need to be repeated often. For example: getting an oauth token to call some api with the appropriate user scopes for the task.<p>3. Continually revise your AGENTS.md. I'll often end a coding session by asking the agent whether there's anything from this session that should be captured there. That adds more than it removes, so every few days I'll compact it by having an agent reword the important stuff for conciseness and get rid anything obvious from implementation.</p>
]]></description><pubDate>Sun, 15 Mar 2026 20:51:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47391754</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=47391754</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47391754</guid></item><item><title><![CDATA[New comment by zmj in "President Trump bans Anthropic from use in government systems"]]></title><description><![CDATA[
<p>This is the happy ending.</p>
]]></description><pubDate>Fri, 27 Feb 2026 22:06:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47186336</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=47186336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47186336</guid></item><item><title><![CDATA[New comment by zmj in "Claws are now a new layer on top of LLM agents"]]></title><description><![CDATA[
<p>I also like the callback - not sure if it's intentional - to Stross's "Lobsters" (short story that turned into the novel Accelerando).</p>
]]></description><pubDate>Sat, 21 Feb 2026 23:25:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47106133</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=47106133</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47106133</guid></item><item><title><![CDATA[New comment by zmj in "Cloudflare outage on February 20, 2026"]]></title><description><![CDATA[
<p>Testing the "whole system" for a mature enterprise product is quite difficult. The combinatorial explosion of account configurations and feature usage becomes intractable on two levels: engineers can't anticipate every scenario they need their tests to cover (because the product is too big understand the whole of), and even if comprehensive testing was possible - it would be impractical on some combination of time, flakiness, and cost.</p>
]]></description><pubDate>Sat, 21 Feb 2026 22:23:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47105465</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=47105465</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47105465</guid></item><item><title><![CDATA[New comment by zmj in "Infrastructure decisions I endorse or regret after 4 years at a startup (2024)"]]></title><description><![CDATA[
<p>Separate! You lose the flexibility to move logic between the application and the database when the database is its own API.</p>
]]></description><pubDate>Fri, 20 Feb 2026 16:41:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47090309</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=47090309</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47090309</guid></item><item><title><![CDATA[New comment by zmj in "Ask HN: Why is my Claude experience so bad? What am I doing wrong?"]]></title><description><![CDATA[
<p>Try this:<p>* have Claude produce wireframes of the screens you want. Iterate on those and save them as images.<p>* then develop. Make sure Claude has the ability to run the app, interact with controls, and take screenshots.<p>* loop autonomously until the app looks like the wireframes.<p>Feedback loops are required. Only very simple problems get one-shot.</p>
]]></description><pubDate>Sun, 15 Feb 2026 21:53:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47028007</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=47028007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47028007</guid></item><item><title><![CDATA[New comment by zmj in "Beyond agentic coding"]]></title><description><![CDATA[
<p>I like this thought. Scaling review is definitely a bottleneck (for those of us who are still reading the code), and spending some tokens to make it easier seems worthwhile.</p>
]]></description><pubDate>Sun, 08 Feb 2026 14:55:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=46934713</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46934713</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46934713</guid></item><item><title><![CDATA[New comment by zmj in "Claude Code is your customer"]]></title><description><![CDATA[
<p>Yesterday I had it using an internal library without documentation or source code. LSP integration wasn't working. It didn't have decompilation tools or the ability to download them.<p>I came back to my terminal to find it had written its own tool to decompile the assembly, and successfully completed the task using that info.</p>
]]></description><pubDate>Sat, 31 Jan 2026 21:39:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46841134</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46841134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46841134</guid></item><item><title><![CDATA[New comment by zmj in "AI’s impact on engineering jobs may be different than expected"]]></title><description><![CDATA[
<p>Paying money to abstract over lower level concerns is civilization.</p>
]]></description><pubDate>Fri, 30 Jan 2026 02:09:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46819761</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46819761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46819761</guid></item><item><title><![CDATA[New comment by zmj in "How I estimate work"]]></title><description><![CDATA[
<p>I was prepared to disagree with the thesis that estimation is impossible. I've had a decent record at predicting a project timeline that actually tracked with the actual development. I agree with the idea that most of the work is unknown, but it's bounded uncertainty: you can still assert "this blank space on the map is big enough to hold a wyvern, but not an adult dragon" and plan accordingly.<p>But the author's assessment of the role that estimates play in an organization also rings true. I've seen teams compare their estimates against their capacity, report that they can't do all this work; priorities and expected timelines don't change. Teams find a way to deliver through some combination of cutting scope or cutting corners.<p>The results are consistent with the author's estimation process - what's delivered is sized to fit the deadline. A better thesis might have been "estimates are useless"?</p>
]]></description><pubDate>Sat, 24 Jan 2026 22:53:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46748567</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46748567</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46748567</guid></item><item><title><![CDATA[New comment by zmj in "Claude's new constitution"]]></title><description><![CDATA[
<p>Mid-level scissor statement?</p>
]]></description><pubDate>Thu, 22 Jan 2026 05:32:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46715666</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46715666</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46715666</guid></item><item><title><![CDATA[New comment by zmj in "The assistant axis: situating and stabilizing the character of LLMs"]]></title><description><![CDATA[
<p>I wrote something fiction-ish about this dynamic last year: <a href="https://zmj.dev/author_assistant.html" rel="nofollow">https://zmj.dev/author_assistant.html</a></p>
]]></description><pubDate>Tue, 20 Jan 2026 04:42:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46687993</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46687993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46687993</guid></item><item><title><![CDATA[New comment by zmj in "Dev-owned testing: Why it fails in practice and succeeds in theory"]]></title><description><![CDATA[
<p>At scale, every test is flaky.</p>
]]></description><pubDate>Sat, 17 Jan 2026 03:07:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46654879</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46654879</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46654879</guid></item><item><title><![CDATA[New comment by zmj in "A deep dive on agent sandboxes"]]></title><description><![CDATA[
<p>devcontainers, devcontainers, devcontainers</p>
]]></description><pubDate>Wed, 14 Jan 2026 01:23:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46611129</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46611129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46611129</guid></item><item><title><![CDATA[New comment by zmj in "Don't fall into the anti-AI hype"]]></title><description><![CDATA[
<p>My experience with agents in larger / older codebases is that feedback loops are critical. They'll get it somewhere in the neighborhood of right on the first attempt; it's up to your prompt and tooling to guide them to improve it on correctness and quality. Basic checks: can the agent run the app, interact with it, and observe its state? If not, you probably won't get working code. Quality checks: by default, you'll get the same code quality as the code the agent reads while it's working; if your linters and prompts don't guide it towards your desired style, you won't get it.<p>To put that another way: one-shots attempts aren't where the win is in big codebases. Repeat iteration is, as long as your tooling steers it in the right direction.</p>
]]></description><pubDate>Mon, 12 Jan 2026 22:49:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=46595286</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46595286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46595286</guid></item><item><title><![CDATA[New comment by zmj in "Start your meetings at 5 minutes past"]]></title><description><![CDATA[
<p>A friend of mine built something for this: <a href="https://howmuch.poiesic.com/" rel="nofollow">https://howmuch.poiesic.com/</a></p>
]]></description><pubDate>Sat, 10 Jan 2026 14:14:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46565881</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46565881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46565881</guid></item><item><title><![CDATA[New comment by zmj in "Go away Python"]]></title><description><![CDATA[
<p>I wrote my first one of these today (making a tool for agents in a c# codebase). Pretty good experience, though AOT does still have some rough edges.</p>
]]></description><pubDate>Tue, 30 Dec 2025 22:09:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46438614</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46438614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46438614</guid></item><item><title><![CDATA[New comment by zmj in "Karpathy on Programming: “I've never felt this much behind”"]]></title><description><![CDATA[
<p>Yes-ish. It's worth keeping up with the rising tide of model capabilities, but it's not worth stressing over eliciting every last drop. Many of the specific techniques that add value today will be wasted effort with smarter models in a month or two.</p>
]]></description><pubDate>Tue, 30 Dec 2025 03:35:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46429265</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46429265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46429265</guid></item><item><title><![CDATA[New comment by zmj in "Ask HN: How are you sandboxing coding agents?"]]></title><description><![CDATA[
<p>devcontainers, without credentials to the git remote.</p>
]]></description><pubDate>Sat, 27 Dec 2025 15:05:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46402342</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46402342</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46402342</guid></item><item><title><![CDATA[New comment by zmj in "Comptime – C# meta-programming with compile-time code generation and evaluation"]]></title><description><![CDATA[
<p>Those collections are more like copy-on-write than actual immutable. System.Collections.Frozen is the real thing.</p>
]]></description><pubDate>Thu, 25 Dec 2025 22:43:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46387501</link><dc:creator>zmj</dc:creator><comments>https://news.ycombinator.com/item?id=46387501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46387501</guid></item></channel></rss>