software by Stafford Williams
blog more
- 2026-02-01 Quality and Suffering in Software Delivery
- 2026-01-15 Agent orchestration
- 2026-01-04 Twelve months of agentic AI code-assist
- 2025-12-29 Steering the Vibe: Refactor
- 2025-12-21 Porting Jekyll to Astro with Claude Code
- 2025-12-14 Steering the Vibe: Verify
- 2025-12-07 Steering the Vibe: Commits
- 2025-06-04 AI Code Assistance: Are we talking about the same thing?
- 2025-03-16 Embrace Vibe Coding, Know Its Limits
- 2025-03-09 You Might Not Need an AI Framework
- 2025-03-03 Understanding AI-assisted Coding Workflows
- 2025-01-29 Running DeepSeek R1 Locally
- 2025-01-12 LLM Agent Assisted Coding
- 2024-10-14 Comparing Netlify and Azure Static Web Apps
links more
Code is cheap. Show me the talk argues that the ability to think clearly, communicate problems, and architect solutions matters far more than the ability to write code itself.
OpenCode appears to be pretty interesting and could be worth investigating further. Even though Anthropic blocked Claude subscriptions on it, afterwards GitHub Copilot announced official support for it, so you can still access Opus via Copilot credits. At first glance I was able to copy my ~/.claude/commands to ~/.opencode/commands and they appeared to just work (with Opus via Copilot). The larger benefit of opencode would be testing other models that Claude Code does not support, notably local models.
Addy Osmani’s LLM coding workflow going into 2026 appears very similar to my own, though an interesting note on articles like this is that the reader can interpret the language used in different ways. Claude Code has an excellent /plan capability that Opus 4.5 excels on. I do plan, and I do write specs from time to time, but I also one-shot and two-shot changes and my actual development looks like a mixture of these. At no time do i generate pages and pages of specs and then have the LLM embark on a long horizon delivery period and not look at the code it wrote. Addy points out in anther post the importance of understanding the code with ideas like:
If you skip review, you don’t eliminate work - you defer it
And also links to another article noting that skipping review results in:
No consistency, no overarching plan. It’s like I’d asked 10 junior-mid developers to work on this codebase, with no Git access, locking them in a room without seeing what the other 9 were doing
This is inline with my findings and against a popular (hype) argument that an increase in code volume due to LLMs needs to be accompanied with a decrease in human-in-the-loop because speed. This is a drop in quality, which is deferred until your customer’s are affected and your DORA metrics deteriorate.
Model-Market Fit has some bangers:
When MMF exists, human-in-the-loop is a feature. It maintains quality, builds trust, handles edge cases. The AI does the work; the human provides oversight. When MMF doesn’t exist, human-in-the-loop is a crutch. It hides the fact that the AI can’t perform the core task. …The test is simple: if all human correction were removed from this workflow, would customers still pay? If the answer is no, there’s no MMF. There’s only a demo.
and
The gap between 80% and 99% accuracy is often infinite in practice.
I’m finding promise in having agents use a CLI directly rather than having them generate API code. This tweet elaborates on the context window and efficiency improvements.
How to Pair With an Agent is a short but good example of to make your prompting less vague.
GitHub to start charging $0.002/min for self-hosted runners, potentially to combat competitors with cheaper/faster (self-hosted) approaches:
If I did read this in 2012 when it was leaked then I’ve completely forgotten. Valve’s (2012) Employee Handbook includes a section on stack ranking.
knip discovers typescript files that are present but not referenced. I find this handy during code-assist so the agent can clean up stuff it doesn’t need anymore.
notes more
- 2025-12-15 [netsh, iisexpress, wsl] excluding ports from hyper-v
- 2025-03-29 [ssl] mac keychain
- 2025-03-03 [javascript, timezones, vitest] timezones
- 2025-01-14 [bookmarklet, chrome] add text to clipboard
- 2024-12-11 [javascript, timezones] datetime libraries
- 2024-05-01 [mikro-orm] type annotations
- 2024-03-13 [azure-b2c] limits
- 2024-03-11 [azure-b2c] phone mfa - microsoft samples
- 2024-03-06 [http] testing
devlog more
- 2026-01-27 [assist] v0.16 - Desktop notifications and package.json versioning +4 ▸
- 2026-01-04 [blog] v4.3 - Project info and link syntax
- 2026-01-04 [assist] v0.10.1 - Devlog command refinements +1 ▸
- 2026-01-02 v0.10 - New project scaffolding commands
- 2026-01-02 [procgen] v0.1 - Low-poly ocean scene with React Three Fiber
- 2026-01-01 [puzbox] v0.6 - Menu and level navigation +3 ▸
- 2025-12-31 v0.5 - Four new puzzles, analytics, and widget polish
- 2025-12-30 v0.4 - Three new puzzles and Playwright testing
- 2025-12-29 v0.3 - Puzzle08 with hinged box
- 2025-12-29 [assist] v0.9 - Major refactoring and filename conventions
- 2025-12-28 [puzbox] v0.2 - Puzzle07 and interaction fixes
- 2025-12-28 [assist] v0.8 - Refactor check now runs verify scripts
- 2025-12-28 [blog] v4.2 - Blog post series navigation