<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Andrew Voirol</title>
    <link>https://andrewvoirol.com</link>
    <description>Builder, hacker, shipper.</description>
    <atom:link href="https://andrewvoirol.com/feed.xml" rel="self" type="application/rss+xml"/>
    
    <item>
      <title><![CDATA[Content pipeline overhaul: the site now builds itself from atoms]]></title>
      <link>https://andrewvoirol.com/log/content-pipeline-overhaul</link>
      <guid>https://andrewvoirol.com/log/content-pipeline-overhaul</guid>
      <pubDate>Sun, 23 Aug 2026 15:06:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[MUJŌ Atelier: 5 lab experiments for the physics engine]]></title>
      <link>https://andrewvoirol.com/log/mujo-atelier-5-lab-experiments</link>
      <guid>https://andrewvoirol.com/log/mujo-atelier-5-lab-experiments</guid>
      <pubDate>Thu, 20 Aug 2026 15:00:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Killing the caterpillar: eliminating vector-art artifacts]]></title>
      <link>https://andrewvoirol.com/log/killing-the-caterpillar-eliminating-vector-art-artifacts</link>
      <guid>https://andrewvoirol.com/log/killing-the-caterpillar-eliminating-vector-art-artifacts</guid>
      <pubDate>Wed, 19 Aug 2026 16:00:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[48 elastic bristle rods on the GPU]]></title>
      <link>https://andrewvoirol.com/log/48-elastic-bristle-rods-on-the-gpu</link>
      <guid>https://andrewvoirol.com/log/48-elastic-bristle-rods-on-the-gpu</guid>
      <pubDate>Mon, 17 Aug 2026 14:30:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[MUJŌ: first ink on digital washi]]></title>
      <link>https://andrewvoirol.com/log/mujo-first-ink-on-digital-washi</link>
      <guid>https://andrewvoirol.com/log/mujo-first-ink-on-digital-washi</guid>
      <pubDate>Sat, 15 Aug 2026 17:20:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Building MUJŌ: WebGPU Watercolor Engine]]></title>
      <link>https://andrewvoirol.com/work/mujo-watercolor</link>
      <guid>https://andrewvoirol.com/work/mujo-watercolor</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[A physically-based Japanese watercolor and sumi-e simulation running entirely on WebGPU compute shaders — Kubelka-Munk optics, fluid dynamics, 3D elastic bristle physics, and Zen impermanence.]]></description>
    </item>
    <item>
      <title><![CDATA[MUJŌ: WebGPU Watercolor Engine]]></title>
      <link>https://andrewvoirol.com/work/mujo</link>
      <guid>https://andrewvoirol.com/work/mujo</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <category>project</category>
      <description><![CDATA[A physics-based Japanese calligraphy and watercolor simulation running entirely in WebGPU compute shaders. Kubelka-Munk pigment mixing, Navier-Stokes fluid dynamics, and 48-bristle brush physics — all on the GPU.]]></description>
    </item>
    <item>
      <title><![CDATA[Stats dashboard, sound picker, and shipping dockless]]></title>
      <link>https://andrewvoirol.com/log/stats-sounds-and-shipping-dockless</link>
      <guid>https://andrewvoirol.com/log/stats-sounds-and-shipping-dockless</guid>
      <pubDate>Fri, 14 Aug 2026 13:30:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Snooze penalties: the feature that makes a timer actually work]]></title>
      <link>https://andrewvoirol.com/log/snooze-penalties-that-actually-work</link>
      <guid>https://andrewvoirol.com/log/snooze-penalties-that-actually-work</guid>
      <pubDate>Fri, 14 Aug 2026 13:26:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[A full macOS menu bar app in 14 minutes flat]]></title>
      <link>https://andrewvoirol.com/log/menu-bar-app-in-14-minutes</link>
      <guid>https://andrewvoirol.com/log/menu-bar-app-in-14-minutes</guid>
      <pubDate>Fri, 14 Aug 2026 13:16:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Personal Pomodoro: Gemini 3.7 Flash Builds a Native Mac App]]></title>
      <link>https://andrewvoirol.com/work/personal-pomodoro-build</link>
      <guid>https://andrewvoirol.com/work/personal-pomodoro-build</guid>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[Testing a model's ceiling by asking it to build a complete macOS menu bar Pomodoro timer — penalty engine, break micro-tasks, stats dashboard — in a single Antigravity session.]]></description>
    </item>
    <item>
      <title><![CDATA[Resonance sweeps, strain heatmaps, and yield-stress fracture]]></title>
      <link>https://andrewvoirol.com/log/stress-lab-resonance-sweeps-and-yield-fracture</link>
      <guid>https://andrewvoirol.com/log/stress-lab-resonance-sweeps-and-yield-fracture</guid>
      <pubDate>Thu, 13 Aug 2026 17:56:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Topological face extraction and Euler target rings]]></title>
      <link>https://andrewvoirol.com/log/topological-face-extraction-and-euler-target-rings</link>
      <guid>https://andrewvoirol.com/log/topological-face-extraction-and-euler-target-rings</guid>
      <pubDate>Thu, 13 Aug 2026 17:40:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[From Hoberman sphere breathing to C60 spring-mass physics]]></title>
      <link>https://andrewvoirol.com/log/from-hoberman-sphere-to-c60-spring-mass-physics</link>
      <guid>https://andrewvoirol.com/log/from-hoberman-sphere-to-c60-spring-mass-physics</guid>
      <pubDate>Wed, 29 Jul 2026 01:32:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[BuckyBounce: Molecular Physics & Euler Topology Lab]]></title>
      <link>https://andrewvoirol.com/work/buckybounce-physics-lab</link>
      <guid>https://andrewvoirol.com/work/buckybounce-physics-lab</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[An interactive Three.js structural mechanics playground exploring nanoscale allotropes, spring-mass lattice dynamics, harmonic resonance sweeps, and Euler face extraction.]]></description>
    </item>
    <item>
      <title><![CDATA[BuckyBounce: Molecular Physics Lab]]></title>
      <link>https://andrewvoirol.com/work/buckybounce</link>
      <guid>https://andrewvoirol.com/work/buckybounce</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <category>project</category>
      <description><![CDATA[An interactive Three.js structural mechanics playground exploring nanoscale allotropes, spring-mass lattice dynamics, harmonic resonance sweeps, and Euler face extraction.]]></description>
    </item>
    <item>
      <title><![CDATA[Edge Lab: shipped the iPhone side of the story]]></title>
      <link>https://andrewvoirol.com/log/edge-lab-shipped-the-iphone-side-of-the-story</link>
      <guid>https://andrewvoirol.com/log/edge-lab-shipped-the-iphone-side-of-the-story</guid>
      <pubDate>Tue, 02 Jun 2026 12:00:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Edge Lab: Building a Mobile AI Instrument]]></title>
      <link>https://andrewvoirol.com/work/edge-lab-development</link>
      <guid>https://andrewvoirol.com/work/edge-lab-development</guid>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[From desktop benchmarks to an open iOS app — deploying Gemma 4 on iPhone with four presets, versioned JSON manifests, and no cloud.]]></description>
    </item>
    <item>
      <title><![CDATA[Edge Lab]]></title>
      <link>https://andrewvoirol.com/work/edge-lab</link>
      <guid>https://andrewvoirol.com/work/edge-lab</guid>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>project</category>
      <description><![CDATA[Open on-device experiment matrix for Gemma / LiteRT-LM on iPhone. Four presets, versioned JSON manifests, no cloud.]]></description>
    </item>
    <item>
      <title><![CDATA[The bartowski experiment: confirming the impossible]]></title>
      <link>https://andrewvoirol.com/log/the-bartowski-experiment-confirming-the-impossible</link>
      <guid>https://andrewvoirol.com/log/the-bartowski-experiment-confirming-the-impossible</guid>
      <pubDate>Tue, 14 Apr 2026 12:03:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The agent talks back: full pipeline validated]]></title>
      <link>https://andrewvoirol.com/log/the-agent-talks</link>
      <guid>https://andrewvoirol.com/log/the-agent-talks</guid>
      <pubDate>Tue, 14 Apr 2026 12:02:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The MoE bug nobody told me about]]></title>
      <link>https://andrewvoirol.com/log/the-moe-bug-nobody-told-me-about</link>
      <guid>https://andrewvoirol.com/log/the-moe-bug-nobody-told-me-about</guid>
      <pubDate>Tue, 14 Apr 2026 12:01:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[From benchmarks to bots: ClawdyDawdy lives]]></title>
      <link>https://andrewvoirol.com/log/from-benchmarks-to</link>
      <guid>https://andrewvoirol.com/log/from-benchmarks-to</guid>
      <pubDate>Sun, 12 Apr 2026 12:05:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The subagent revelation & tiered routing]]></title>
      <link>https://andrewvoirol.com/log/the-subagent-revelation-tiered-routing</link>
      <guid>https://andrewvoirol.com/log/the-subagent-revelation-tiered-routing</guid>
      <pubDate>Sun, 12 Apr 2026 12:04:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[OpenClaw: Building a Local AI Agent]]></title>
      <link>https://andrewvoirol.com/work/openclaw-pipeline</link>
      <guid>https://andrewvoirol.com/work/openclaw-pipeline</guid>
      <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[From benchmark suite to autonomous Telegram bot — deploying Gemma 4 as an agentic pipeline on a 2017 iMac with Vulkan GPU acceleration.]]></description>
    </item>
    <item>
      <title><![CDATA[Needle-in-haystack: perfect retrieval, zero degradation]]></title>
      <link>https://andrewvoirol.com/log/needle-in-haystack-perfect-retrieval-zero-degradation</link>
      <guid>https://andrewvoirol.com/log/needle-in-haystack-perfect-retrieval-zero-degradation</guid>
      <pubDate>Sat, 11 Apr 2026 12:10:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[M4 Pro: 90 tok/s and the 31B reality check]]></title>
      <link>https://andrewvoirol.com/log/m4-pro-90-tok-s-and-the-31b-reality-check</link>
      <guid>https://andrewvoirol.com/log/m4-pro-90-tok-s-and-the-31b-reality-check</guid>
      <pubDate>Sat, 11 Apr 2026 12:09:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[31B quality collapse: the model that broke its own brain]]></title>
      <link>https://andrewvoirol.com/log/31b-quality-collapse-the-model-that-broke-its-own-brain</link>
      <guid>https://andrewvoirol.com/log/31b-quality-collapse-the-model-that-broke-its-own-brain</guid>
      <pubDate>Sat, 11 Apr 2026 12:08:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Unsloth wins the three-way quant showdown]]></title>
      <link>https://andrewvoirol.com/log/unsloth-wins-the-three-way-quant-showdown</link>
      <guid>https://andrewvoirol.com/log/unsloth-wins-the-three-way-quant-showdown</guid>
      <pubDate>Sat, 11 Apr 2026 12:07:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The overnight pipeline: two machines, five experiments, zero intervention]]></title>
      <link>https://andrewvoirol.com/log/the-overnight-pipeline-two-machines-five-experiments-zero-intervention</link>
      <guid>https://andrewvoirol.com/log/the-overnight-pipeline-two-machines-five-experiments-zero-intervention</guid>
      <pubDate>Sat, 11 Apr 2026 12:06:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The vibes pass: when you stop building and start feeling]]></title>
      <link>https://andrewvoirol.com/log/the-vibes-pass-when-you-stop-building-and-start-feeling</link>
      <guid>https://andrewvoirol.com/log/the-vibes-pass-when-you-stop-building-and-start-feeling</guid>
      <pubDate>Fri, 10 Apr 2026 12:13:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Show your work or it's a nothing burger]]></title>
      <link>https://andrewvoirol.com/log/show-your-work-or-its-a-nothing-burger</link>
      <guid>https://andrewvoirol.com/log/show-your-work-or-its-a-nothing-burger</guid>
      <pubDate>Fri, 10 Apr 2026 12:12:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[37.6 tok/s on a GPU everyone said was dead]]></title>
      <link>https://andrewvoirol.com/log/376-toks-on-a-gpu-everyone-said-was-dead</link>
      <guid>https://andrewvoirol.com/log/376-toks-on-a-gpu-everyone-said-was-dead</guid>
      <pubDate>Fri, 10 Apr 2026 12:11:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[13 hours, 46 minutes, no human intervention]]></title>
      <link>https://andrewvoirol.com/log/13-hours-46-minutes-no-human-intervention</link>
      <guid>https://andrewvoirol.com/log/13-hours-46-minutes-no-human-intervention</guid>
      <pubDate>Thu, 09 Apr 2026 12:19:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The grading artifact that almost ruined everything]]></title>
      <link>https://andrewvoirol.com/log/the-grading-artifact-that-almost-ruined-everything</link>
      <guid>https://andrewvoirol.com/log/the-grading-artifact-that-almost-ruined-everything</guid>
      <pubDate>Thu, 09 Apr 2026 12:18:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[94%. Zero errors. I told you so.]]></title>
      <link>https://andrewvoirol.com/log/94-zero-errors-i-told-you-so</link>
      <guid>https://andrewvoirol.com/log/94-zero-errors-i-told-you-so</guid>
      <pubDate>Thu, 09 Apr 2026 12:17:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The quantization showdown: Unsloth wins on efficiency, E4B is dead weight]]></title>
      <link>https://andrewvoirol.com/log/the-quantization</link>
      <guid>https://andrewvoirol.com/log/the-quantization</guid>
      <pubDate>Thu, 09 Apr 2026 12:16:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[F16 is the ceiling. Q8 already passed it.]]></title>
      <link>https://andrewvoirol.com/log/f16-is-the-ceiling-q8-already-passed-it</link>
      <guid>https://andrewvoirol.com/log/f16-is-the-ceiling-q8-already-passed-it</guid>
      <pubDate>Thu, 09 Apr 2026 12:15:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The inverted ladder. Q4 > Q8 > F16.]]></title>
      <link>https://andrewvoirol.com/log/the-inverted-ladder-q4-q8-f16</link>
      <guid>https://andrewvoirol.com/log/the-inverted-ladder-q4-q8-f16</guid>
      <pubDate>Thu, 09 Apr 2026 12:14:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Dark mode toggle with jelly physics]]></title>
      <link>https://andrewvoirol.com/log/dark-mode-toggle-with-jelly-physics</link>
      <guid>https://andrewvoirol.com/log/dark-mode-toggle-with-jelly-physics</guid>
      <pubDate>Wed, 08 Apr 2026 12:23:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Think mode: the counterintuitive results]]></title>
      <link>https://andrewvoirol.com/log/think-mode-the-counterintuitive-results</link>
      <guid>https://andrewvoirol.com/log/think-mode-the-counterintuitive-results</guid>
      <pubDate>Wed, 08 Apr 2026 12:22:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[10 million downloads and counting]]></title>
      <link>https://andrewvoirol.com/log/10-million-downloads-and-counting</link>
      <guid>https://andrewvoirol.com/log/10-million-downloads-and-counting</guid>
      <pubDate>Wed, 08 Apr 2026 12:21:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA['It won't run' — a story about conventional wisdom]]></title>
      <link>https://andrewvoirol.com/log/it-wont-run-a-story-about-conventional-wisdom</link>
      <guid>https://andrewvoirol.com/log/it-wont-run-a-story-about-conventional-wisdom</guid>
      <pubDate>Wed, 08 Apr 2026 12:20:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Building the Site]]></title>
      <link>https://andrewvoirol.com/work/building-the-site</link>
      <guid>https://andrewvoirol.com/work/building-the-site</guid>
      <pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[The meta-thread — designing, building, and shipping andrewvoirol.com. Micro-interactions, finding a voice, and the content pipeline that makes it all work.]]></description>
    </item>
    <item>
      <title><![CDATA[Cartography]]></title>
      <link>https://andrewvoirol.com/work/cartography</link>
      <guid>https://andrewvoirol.com/work/cartography</guid>
      <pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate>
      <category>project</category>
      <description><![CDATA[Interactive geographic visualizations built with d3-geo and Canvas 2D. A dot-matrix globe and a projection-morphing world map — both running at 60fps on the HTML canvas.]]></description>
    </item>
    <item>
      <title><![CDATA[Theme-reactive canvas without re-mounting]]></title>
      <link>https://andrewvoirol.com/log/theme-reactive-canvas-without-re-mounting</link>
      <guid>https://andrewvoirol.com/log/theme-reactive-canvas-without-re-mounting</guid>
      <pubDate>Tue, 07 Apr 2026 16:45:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Why I benchmark locally]]></title>
      <link>https://andrewvoirol.com/log/why-i-benchmark-locally</link>
      <guid>https://andrewvoirol.com/log/why-i-benchmark-locally</guid>
      <pubDate>Tue, 07 Apr 2026 12:24:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[The orchestration problem]]></title>
      <link>https://andrewvoirol.com/log/the-orchestration-problem</link>
      <guid>https://andrewvoirol.com/log/the-orchestration-problem</guid>
      <pubDate>Mon, 06 Apr 2026 12:25:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Running Gemma 4 on Consumer Hardware]]></title>
      <link>https://andrewvoirol.com/work/gemma-4-benchmarks</link>
      <guid>https://andrewvoirol.com/work/gemma-4-benchmarks</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[The full story of benchmarking Gemma 4 across a 2017 iMac and MacBook M4 Pro — GPU acceleration, quantization showdowns, overnight autonomous pipelines, and the model everyone said couldn't run scoring 94%.]]></description>
    </item>
    <item>
      <title><![CDATA[Gemma 4 Benchmark Suite]]></title>
      <link>https://andrewvoirol.com/work/gemma-4</link>
      <guid>https://andrewvoirol.com/work/gemma-4</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <category>project</category>
      <description><![CDATA[450+ tests across 7 models on two machines — iMac 2017 (Vulkan) and MacBook M4 Pro (Metal). GPU-accelerated to 90 tok/s.]]></description>
    </item>
    <item>
      <title><![CDATA[OpenClaw + Gemma 4: Local Agent Pipeline]]></title>
      <link>https://andrewvoirol.com/work/openclaw</link>
      <guid>https://andrewvoirol.com/work/openclaw</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <category>project</category>
      <description><![CDATA[A 2017 iMac running an autonomous AI agent via Telegram. Vulkan GPU acceleration, DuckDuckGo web search, tool-calling chains.]]></description>
    </item>
    <item>
      <title><![CDATA[Float32Array and 60fps: killing the jank]]></title>
      <link>https://andrewvoirol.com/log/float32array-and-60fps-killing-the-jank</link>
      <guid>https://andrewvoirol.com/log/float32array-and-60fps-killing-the-jank</guid>
      <pubDate>Sat, 04 Apr 2026 11:15:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Point cloud on a sphere: first render]]></title>
      <link>https://andrewvoirol.com/log/point-cloud-on-a-sphere-first-render</link>
      <guid>https://andrewvoirol.com/log/point-cloud-on-a-sphere-first-render</guid>
      <pubDate>Thu, 02 Apr 2026 14:30:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Building the Dot Matrix Globe]]></title>
      <link>https://andrewvoirol.com/work/dot-matrix-globe-build</link>
      <guid>https://andrewvoirol.com/work/dot-matrix-globe-build</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[From Natural Earth TopoJSON to a theme-reactive, 60fps canvas globe — ~8,000 dots plotting the Earth as ambient generative art.]]></description>
    </item>
    <item>
      <title><![CDATA[Great-circle arcs and drag momentum]]></title>
      <link>https://andrewvoirol.com/log/great-circle-arcs-and-drag-momentum</link>
      <guid>https://andrewvoirol.com/log/great-circle-arcs-and-drag-momentum</guid>
      <pubDate>Wed, 12 Nov 2025 10:30:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Back-face culling kills the clip artifacts]]></title>
      <link>https://andrewvoirol.com/log/back-face-culling-kills-the-clip-artifacts</link>
      <guid>https://andrewvoirol.com/log/back-face-culling-kills-the-clip-artifacts</guid>
      <pubDate>Wed, 05 Nov 2025 14:40:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Interpolating between two d3 projections]]></title>
      <link>https://andrewvoirol.com/log/interpolating-between-two-d3-projections</link>
      <guid>https://andrewvoirol.com/log/interpolating-between-two-d3-projections</guid>
      <pubDate>Sat, 25 Oct 2025 19:20:00 GMT</pubDate>
      <category>log</category>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title><![CDATA[Building the Globe → Map Transform]]></title>
      <link>https://andrewvoirol.com/work/globe-to-map-build</link>
      <guid>https://andrewvoirol.com/work/globe-to-map-build</guid>
      <pubDate>Sat, 25 Oct 2025 00:00:00 GMT</pubDate>
      <category>thread</category>
      <description><![CDATA[Morphing a 3D globe into a flat map with real projection math — custom d3 projection interpolation, back-face culling, and great-circle connection arcs.]]></description>
    </item>
  </channel>
</rss>