<?xml version="1.0" encoding="UTF-8" ?>
  <rss version="2.0">
    <channel>
        <title>Byron Wall Blog</title>
        <link>https://byroni.us</link>
        <description>Technical notes from Byron Wall on software development, data analysis, AI tooling, and engineering workflows.</description>
        <lastBuildDate>Fri, 31 Jul 2026 20:32:21 GMT</lastBuildDate>
        <item>
          <title>From an empty dashboard to useful product analytics</title>
          <link>https://byroni.us/blog/adding-useful-analytics-admin-panel</link>
          <guid>https://byroni.us/blog/adding-useful-analytics-admin-panel</guid>
          <description>How I added a private usage desk to Find My AI Fit, found the production analytics pipeline was empty, and connected traffic and events to the generated results that actually matter.</description>
          <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Building Find My AI Fit from a 50-minute dictation</title>
          <link>https://byroni.us/blog/building-find-my-ai-fit</link>
          <guid>https://byroni.us/blog/building-find-my-ai-fit</guid>
          <description>How a long voice memo became a resume-to-AI opportunity map, then got simpler through repeated design, product, and branding passes in Codex.</description>
          <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Building an AI project intake with ChatGPT Sites</title>
          <link>https://byroni.us/blog/building-ai-project-intake-with-chatgpt-sites</link>
          <guid>https://byroni.us/blog/building-ai-project-intake-with-chatgpt-sites</guid>
          <description>A prompt-to-production experiment with ChatGPT Sites, including the design pass, the missing-data mistake, durable submissions, and a private admin view.</description>
          <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Give Codex the tweet and let it run the claim to ground</title>
          <link>https://byroni.us/blog/run-a-tweet-to-ground-with-codex</link>
          <guid>https://byroni.us/blog/run-a-tweet-to-ground-with-codex</guid>
          <description>A post-work audit of giving Codex an alarming SSD-wear tweet, letting it choose and run the diagnostics, and checking whether the conclusion was actually earned.</description>
          <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Building a force-directed graph one desire at a time</title>
          <link>https://byroni.us/blog/building-a-force-directed-graph-one-desire-at-a-time</link>
          <guid>https://byroni.us/blog/building-a-force-directed-graph-one-desire-at-a-time</guid>
          <description>Build a readable graph by turning springs, flow, collision, and fringe behavior into small desires you can inspect one tick at a time.</description>
          <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Learning to zoom out a data-flow visualization</title>
          <link>https://byroni.us/blog/learning-to-zoom-out-data-flow-visualization</link>
          <guid>https://byroni.us/blog/learning-to-zoom-out-data-flow-visualization</guid>
          <description>A visual log of the TSX Data Flow views that were too detailed, too flat, or too noisy—and the design rules emerging from a route-scoped topology view.</description>
          <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>When static analysis invents a recursive component graph</title>
          <link>https://byroni.us/blog/static-analysis-component-identity</link>
          <guid>https://byroni.us/blog/static-analysis-component-identity</guid>
          <description>A Suspense cycle exposed a component-identity problem in TSX Data Flow: merging render occurrences by name can manufacture paths that do not exist.</description>
          <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Tuning a force-directed graph with visible controls</title>
          <link>https://byroni.us/blog/tuning-a-force-directed-graph-with-visible-controls</link>
          <guid>https://byroni.us/blog/tuning-a-force-directed-graph-with-visible-controls</guid>
          <description>A visual debugging log of turning a graph layout from a black box into a system I could step, inspect, reverse, and tune on screen.</description>
          <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Photographing hand-drawn comics for booklet printing</title>
          <link>https://byroni.us/blog/photographing-hand-drawn-comics-for-printing</link>
          <guid>https://byroni.us/blog/photographing-hand-drawn-comics-for-printing</guid>
          <description>How I added photographed page layers, grayscale and black-and-white controls, and disk-backed image storage to a printable comic-book editor.</description>
          <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Introducing Coach Companion</title>
          <link>https://byroni.us/blog/introducing-coach-companion</link>
          <guid>https://byroni.us/blog/introducing-coach-companion</guid>
          <description>A soccer rotation planner built around the actual coaching job: get a fair first draft, make the judgment calls visible, and carry one clear plan to the field.</description>
          <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>What Coach Companion changed about my development workflow</title>
          <link>https://byroni.us/blog/what-coach-companion-changed-about-my-development-workflow</link>
          <guid>https://byroni.us/blog/what-coach-companion-changed-about-my-development-workflow</guid>
          <description>How a dictated product plan, a long browser QA pass, and repeated development friction turned into better scripts, repository rules, domain invariants, and verification defaults.</description>
          <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Letting a starter repo learn from the projects cloned from it</title>
          <link>https://byroni.us/blog/letting-a-starter-learn-from-derived-projects</link>
          <guid>https://byroni.us/blog/letting-a-starter-learn-from-derived-projects</guid>
          <description>A practical workflow for reviewing agent threads, finding reusable improvements in projects derived from a common starter, and feeding the useful parts back into the next project.</description>
          <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The invisible backdrop filter that blanked my code blocks</title>
          <link>https://byroni.us/blog/backdrop-filter-blank-code-blocks</link>
          <guid>https://byroni.us/blog/backdrop-filter-blank-code-blocks</guid>
          <description>A one-line backdrop blur on an invisible copy button made Chrome intermittently stop painting code-heavy MDX articles. The DOM stayed correct; the compositor did not.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Making slow static analysis explain itself</title>
          <link>https://byroni.us/blog/incremental-progress-for-static-analysis</link>
          <guid>https://byroni.us/blog/incremental-progress-for-static-analysis</guid>
          <description>How tsx-dataflow moved analysis into a worker thread and added real per-file progress over SSE, turning an apparently locked page into an inspectable workflow.</description>
          <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>When a 5 MB Git push times out after the upload finishes</title>
          <link>https://byroni.us/blog/github-push-http-408</link>
          <guid>https://byroni.us/blog/github-push-http-408</guid>
          <description>A GitHub HTTPS push returned HTTP 408 after every byte arrived. The useful clues were in the curl trace, and the practical fix was to push the image objects in smaller batches.</description>
          <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Review the product assumptions before the architecture</title>
          <link>https://byroni.us/blog/product-first-plan-review</link>
          <guid>https://byroni.us/blog/product-first-plan-review</guid>
          <description>A practical way to review technical plans by asking product questions first, then letting the answers determine the architecture—especially when agents will write much of the implementation.</description>
          <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Testing OpenGraph images with a contact sheet</title>
          <link>https://byroni.us/blog/testing-open-graph-images-with-contact-sheets</link>
          <guid>https://byroni.us/blog/testing-open-graph-images-with-contact-sheets</guid>
          <description>I built a small contact-sheet workflow for comparing real OpenGraph route renders and catching visual failures that were easy to miss one image at a time.</description>
          <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Rebuilding TSX Data Flow around TypeScript and SolidJS</title>
          <link>https://byroni.us/blog/typescript-solid-client-server-migration</link>
          <guid>https://byroni.us/blog/typescript-solid-client-server-migration</guid>
          <description>How I used a concrete Codex goal, a written migration plan, typed API contracts, and visual comparison to replace a mixed JavaScript and generated-HTML architecture with a smaller TypeScript and SolidJS application.</description>
          <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Canvas interactivity basics</title>
          <link>https://byroni.us/blog/canvas-interactivity-basics</link>
          <guid>https://byroni.us/blog/canvas-interactivity-basics</guid>
          <description>An interactive guide to scene models, hit testing, hover overlays, and drag-pan camera math for canvas-based interfaces.</description>
          <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Using Codex as a bridge between browser apps</title>
          <link>https://byroni.us/blog/codex-appshots-calendar-notes-workflow</link>
          <guid>https://byroni.us/blog/codex-appshots-calendar-notes-workflow</guid>
          <description>A lightweight workflow for turning information from one browser app into calendar entries and reference notes in another, using Codex and appshots as the coordination layer.</description>
          <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Encoding time on the canvas to debug Pluck inventory panning</title>
          <link>https://byroni.us/blog/pluck-inventory-viewport-time-debugging</link>
          <guid>https://byroni.us/blog/pluck-inventory-viewport-time-debugging</guid>
          <description>A Pluck debugging note about turning pan-and-zoom viewport history into a visual overlay: the canvas stays spatial, while time becomes a trace.</description>
          <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Forcing Suspense boundaries from a tiny debug overlay</title>
          <link>https://byroni.us/blog/suspense-boundary-debug-overlay</link>
          <guid>https://byroni.us/blog/suspense-boundary-debug-overlay</guid>
          <description>A Pluck debugging note about wrapping Solid Suspense boundaries with dev-only controls so loading states can be inspected on demand.</description>
          <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Iterating a comic-book app icon with contact sheets</title>
          <link>https://byroni.us/blog/comic-icon-iteration-contact-sheet</link>
          <guid>https://byroni.us/blog/comic-icon-iteration-contact-sheet</guid>
          <description>A short walkthrough of turning a generated PNG into SVG app icons by using a contact sheet to compare every iteration.</description>
          <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>OpenAI prompt caching with prompt_cache_key and cached_tokens</title>
          <link>https://byroni.us/blog/managing-openai-prompt-cache</link>
          <guid>https://byroni.us/blog/managing-openai-prompt-cache</guid>
          <description>How Video to Context structures repeated OpenAI Responses API calls so long transcript context can hit the prompt cache, report cached tokens, and make cost visible.</description>
          <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Breaking top-level Suspense into component-level Suspense</title>
          <link>https://byroni.us/blog/component-level-solid-suspense</link>
          <guid>https://byroni.us/blog/component-level-solid-suspense</guid>
          <description>How a SolidJS loading state got smoother by keeping the page shell mounted and moving resource reads behind local Suspense boundaries.</description>
          <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Understanding SolidJS resources</title>
          <link>https://byroni.us/blog/understanding-solidjs-resources</link>
          <guid>https://byroni.us/blog/understanding-solidjs-resources</guid>
          <description>An interactive guide to how SolidJS resources interact with Suspense, resource.latest, derived accessors, and memoized reads.</description>
          <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Building a review UI for LLM-processed voice memos</title>
          <link>https://byroni.us/blog/video-to-context-review-ui-llm-transcripts</link>
          <guid>https://byroni.us/blog/video-to-context-review-ui-llm-transcripts</guid>
          <description>How Video to Context grew from a transcription CLI into a local review workspace with sectioned transcripts, inline extracted evidence, and cost-aware LLM processing.</description>
          <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Packaging llmly for PyPI with a publish script</title>
          <link>https://byroni.us/blog/packaging-llmly-for-pypi</link>
          <guid>https://byroni.us/blog/packaging-llmly-for-pypi</guid>
          <description>What it took to turn a local Flask usage viewer into a PyPI package, and why a small publish script makes versioning and token-based uploads much less error-prone.</description>
          <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Making Pluck capture faster by making the timings harder to ignore</title>
          <link>https://byroni.us/blog/pluck-capture-timing-loop</link>
          <guid>https://byroni.us/blog/pluck-capture-timing-loop</guid>
          <description>I optimized Pluck&apos;s Chrome extension capture loop by adding detailed timing traces and a repeatable diagnostic batch that made every speed experiment measurable.</description>
          <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Turning voice memos into Codex-ready analysis</title>
          <link>https://byroni.us/blog/video-to-context-codex-analysis-cli</link>
          <guid>https://byroni.us/blog/video-to-context-codex-analysis-cli</guid>
          <description>How I pushed Video to Context from transcription toward a Codex-backed analysis pipeline while keeping the CLI aimed at one command that just works.</description>
          <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Adding voice memo support to Video to Context</title>
          <link>https://byroni.us/blog/voice-memos-video-to-context</link>
          <guid>https://byroni.us/blog/voice-memos-video-to-context</guid>
          <description>How I expanded a local screen-recording transcription CLI so one flag can process Apple Voice Memos into a reusable context folder.</description>
          <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Debugging background removal on a carpet-colored stuffed animal</title>
          <link>https://byroni.us/blog/debugging-stuffed-animal-background-removal</link>
          <guid>https://byroni.us/blog/debugging-stuffed-animal-background-removal</guid>
          <description>A practical walkthrough of tuning rembg for a stuffed-animal zoo: threshold sweeps, mask repair, visual contact sheets, and a regeneration path for production images.</description>
          <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Expanding webpage tables when copy is the real feature</title>
          <link>https://byroni.us/blog/expanding-web-tables-for-copying</link>
          <guid>https://byroni.us/blog/expanding-web-tables-for-copying</guid>
          <description>I added an Alt-click table viewer to my Chrome extension after needing exact DNS record values from a page that made table text hard to copy.</description>
          <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>A small shared expense splitter for family trips</title>
          <link>https://byroni.us/blog/shared-expense-splitter</link>
          <guid>https://byroni.us/blog/shared-expense-splitter</guid>
          <description>A quick static browser tool for importing shared expenses, tracking payments, and turning the final balance into a simple settlement plan.</description>
          <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Speeding up Pluck&apos;s full-page Chrome extension capture loop</title>
          <link>https://byroni.us/blog/pluck-extension-capture-speedup</link>
          <guid>https://byroni.us/blog/pluck-extension-capture-speedup</guid>
          <description>Notes from optimizing Pluck&apos;s real Chrome extension full-page capture path from slow scroll-settle loops to sub-four-second captures on recent sites.</description>
          <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Why I made a pan-and-zoom viewer for webpage images</title>
          <link>https://byroni.us/blog/chatgpt-image-pan-zoom</link>
          <guid>https://byroni.us/blog/chatgpt-image-pan-zoom</guid>
          <description>I wanted a faster way to inspect ChatGPT image generations, so I built a Chrome extension for browsing page images with pan, zoom, grids, and saved folders.</description>
          <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Running LibreChat on Coolify (and actually keeping it updated)</title>
          <link>https://byroni.us/blog/libre-chat-coolify</link>
          <guid>https://byroni.us/blog/libre-chat-coolify</guid>
          <description>Notes from getting LibreChat running on Coolify: the env vars that matter, why the API serves the UI, and how to force upgrades to pull :latest.</description>
          <pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Coming soon - building a threaded comments interface with React</title>
          <link>https://byroni.us/blog/threaded-comments</link>
          <guid>https://byroni.us/blog/threaded-comments</guid>
          <description>I&apos;ve built a good interface for viewing threaded comments on mobile interfaces.</description>
          <pubDate>Fri, 31 Jan 2025 00:00:00 GMT</pubDate>
        </item>
    </channel>
  </rss>