<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Justin Williams</title><description>Senior full stack engineer building with React, Vue 3, and TypeScript. I ship small open source tools and run FormBeam.</description><link>https://justinwilliams.dev/</link><item><title>An agent told me the refactor was done</title><link>https://justinwilliams.dev/blog/agent-told-me-the-refactor-was-done/</link><guid isPermaLink="true">https://justinwilliams.dev/blog/agent-told-me-the-refactor-was-done/</guid><description>Agents are tools, same as languages and frameworks. They just stop halfway and tell you they finished.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I got tired of rewriting the same concurrency limiter</title><link>https://justinwilliams.dev/blog/limit-concurrent-fetches/</link><guid isPermaLink="true">https://justinwilliams.dev/blog/limit-concurrent-fetches/</guid><description>Why I packaged asyncq instead of pasting another half-finished helper into the next side project.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I stopped putting everything in the app store</title><link>https://justinwilliams.dev/blog/stopped-putting-everything-in-app-store/</link><guid isPermaLink="true">https://justinwilliams.dev/blog/stopped-putting-everything-in-app-store/</guid><description>Defaulting form drafts, filters, and feature junk into global state throws away unmount cleanup. Local by default, with React and Vue sketches.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>