<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Coding on blog.iankulin.com</title><link>https://blog.iankulin.com/tags/coding/</link><description>Recent content in Coding on blog.iankulin.com</description><generator>Hugo</generator><language>en-AU</language><lastBuildDate>Thu, 20 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.iankulin.com/tags/coding/index.xml" rel="self" type="application/rss+xml"/><item><title>Good AI Questions</title><link>https://blog.iankulin.com/good-ai-questions/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.iankulin.com/good-ai-questions/</guid><description>&lt;p&gt;Manuel Schipper writes in his blog this week about &lt;a href="https://schipper.ai/posts/technical-leaders-should-have-the-largest-ai-exhaust/"&gt;&amp;ldquo;Technical leaders should have the largest AI exhaust&amp;rdquo;&lt;/a&gt;. The thesis is that engineering leaders should be investing time (and tokens) in figuring out how to be effective with LLM tools, but most interesting for me was the set of open questions about AI development he proposes.&lt;/p&gt;&#10;&lt;p&gt;I won&amp;rsquo;t re-produce them here, since it&amp;rsquo;s about half of his short post (you should just read it). But it does prompt me to document yet again, how I&amp;rsquo;m currently using LLMs for web development.&lt;/p&gt;&#10;&lt;p&gt;I use LLMs in deliberately small stages, with explicit, supervised hand-offs between them, so that I can review the work before unhelpful paths are taken. My theory is that this is making the best use of the AI &lt;em&gt;and&lt;/em&gt; me.&lt;/p&gt;&#10;&lt;h2 id="themes"&gt;Themes&lt;/h2&gt;&#10;&lt;h3 id="context-management"&gt;Context management&lt;/h3&gt;&#10;&lt;p&gt;Along with Manuel, I continue to feel this is one of the most important concepts. Current models can have huge context windows, but whenever I get rubbish from an LLM that I can detect, it&amp;rsquo;s as part of large-context process. To avoid this, all of my work is broken into short chunks, usually aimed at producing a markdown summary that will be part of the input into the next stage. I&amp;rsquo;m constantly &lt;code&gt;/clear&lt;/code&gt;ing to start with an empty context. I delete these documents once they are translated into code to stop the LLM from absorbing them in its own quest for context.&lt;/p&gt;&#10;&lt;p&gt;Functional decomposition is as important as it ever was. I spend proportionally more time on this now; thinking about how the code is arranged and how processes are broken into parts. A pure, thoughtfully named twenty-line function is as delightfully comprehensible to an LLM as once it was to future me.&lt;/p&gt;&#10;&lt;p&gt;I don&amp;rsquo;t allow background agents, sub-agents or project memories. My aim is to keep the working context explicit; once context starts accumulating somewhere I can&amp;rsquo;t easily see or control, I lose one of the main benefits of this workflow. Similarly, I don&amp;rsquo;t use MCPs (except Playwright) or skills. I want to know the whole context - so it goes in the prompt window, or comes from the code.&lt;/p&gt;&#10;&lt;h3 id="prompt-library"&gt;Prompt library&lt;/h3&gt;&#10;&lt;p&gt;I have a house stack and style that I want replicated in every project where it makes sense. Then I can navigate the architecture and code competently. I don&amp;rsquo;t want every problem to feel like I&amp;rsquo;m sitting down at a foreign codebase. I know LLMs can guide us through that, but if the LLM follows the conventions I&amp;rsquo;ve built up from experience, we avoid the problems ahead of time and/or I know where to work in order to do things.&lt;/p&gt;&#10;&lt;p&gt;These are not anything dramatic - the biggest one is my stack for SSR apps, others for code review, HTML/CSS audit, addressing a single tem from a code review etc. The first versions were mostly developed by an LLM pointed at all of my production repos and told to pull out the common quality practices, then as I run into issues they get added to. I used to have a template app for some of my project types that I&amp;rsquo;d copy over - this is a bit like that except it can be applied to existing projects as well.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://blog.iankulin.com/images/good-ai-questions-ssr-playbook_hu_a490df3c88eaf5fb.webp" width="1600" height="1168" alt="Screenshot of SSR playbook" loading="eager" fetchpriority="high" decoding="async"&gt;&lt;/p&gt;&#10;&lt;h3 id="early-review"&gt;Early review&lt;/h3&gt;&#10;&lt;p&gt;There&amp;rsquo;s two reasons why I like to produce documents which form the input for the next coding stage.&lt;/p&gt;&#10;&lt;h4 id="molehills-not-mountains"&gt;Molehills, not mountains&lt;/h4&gt;&#10;&lt;p&gt;In the before times, software development predominantly followed a &amp;lsquo;waterfall&amp;rsquo; method, and young programmers knew systems such as SSM, SSADM and Yourdon/DeMarco. The intent here was that because coding was incredibly expensive and could take years to deliver, we should very carefully specify every detail up front at the start of the project and get the owner to sign off on it.&lt;/p&gt;&#10;&lt;p&gt;Although the pre-conditions (code cost and speed) have been inverted, it&amp;rsquo;s still the case that it&amp;rsquo;s easier and cheaper to fix problems earlier in the process.&lt;/p&gt;&#10;&lt;h4 id="human-input-at-the-higher-abstraction-level"&gt;Human input at the higher abstraction level&lt;/h4&gt;&#10;&lt;p&gt;This is where I play the role of lead developer to the LLM. They have a summary of what they are trying to do, followed by a proposal of how to implement it. I get to tweak it, or to say &amp;rsquo;no - you&amp;rsquo;re falling into &lt;xyz&gt; trap&amp;rsquo;, &amp;lsquo;but what about &lt;xyz&gt;?&amp;rsquo;, or &amp;lsquo;here&amp;rsquo;s a better way to do this because&amp;hellip;&amp;rsquo;.&lt;/p&gt;&#10;&lt;p&gt;Since I&amp;rsquo;m not reading code except to skim it or make trivial changes, this is the stage where I&amp;rsquo;m using my expertise.&lt;/p&gt;&#10;&lt;h2 id="in-practice"&gt;In practice&lt;/h2&gt;&#10;&lt;p&gt;Currently my flow is something like this:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Exploration.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Some prompt along the lines of &amp;ldquo;I&amp;rsquo;m considering feature/bugfix/chore &lt;xyz&gt; by &lt;some approach&gt;. Have a look through the codebase and let me know if that&amp;rsquo;s viable, what other things I should consider, or if there&amp;rsquo;s a simpler or better way to do it.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Often there&amp;rsquo;s a bit of back and forth to get it all clear in my head. I&amp;rsquo;ll often have a notepad open for a larger change and be jotting down points, questions or thoughts.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Plan.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;ll make the decisions, clear the context, then prompt for a written plan to be saved as markdown to implement the change. This will include the intent of the change, but also resolve any of the open questions I learned from the previous step. LLMs are excellent at making assumptions for the things you don&amp;rsquo;t tell them, but I don&amp;rsquo;t want those assumptions to surprise me - hopefully we&amp;rsquo;ve surfaced them in the previous step.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;AI plan review&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;ll clear the context, and prompt something like &amp;ldquo;We&amp;rsquo;re trying to [achieve X]. Have a look at @plan-name.md and check that it accomplishes its goal, is correct against the codebase, and doesn&amp;rsquo;t overcomplicate things.&amp;rdquo;. This almost always turns up a couple of minor errors or things to clarify.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Human plan review&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;ll read the plan. The plans (I guess from the system prompt) usually contain code snippets rather than big chunks of code.&lt;/p&gt;&#10;&lt;p&gt;They are also usually good - depending on the model, harness, amount of conventions already established in the codebase (for example, e2e tests), and task complexity. Usually I&amp;rsquo;ll make minor changes directly in the markdown document, often they are fine as is, and rarely I&amp;rsquo;ll dump the whole thing or go back a couple of steps.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Implement&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Clear the context, prompt &amp;ldquo;Implement &amp;lt;plan-name.md&amp;gt;&amp;rdquo;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Checking&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I&amp;rsquo;ll usually run the lint/format/typecheck/unit test/e2e test process even if it looks like the model has. I still have PTSD from when models would claim a test must have been broken before their change. I&amp;rsquo;ll exercise the new feature with any edge cases I can think of. Then I look through the diffs. This isn&amp;rsquo;t a comprehensive review; I just want to see what changed and where, without being surprised by any of it. I pay some attention to test coverage, and close attention to any tests that have been removed or altered.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;&#10;&lt;p&gt;This whole process (from initial prompt to commit) could be a few minutes to a couple of hours&amp;rsquo; work depending on the scale of the change. The longest-running implement stages where the agent is doing a very large amount of work compared to me is usually greenfield projects where it&amp;rsquo;s using one of my playbooks, otherwise it&amp;rsquo;s something of a pair programming approach.&lt;/p&gt;&#10;&lt;p&gt;I do note that some of my habits (around having a plan, then clearing the context) are built into current harnesses/system prompts these days - for example if you just prompt for a sizable change in a fresh Claude it will do some exploration in a sub-agent, then save a plan in its secret memory spot, clear its own context and implement it. I don&amp;rsquo;t trust it, but do regard it as validation of my current method.&lt;/p&gt;&#10;&lt;p&gt;As mentioned in all my posts about how I&amp;rsquo;m using AI, this is an area of rapid development so my system will no doubt change soon.&lt;/p&gt;&#10;</description></item></channel></rss>