<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Always Shippable</title><description>Thoughts on building always shippable systems, moving fast without breaking things, and making complex work simple and enjoyable.</description><link>https://jonborchardt.github.io/blog/</link><language>en-US</language><atom:link href="https://jonborchardt.github.io/blog/rss.xml" rel="self" type="application/rss+xml"/><item><title>arrival</title><link>https://jonborchardt.github.io/blog/arrival/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/arrival/</guid><description>Eight sections, 62 parts, 28 instruments, and two wills that never merge. One piece of music taken apart: what carries it, and what it cannot do.</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate><category>Music</category><category>Live Coding</category><author>Jonathan Borchardt</author></item><item><title>Mixing as a scene</title><link>https://jonborchardt.github.io/blog/mixing-as-a-scene/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/mixing-as-a-scene/</guid><description>A mix is where things are, not how loud they are: one hall, a position each, levels by role, a played feel, and a tool that measures whether it worked.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><category>Music</category><category>Live Coding</category><author>Jonathan Borchardt</author></item><item><title>Knobs in the code</title><link>https://jonborchardt.github.io/blog/knobs-in-the-code/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/knobs-in-the-code/</guid><description>A tour of the Compose page: three views on one source string that all write back through one door, and the four controls that only change what you hear.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>Developer Tools</category><category>Music</category><category>Live Coding</category><author>Jonathan Borchardt</author></item><item><title>Say darker</title><link>https://jonborchardt.github.io/blog/say-darker/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/say-darker/</guid><description>Twenty-nine English words, each a set of deltas on a song&apos;s numeric axes: how they apply, what they refuse, what saturates, and how much reads back.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><category>Music</category><category>DSL</category><category>Live Coding</category><author>Jonathan Borchardt</author></item><item><title>A language on top of Strudel</title><link>https://jonborchardt.github.io/blog/a-language-on-top-of-strudel/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/a-language-on-top-of-strudel/</guid><description>Strudel is a fine instrument and a poor score. What strudel-bench adds: named sections, parts with baselines, twelve knobs per part, a layer you can decompile.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Music</category><category>Live Coding</category><category>DSL</category><category>Engineering</category><author>Jonathan Borchardt</author></item><item><title>Real taxes, less hearsay</title><link>https://jonborchardt.github.io/blog/real-taxes-less-hearsay/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/real-taxes-less-hearsay/</guid><description>My simulator&apos;s flat 5% tax knob was hearsay. A real tax engine measured 22%, the knob went to 15%, and asset location beat every Roth conversion video.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><category>Personal Finance</category><category>Investing</category><category>Simulation</category><category>Engineering</category><author>Jonathan Borchardt</author></item><item><title>A Stream Deck as a Claude Code Dashboard</title><link>https://jonborchardt.github.io/blog/stream-deck-claude-code-dashboard/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/stream-deck-claude-code-dashboard/</guid><description>Parallel Claude Code sessions mapped onto Stream Deck keys so the one that needs me lights up: AgentDeck on macOS and yolodeck on Windows, end to end.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>AI-Assisted Coding</category><category>Developer Tools</category><author>Jonathan Borchardt</author></item><item><title>How I Code with Agents Today</title><link>https://jonborchardt.github.io/blog/how-i-code-with-agents-today/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/how-i-code-with-agents-today/</guid><description>The process I use to turn an idea into application code with agents, shown end to end on a real case study: this blog.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>AI-Assisted Coding</category><category>Engineering</category><category>LLM</category><author>Jonathan Borchardt</author></item><item><title>DocMapper: The Map I Spent Six Years Drawing</title><link>https://jonborchardt.github.io/blog/attenex-docmapper/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/attenex-docmapper/</guid><description>My first job out of school was designing and building a radial map that drew a legal document review as clusters of concepts. Six years, five patents.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>Data Viz</category><category>Graphics</category><category>Patents</category><author>Jonathan Borchardt</author></item><item><title>The Hover Preview Panel I Built at Bing</title><link>https://jonborchardt.github.io/blog/bing-hover-preview/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/bing-hover-preview/</guid><description>In 2008 I joined Bing&apos;s UX team and shipped the hover preview panel, the quick-answer module, and results-list features seen by hundreds of millions daily.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>Web Development</category><author>Jonathan Borchardt</author></item><item><title>BunnyPuddle Games: Because Water Sims Are Fun</title><link>https://jonborchardt.github.io/blog/bunnypuddle-games/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/bunnypuddle-games/</guid><description>Around 2010 I shipped a couple of Android games as a one person team named BunnyPuddle Games.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><author>Jonathan Borchardt</author></item><item><title>Drag the Timeline, Refilter the Page</title><link>https://jonborchardt.github.io/blog/drag-the-timeline-refilter-the-page/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/drag-the-timeline-refilter-the-page/</guid><description>In 2013 I replaced our off-the-shelf Google charts with hand-built D3 dashboards where dragging the timeline refilters the whole page.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>D3</category><category>Data Viz</category><category>AdTech</category><category>Retrospective</category><author>Jonathan Borchardt</author></item><item><title>Media Foundry: Did the Spot Actually Air?</title><link>https://jonborchardt.github.io/blog/media-foundry-watermarks/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/media-foundry-watermarks/</guid><description>Media Foundry checked purchased TV spots against ad-watermark detections, block by block, with a drag-to-fix grid for the leftovers.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>AdTech</category><author>Jonathan Borchardt</author></item><item><title>One Codebase, Two Datasets</title><link>https://jonborchardt.github.io/blog/one-codebase-two-datasets/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/one-codebase-two-datasets/</guid><description>I built a crossfilter dashboard for the fatalencounters.org data, then forked the whole thing to chart who was rewarding who at work.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Data Viz</category><category>D3</category><category>TypeScript</category><category>Retrospective</category><author>Jonathan Borchardt</author></item><item><title>ONE TV in Australia</title><link>https://jonborchardt.github.io/blog/one-tv-australia/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/one-tv-australia/</guid><description>The last thing I shipped before I left Oath: the same TV ad-buying platform, rebuilt on OzTAM currency for an Australian sales house.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>AdTech</category><category>Retrospective</category><author>Jonathan Borchardt</author></item><item><title>ONE TV: One Design Language, Three Generations</title><link>https://jonborchardt.github.io/blog/one-tv-upfront-scatter/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/one-tv-upfront-scatter/</guid><description>AOL&apos;s ONE TV had an upfront half and a scatter half, and behind both a constraints dialog I had first drawn in Balsamiq in 2012.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>AdTech</category><category>Data Viz</category><author>Jonathan Borchardt</author></item><item><title>Audience Planner: 2,473 TV Shows on One Screen</title><link>https://jonborchardt.github.io/blog/precisiondemand-audience-planner/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/precisiondemand-audience-planner/</guid><description>The Silverlight side project that became PrecisionDemand&apos;s flagship: explore thousands of TV programs by targeting quality, then optimize the buy.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>AdTech</category><category>Data Viz</category><author>Jonathan Borchardt</author></item><item><title>Buy Side, Sell Side, Same Data</title><link>https://jonborchardt.github.io/blog/sell-side-targeting/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/sell-side-targeting/</guid><description>Two PrecisionDemand dashboards asked opposite questions of the same TV ad data. One of them turned a 20% time idea into a granted patent.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>AdTech</category><category>Data Viz</category><category>D3</category><category>Patents</category><author>Jonathan Borchardt</author></item><item><title>The Explorers We Built to Understand Our Own Data</title><link>https://jonborchardt.github.io/blog/tv-data-explorers/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/tv-data-explorers/</guid><description>Four small internal tools from PrecisionDemand and AOL, none of them shipped products, all built to poke at a dataset until it made sense.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>AdTech</category><category>Data Viz</category><author>Jonathan Borchardt</author></item><item><title>The Portfolio I Froze in 2018</title><link>https://jonborchardt.github.io/blog/work-2001-2018/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/work-2001-2018/</guid><description>In 2018 I copied seventeen years of side projects onto one static site and went job hunting. It still runs. Here is the map of what is in it.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Retrospective</category><category>AdTech</category><category>Data Viz</category><author>Jonathan Borchardt</author></item><item><title>An Agent Built This Blog</title><link>https://jonborchardt.github.io/blog/an-agent-built-this-blog/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/an-agent-built-this-blog/</guid><description>Eleven planned commits in 79 minutes, a shippable site the same afternoon, and the validation gauntlet that makes agent publishing safe.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI-Assisted Coding</category><category>Engineering</category><category>Astro</category><author>Jonathan Borchardt</author></item><item><title>Repos as Experts</title><link>https://jonborchardt.github.io/blog/repos-as-experts/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/repos-as-experts/</guid><description>How posts get made here: an executable skills pipeline, and an authority system where the repo a post describes is consulted as its domain expert.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI-Assisted Coding</category><category>LLM</category><category>Engineering</category><author>Jonathan Borchardt</author></item><item><title>The Authoring Surface</title><link>https://jonborchardt.github.io/blog/the-authoring-surface/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/the-authoring-surface/</guid><description>Every primitive this blog is written with: static MDX components, build-time diagrams and math, and the one React island that earns its JavaScript.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>Astro</category><category>MDX</category><category>React</category><category>Design System</category><author>Jonathan Borchardt</author></item><item><title>Same plan, same spending. Broke, or $5.8 million.</title><link>https://jonborchardt.github.io/blog/same-plan-broke-or-5-8-million/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/same-plan-broke-or-5-8-million/</guid><description>One textbook retirement plan replayed across 98 historical start years, from 1928 on. Four of those lives, and what sequence-of-returns risk really means.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>Personal Finance</category><category>Investing</category><category>Simulation</category><category>Data Viz</category><author>Jonathan Borchardt</author></item><item><title>My simulator watches retirement YouTube for me</title><link>https://jonborchardt.github.io/blog/simulator-watches-retirement-youtube/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/simulator-watches-retirement-youtube/</guid><description>A text-file queue, a transcript script and two Claude Code skills turn retirement videos into three experiment rows, a verdict and a channel scoreboard.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>AI-Assisted Coding</category><category>LLM</category><category>Personal Finance</category><author>Jonathan Borchardt</author></item><item><title>Teaching an AI to run retirement experiments</title><link>https://jonborchardt.github.io/blog/retirement-simulator-ai-lab/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/retirement-simulator-ai-lab/</guid><description>retire-sim replays every historical start year since 1928, grades strategies on earliest safe retirement age, and lets Claude Code run the experiments.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>AI-Assisted Coding</category><category>Personal Finance</category><category>Simulation</category><author>Jonathan Borchardt</author></item><item><title>Ponytail: making the AI a lazy senior dev (is it any good?)</title><link>https://jonborchardt.github.io/blog/ponytail-lazy-senior-dev/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/ponytail-lazy-senior-dev/</guid><description>WorldLock was built with Claude Code in ponytail mode, an AI playing a lazy senior dev. What it did to the code, and how it fared replaying a real PR review.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><category>AI-Assisted Coding</category><category>Code Quality</category><category>Developer Tools</category><author>Jonathan Borchardt</author></item><item><title>Android development with Claude, no IDE, no cable</title><link>https://jonborchardt.github.io/blog/android-development-with-claude/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/android-development-with-claude/</guid><description>How WorldLock is built, deployed and debugged with three CLI commands, wireless adb and a coding agent that reads logcat and screenshots. No Android Studio.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>AI-Assisted Coding</category><category>Android</category><category>Kotlin</category><category>Developer Tools</category><author>Jonathan Borchardt</author></item><item><title>WorldLock: an AR window onto the actual planet</title><link>https://jonborchardt.github.io/blog/worldlock-ar-window/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/worldlock-ar-window/</guid><description>A native Android AR app that georegisters city towers, the whole Earth and the live ISS to the real world with ARCore&apos;s Geospatial API.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Android</category><category>Kotlin</category><category>Augmented Reality</category><category>Geospatial</category><category>Graphics</category><author>Jonathan Borchardt</author></item><item><title>omyac-upscaler: all the way into the anchor graph</title><link>https://jonborchardt.github.io/blog/omyac-upscaler-anchor-graph/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/omyac-upscaler-anchor-graph/</guid><description>Porting agi-up&apos;s anchor-graph upscaler to SCI0 PICs: four colour-model fixes, one convention fix, and why snap-blend is leaving the PIC path.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Graphics</category><category>Game Dev</category><category>Retrocomputing</category><category>TypeScript</category><author>Jonathan Borchardt</author></item><item><title>Trying agi-up as a reference renderer for SCI0</title><link>https://jonborchardt.github.io/blog/agi-up-as-a-reference-renderer/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/agi-up-as-a-reference-renderer/</guid><description>Borrowing from a native-resolution AGI upscaler for a 6× SCI0 pipeline: one geometric rule transferred, the architecture did not, and why.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Graphics</category><category>Game Dev</category><category>Retrocomputing</category><category>TypeScript</category><author>Jonathan Borchardt</author></item><item><title>Upscaling Sierra SCI0 PIC: the native render oracle</title><link>https://jonborchardt.github.io/blog/sci0-pic-upscaling-native-render-oracle/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/sci0-pic-upscaling-native-render-oracle/</guid><description>How snap-blend upscales Sierra SCI0 vector backgrounds without leaking flood fills, using a native-resolution render as the oracle for every scaled fill.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Graphics</category><category>Game Dev</category><category>Retrocomputing</category><category>TypeScript</category><author>Jonathan Borchardt</author></item><item><title>A contradiction-aware index of The Why Files</title><link>https://jonborchardt.github.io/blog/why-files-contradiction-index/</link><guid isPermaLink="true">https://jonborchardt.github.io/blog/why-files-contradiction-index/</guid><description>How I turned 218 Why Files transcripts into a claim graph with truth propagation, typed contradictions and a transcript pointer on every edge.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>AI-Assisted Coding</category><category>LLM</category><category>NLP</category><category>Knowledge Graph</category><category>Data Viz</category><author>Jonathan Borchardt</author></item></channel></rss>