<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ai on the art of simplicity</title><link>https://naoko.github.io/tags/ai/</link><description>Recent content in Ai on the art of simplicity</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 28 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://naoko.github.io/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>Two Ways to Stop Your Coding Agent Burning Tokens: RTK and CodeGraph</title><link>https://naoko.github.io/posts/2026-06-28-cheaper-ai-coding-rtk-codegraph/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2026-06-28-cheaper-ai-coding-rtk-codegraph/</guid><description>&lt;h1 id="two-ways-to-stop-your-coding-agent-burning-tokens-rtk-and-codegraph"&gt;Two Ways to Stop Your Coding Agent Burning Tokens: RTK and CodeGraph&lt;/h1&gt;
&lt;p&gt;I keep a few Claude Code and Cursor sessions running through the day, and at some point I started actually watching the token counter instead of ignoring it. The thing that struck me wasn&amp;rsquo;t how &lt;em&gt;much&lt;/em&gt; it climbed. It was &lt;em&gt;what&lt;/em&gt; it climbed on. Most of the budget wasn&amp;rsquo;t going on the model reasoning about my problem. It was going on plumbing: &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt;, reading the same file three times to rebuild a call path, scrolling a 400-line &lt;code&gt;cargo test&lt;/code&gt; dump to find the one assertion that failed.&lt;/p&gt;</description></item><item><title>The Harness Engineering Cheat Sheet</title><link>https://naoko.github.io/posts/2026-04-28-harness-engineering-overview/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2026-04-28-harness-engineering-overview/</guid><description>&lt;h1 id="the-harness-engineering-cheat-sheet"&gt;The Harness Engineering Cheat Sheet&lt;/h1&gt;
&lt;p&gt;I have a Cursor problem. Or maybe an &amp;ldquo;agent session&amp;rdquo; problem more generally — I keep five or six chats open, each with its own slice of context, each in a slightly different state. We have nice skills. We have nice tools to fetch the right context. We have a code-review skill that drops inline comments on a PR. But I still lose track of which window is doing what, and occasionally paste the wrong thing into the wrong session.&lt;/p&gt;</description></item><item><title>I Built an AI Ultrarunner to QA My App</title><link>https://naoko.github.io/posts/2026-03-11-ai-ultrarunner-qa/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://naoko.github.io/posts/2026-03-11-ai-ultrarunner-qa/</guid><description>&lt;h1 id="i-built-an-ai-ultrarunner-to-qa-my-app"&gt;I Built an AI Ultrarunner to QA My App&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;ve been building &lt;a href="https://races.naoko.dev"&gt;a race tracking app&lt;/a&gt; for ultrarunners. It lets you manage your race calendar, track gear, write journey entries, and plan your season. The problem? I have no users yet. Just me.&lt;/p&gt;
&lt;p&gt;That means nobody is poking around, trying weird things, or stumbling into edge cases. The app has unit tests, CI checks, type checking — all the usual stuff. But there&amp;rsquo;s a whole class of bugs that only surface when someone actually &lt;em&gt;uses&lt;/em&gt; the thing. Opens the browser, clicks around, creates records, and goes &amp;ldquo;wait, that doesn&amp;rsquo;t look right.&amp;rdquo;&lt;/p&gt;</description></item></channel></rss>