Posts

From Idea to Wrist: Building a Watch Face in About an Hour

Image
This came from a post I saw on X. Somebody wanted a different watch face for their Garmin, sat down with Claude, and had one working in short order. I had thought about doing that for a long time. Like most new things, I was hesitant, because it meant stepping out of my comfort zone. It turned out to be easy with the help of AI. After about an hour of fiddling with it, I had a working watch face. I almost wish I had jumped on it earlier in the week, because I bought a watch face a few days ago and was very disappointed with it. The face is Ridgeline : big time, a ring that fills toward my step goal, heart rate, steps, battery. Getting Started Was the Part I Dreaded Writing for a watch is its own little world. There is a language I had never used, a set of tools I did not have installed, and a way of getting the finished thing onto the watch that I had never done. That stack of unfamiliar steps is exactly what had kept me from trying. The agent handled all of it. It set up the ...

Three Days a Week: What a Rate Limit Actually Costs

Image
In July I wrote that monthly plans beat paying by the token for my development work. I also mentioned getting only three or four working days before hitting the weekly limit. What I understated was how much that limit would start deciding my schedule, and which model reviewed my code. A $20 monthly plan sounds like a month of work. In practice the weekly limit decides how much of that month you actually get, and for me the answer was about three working days. Then I waited. Not for an hour, not until midnight, but for the reset, which is most of a week away when you hit the wall on a Wednesday. Three Days, Then Waiting The plan was Ollama Pro, monthly. Twenty dollars, and on paper that is a bargain next to what the same work costs through an API key. The weekly ceiling is what broke it. I would get through roughly three days of real work and spend the rest of the week unable to do the thing I was paying for. Waiting is worse than it sounds, because the work does not pause polit...

Building a Personal Assistant: What I Got Wrong

Image
A couple of weeks ago I wrote that I am the only user of my personal assistant app, so every issue in its tracker is one I filed after watching something fail on my own phone. That sentence is no longer true. My daughter started using it, and she found a limitation I had built in so deeply that I could not see it. Before that, though, some numbers. The app is at version 6.5.0, build 191, with 115 release notes behind it. It is 245 Dart files in lib and 234 test files. The lib/services directory alone holds 124 services. I bring this up because people who ask me about building their own assistant usually think of it as a weekend project - a chat box with an API key behind it. The chat box was the weekend. Everything after that is the reason the thing is actually useful. Three things moved it from a toy to something I open every day: it learns from its own mistakes, it accepts the way people actually talk, and it can look at a photo. Everything else is plumbing, and I will be hone...

A Convincing Review of the Wrong Path

Image
This article follows Executor Model, Reviewer Model: Why Cross-Vendor Code Review Actually Works , where I wrote about using a second model to validate review findings. This time, the missing check was not another opinion. It was running the code. I am the only user of my personal assistant app, so every issue in its tracker is one I filed after watching something fail on my phone. One was the fasting timer. I told it in chat that I had started a fast at seven in the evening, and nothing started. I handed that issue and eight others to Claude. It read the source, quoted the right files, and explained why the timer could not fail the way I described. I closed all nine issues that afternoon. A few days later I asked Claude to check again, but this time it had to run the reported inputs. Four verdicts flipped. The second pass took six and a half minutes instead of two and a half. Those extra four minutes recovered four real bugs and found two more I had never noticed to file. T...

Executor Model, Reviewer Model: Why Cross-Vendor Code Review Actually Works

Image
I thought one of my projects was in reasonable shape. I had been working in it for months, it was on version 4.24.3, and Claude had been through most of it more than once. Then I pointed Codex GPT-5.6 Sol at it with Ultra High reasoning, asked it to evaluate the codebase and file issues for anything it found, and it came back with 42 new issues in about ten minutes. Some of them were release blocking. I had Claude Opus 4.8 go through all 42 looking for false positives, and it confirmed zero. Every issue was real. That result is what convinced me to stop having one vendor's model check its own family's work. The Setup: One Model Writes, a Different Vendor Reviews The workflow is simple to state. Implement with one model, working from the most critical issues to the least critical and matching model strength to issue criticality: the highest-confidence model takes the most critical work, and the cheaper, faster models take the routine fixes further down the list. Then valid...

Claude Keeps Ignoring My AGENTS.md, and I Think I Know Why

Image
In July I asked an agent to push a build of my personal assistant app to my phone. Routine task. I do it most days. It built the release APK, ran flutter install , and my habits, journal, and health logs were gone. Not corrupted, not partially migrated. Gone. flutter install uninstalls the app first when it feels like it, and everything my assistant had learned about me lived in app-private storage with no cloud copy I could count on. The part that still bothers me is not that it happened. It is that the instruction telling it not to do this was already sitting in the repository, in the file the agent claims to read. The Rule Was Already There, in Capital Letters After the first time this happened, I did the obvious thing. I wrote the rule down. The commit is still in my history, and the message reads like an incident report because that is what it was: flutter install uninstalled the app before reinstalling on a real device, wiping local user data (habits, journal, health log...

GLM Plans, Fable Validates, and API Keys Are Not for Development

Image
In my last post I compared Codex, Claude, and GLM 5.2 and landed on two $20 monthly plans as the setup that gets the work done. Two weeks in, I changed that setup: Claude moved to the $200 annual plan, which is essentially the $20 monthly plan at a discount, and Ollama moved to the $20 Pro plan. Same shape, better price. This post is a follow-up on two other fronts. First, the workflow itself has firmed up: GLM 5.2 does the assessment and planning on less critical projects, Fable 5 does the assessment on complex or mission-critical projects and validates GLM 5.2's findings, and Sonnet 5 handles general-purpose coding once Fable 5 has set the plan. Second, I ran the experiment I suspected would go badly and paid for AI by the token, once through an OpenAI API key with the GPT-5.6 Terra model and once through Ollama top-up credits. The numbers are worth sharing because the gap is not small. It is the difference between 3-4 days of work and 30 minutes. The Workflow: Who Assesses,...