<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss-styles.xsl" type="text/xsl"?><rss version="2.0"><channel><title>threesided — journal</title><description>Short technical notes from real client + lab work. Bugs that ate a day, fixes that took three characters, the trade-offs between.</description><link>https://threesided.com/</link><language>en-us</language><copyright>© 2026 threesided</copyright><ttl>1440</ttl><item><title>Unpacking the ShredTab: New Adventures in DND Cards</title><link>https://threesided.com/journal/unpacking-the-shredtab-new-adventures-in-dnd-cards/</link><guid isPermaLink="true">https://threesided.com/journal/unpacking-the-shredtab-new-adventures-in-dnd-cards/</guid><description>Exploring the latest advancements in adventure processing on DND Cards, with a close look at the ShredTab feature and its integration.</description><pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate><category>DND Cards</category><category>pdf-shredder</category><category>adventure processing</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Ending Revoked keeps a book</title><link>https://threesided.com/journal/ending-revoked-keeps-a-book/</link><guid isPermaLink="true">https://threesided.com/journal/ending-revoked-keeps-a-book/</guid><description>Lines now advance with the narrator, the text bends to the reader, and Tippet keeps a book of every ending you find. Under the paint, nearly five hundred soft images were redrawn sharp.</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate><category>Ending Revoked</category><category>accessibility</category><category>visual novel</category><category>web performance</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Ending Revoked gets a lobby</title><link>https://threesided.com/journal/ending-revoked-gets-a-lobby/</link><guid isPermaLink="true">https://threesided.com/journal/ending-revoked-gets-a-lobby/</guid><description>The game moved to endingrevoked.com/play, and the root became a proper front of house: about, features, changelog, credits, and a press kit.</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>Ending Revoked</category><category>marketing site</category><category>web performance</category><category>visual novel</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The Director gets a narrator</title><link>https://threesided.com/journal/the-director-gets-a-narrator/</link><guid isPermaLink="true">https://threesided.com/journal/the-director-gets-a-narrator/</guid><description>Ending Revoked grew from one chapter into sixty-four narrated episodes, four genre crossovers, and a third run where the villain admits he has seen it before.</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>Ending Revoked</category><category>narration</category><category>visual novel</category><category>game design</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Raising Rainbows — and SDKs</title><link>https://threesided.com/journal/raising-rainbows-and-sdks/</link><guid isPermaLink="true">https://threesided.com/journal/raising-rainbows-and-sdks/</guid><description>Our latest Rainbow Wander update brought in iOS fixes and SDK upgrades. We navigate policy changes and find joy in the details.</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><category>android</category><category>rainbow-wander</category><category>sdk-update</category><category>ios-integration</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Pulling the Rug and Lifting Voices in Ending Revoked</title><link>https://threesided.com/journal/pulling-the-rug-and-lifting-voices-in-ending-revoked/</link><guid isPermaLink="true">https://threesided.com/journal/pulling-the-rug-and-lifting-voices-in-ending-revoked/</guid><description>Reflecting on recent updates to Ending Revoked, where we&apos;ve lifted limitations on voice casting and injected dynamic genre staging.</description><pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate><category>Ending Revoked</category><category>voice casting</category><category>genre staging</category><category>game design</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The Carriages We Carry</title><link>https://threesided.com/journal/the-carriages-we-carry/</link><guid isPermaLink="true">https://threesided.com/journal/the-carriages-we-carry/</guid><description>A look at the latest shipments for Ending Revoked, focusing on the intricate dance of reconstruction and the race against time.</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate><category>shipping</category><category>development</category><category>Ending Revoked</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Excuse My Blank: The Little Fixes</title><link>https://threesided.com/journal/excuse-my-blank-the-little-fixes/</link><guid isPermaLink="true">https://threesided.com/journal/excuse-my-blank-the-little-fixes/</guid><description>In the latest updates to Excuse My Blank, we shuffled around our jobs and patched a small security quirk. It&apos;s in the tiny moves that the real work unfolds.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><category>shipping</category><category>security</category><category>CI/CD</category><category>web development</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Remaking Life-Proof</title><link>https://threesided.com/journal/remaking-life-proof/</link><guid isPermaLink="true">https://threesided.com/journal/remaking-life-proof/</guid><description>We just integrated a feature near and dear to our narrative hearts.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>development</category><category>shipping</category><category>feature</category><category>Ending Revoked</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The remote thinks it is a mouse</title><link>https://threesided.com/journal/the-remote-thinks-it-is-a-mouse/</link><guid isPermaLink="true">https://threesided.com/journal/the-remote-thinks-it-is-a-mouse/</guid><description>Make Enemies made it onto Fire TV. The couch taught us the D-pad is not a mouse.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Make Enemies</category><category>Fire TV</category><category>Android TV</category><category>UX</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The stage tried to pick the ending</title><link>https://threesided.com/journal/the-stage-tried-to-pick-the-ending/</link><guid isPermaLink="true">https://threesided.com/journal/the-stage-tried-to-pick-the-ending/</guid><description>Ending Revoked Chapter I is live. The scar was a stage that wanted a vote, saves that wanted to guess, and media that wanted to rewrite memory.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Ending Revoked</category><category>Ink</category><category>Phaser</category><category>IndexedDB</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Wrangling Warnings and Embracing Accessibility in The Wrong Chosen</title><link>https://threesided.com/journal/wrangling-warnings-and-embracing-accessibility-in-the-wrong-chosen/</link><guid isPermaLink="true">https://threesided.com/journal/wrangling-warnings-and-embracing-accessibility-in-the-wrong-chosen/</guid><description>Our latest update unclutters warnings, embraces accessibility, and keeps our CDN streamlining efforts alive. Observations along the way are richer than mere fixes.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>development</category><category>accessibility</category><category>updates</category><category>The Wrong Chosen</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Adding Umami Cloud to SquishyMind</title><link>https://threesided.com/journal/adding-umami-cloud-to-squishymind/</link><guid isPermaLink="true">https://threesided.com/journal/adding-umami-cloud-to-squishymind/</guid><description>We integrated Umami Cloud analytics across SquishyMind, embracing a new level of user insights and challenges.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate><category>SquishyMind</category><category>Analytics</category><category>Umami Cloud</category><category>Integration</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Watching FuhNNY Fail Better</title><link>https://threesided.com/journal/watching-fuhnny-fail-better/</link><guid isPermaLink="true">https://threesided.com/journal/watching-fuhnny-fail-better/</guid><description>We added Sentry error monitoring and watched the coffins roll upstream.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><category>FuhNNY</category><category>Sentry</category><category>error monitoring</category><category>deployment</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>A text adventure should not feel like filing taxes</title><link>https://threesided.com/journal/a-text-adventure-should-not-feel-like-filing-taxes/</link><guid isPermaLink="true">https://threesided.com/journal/a-text-adventure-should-not-feel-like-filing-taxes/</guid><description>We shipped The Castle of a Thousand Bedroom Doors, a full-length fantasy comedy parser game and the reusable Defy Destiny TEXT engine beneath it.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>games</category><category>interactive-fiction</category><category>svelte</category><category>audio</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Catching Errors in the Darkroom</title><link>https://threesided.com/journal/catching-errors-in-the-darkroom/</link><guid isPermaLink="true">https://threesided.com/journal/catching-errors-in-the-darkroom/</guid><description>Exploring the intricacies of incorporating Sentry error monitoring into Poetry Obscura, elevating our workflow and keeping the verses flowing.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>Poetry Obscura</category><category>error monitoring</category><category>Sentry</category><category>deployment</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Launching into the Abyss: Instrumentation and Error Monitoring in Make Enemies</title><link>https://threesided.com/journal/launching-into-the-abyss-instrumentation-and-error-monitoring-in-make-enemies/</link><guid isPermaLink="true">https://threesided.com/journal/launching-into-the-abyss-instrumentation-and-error-monitoring-in-make-enemies/</guid><description>Our latest updates to Make Enemies involve key improvements in error tracking and environment-specific SDK gating, providing us with unseen insights and tighter control.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>Make Enemies</category><category>instrumentation</category><category>error monitoring</category><category>Sentry</category><category>RoomDO</category><category>development</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Keeping it Squishy: Sentry Joins the Team</title><link>https://threesided.com/journal/keeping-it-squishy-sentry-joins-the-team/</link><guid isPermaLink="true">https://threesided.com/journal/keeping-it-squishy-sentry-joins-the-team/</guid><description>We&apos;ve just integrated Sentry into SquishyMind to keep an eye on errors before they become existential threats. It&apos;s like adding a little safety net beneath our creative acrobatics.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>squishymind</category><category>error-monitoring</category><category>development</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Keeping Tabs on the Errors</title><link>https://threesided.com/journal/keeping-tabs-on-the-errors/</link><guid isPermaLink="true">https://threesided.com/journal/keeping-tabs-on-the-errors/</guid><description>We&apos;ve added Sentry error monitoring to Excuse My Blank, and it&apos;s already showing us everything we&apos;ve missed.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>monitoring</category><category>error handling</category><category>Sentry</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The blank project was the wrong starting point</title><link>https://threesided.com/journal/the-blank-project-was-the-wrong-starting-point/</link><guid isPermaLink="true">https://threesided.com/journal/the-blank-project-was-the-wrong-starting-point/</guid><description>We are turning project kickoff into a guided workshop that chooses a credible stack, establishes the design system, and produces something working before the real build begins.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><category>product strategy</category><category>design systems</category><category>AI</category><category>delivery</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The television is not a browser</title><link>https://threesided.com/journal/the-television-is-not-a-browser/</link><guid isPermaLink="true">https://threesided.com/journal/the-television-is-not-a-browser/</guid><description>Make Enemies reached Fire TV and Android TV with one shared client. Roku made us draw a harder line.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>Make Enemies</category><category>Roku</category><category>Android TV</category><category>Cloudflare</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The games studio gets its own door</title><link>https://threesided.com/journal/the-games-studio-gets-its-own-door/</link><guid isPermaLink="true">https://threesided.com/journal/the-games-studio-gets-its-own-door/</guid><description>We shipped games.threesided.com: a patch-notes front door for the party games, browser RPGs, and desktop pests.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate><category>games</category><category>astro</category><category>netlify</category><category>portfolio</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Repositioning and Reality: threesided&apos;s Independent Leap</title><link>https://threesided.com/journal/repositioning-and-reality-threesided-s-independent-leap/</link><guid isPermaLink="true">https://threesided.com/journal/repositioning-and-reality-threesided-s-independent-leap/</guid><description>We repositioned threesided as an independent product studio and updated our portfolio — and learned a thing or two about pushing boundaries.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><category>product studio</category><category>portfolio</category><category>independence</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Shipping Across Dimensions: The New Phase of Critical Fail</title><link>https://threesided.com/journal/shipping-across-dimensions-the-new-phase-of-critical-fail/</link><guid isPermaLink="true">https://threesided.com/journal/shipping-across-dimensions-the-new-phase-of-critical-fail/</guid><description>A behind-the-scenes look at the latest updates and improvements in Critical Fail, where shards, interiors, and game performance collide in a symphony of code.</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><category>gamedev</category><category>observability</category><category>performance</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Canvas Polish and the Art of Constant Refinement</title><link>https://threesided.com/journal/canvas-polish-and-the-art-of-constant-refinement/</link><guid isPermaLink="true">https://threesided.com/journal/canvas-polish-and-the-art-of-constant-refinement/</guid><description>Reflecting on recent updates to SquishyMind, from E2E tests to UX enhancements, and the gentle satisfaction found in polishing details.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>SquishyMind</category><category>UX</category><category>Testing</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Unhooking the Lighthouse</title><link>https://threesided.com/journal/unhooking-the-lighthouse/</link><guid isPermaLink="true">https://threesided.com/journal/unhooking-the-lighthouse/</guid><description>A journey through decoupling, syncing, and securing our deployment process.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>deployment</category><category>Lighthouse</category><category>security</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Rethinking the Landing of Big Black Cards</title><link>https://threesided.com/journal/rethinking-the-landing-of-big-black-cards/</link><guid isPermaLink="true">https://threesided.com/journal/rethinking-the-landing-of-big-black-cards/</guid><description>We&apos;ve leveled up the Big Black Cards experience with a thoughtful remodel of the landing page, lobby, and more. It&apos;s all about creating a smoother, more consistent journey.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Big Black Cards</category><category>Updates</category><category>UI/UX</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Steadying the Ship: Lighthouse Performance on Dungeon Jerks</title><link>https://threesided.com/journal/steadying-the-ship-lighthouse-performance-on-dungeon-jerks/</link><guid isPermaLink="true">https://threesided.com/journal/steadying-the-ship-lighthouse-performance-on-dungeon-jerks/</guid><description>We&apos;ve been quietly stabilizing our performance metrics on Dungeon Jerks, bringing a more consistent experience to adventure-seekers.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate><category>Dungeon Jerks</category><category>Performance</category><category>Lighthouse</category><category>Stabilization</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Shipping Experiments and Embracing Chaos</title><link>https://threesided.com/journal/shipping-experiments-and-embracing-chaos/</link><guid isPermaLink="true">https://threesided.com/journal/shipping-experiments-and-embracing-chaos/</guid><description>We navigated new waters with fresh demos and a graceful fallback for AI, while wrestling with storage limits and syncing challenges.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><category>shipping</category><category>development</category><category>demos</category><category>AI</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Shipping New Features on dnd.chat</title><link>https://threesided.com/journal/shipping-new-features-on-dnd-chat/</link><guid isPermaLink="true">https://threesided.com/journal/shipping-new-features-on-dnd-chat/</guid><description>Exploring the recent updates and what&apos;s coming into play on dnd.chat.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>product updates</category><category>dnd.chat</category><category>development</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Six demos, almost no libraries</title><link>https://threesided.com/journal/six-demos-almost-no-libraries/</link><guid isPermaLink="true">https://threesided.com/journal/six-demos-almost-no-libraries/</guid><description>We added six bleeding-edge demos to the lab. The thread through almost all of them: the thing we used to reach for a library to do, the browser now does itself.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>lab</category><category>webgpu</category><category>css</category><category>web-audio</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The Unseen Shapes of Vegas Kiddos</title><link>https://threesided.com/journal/the-unseen-shapes-of-vegas-kiddos/</link><guid isPermaLink="true">https://threesided.com/journal/the-unseen-shapes-of-vegas-kiddos/</guid><description>We dive into the subtle tweaks and background efforts that shape a more seamless experience for families exploring events in Vegas.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>web development</category><category>design</category><category>ux</category><category>infrastructure</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The cookie banner most of you won&apos;t see</title><link>https://threesided.com/journal/the-cookie-banner-most-of-you-wont-see/</link><guid isPermaLink="true">https://threesided.com/journal/the-cookie-banner-most-of-you-wont-see/</guid><description>We added analytics to threesided without slapping a cookie wall in front of everyone. The banner only shows where the law actually requires it.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><category>analytics</category><category>privacy</category><category>consent</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Building a grimoire instead of forking one</title><link>https://threesided.com/journal/building-a-grimoire-instead-of-forking-one/</link><guid isPermaLink="true">https://threesided.com/journal/building-a-grimoire-instead-of-forking-one/</guid><description>We had a Kanban fork in the drawer and open-source VTTs on the shelf — we still greenfielded DND Cards.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>dnd</category><category>next.js</category><category>supabase</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Relaunching AntiPretty from zero, not WordPress</title><link>https://threesided.com/journal/relaunching-antipretty-from-zero-not-wordpress/</link><guid isPermaLink="true">https://threesided.com/journal/relaunching-antipretty-from-zero-not-wordpress/</guid><description>Fifteen years of galleries on the old stack — we rewrote in two days on Payload instead of theme-hacking forward.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>next.js</category><category>payload</category><category>migration</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Campaign chat that shares the grimoire</title><link>https://threesided.com/journal/campaign-chat-that-shares-the-grimoire/</link><guid isPermaLink="true">https://threesided.com/journal/campaign-chat-that-shares-the-grimoire/</guid><description>We split the table from the board — same Supabase login, auditable rolls, conjures from the deck.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><category>dnd</category><category>next.js</category><category>supabase</category><category>chat</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>When bots write their own jokes</title><link>https://threesided.com/journal/when-bots-write-their-own-jokes/</link><guid isPermaLink="true">https://threesided.com/journal/when-bots-write-their-own-jokes/</guid><description>Big Black Cards Quiplash mode needed bots that improvise, not just pick from the deck.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>games</category><category>react</category><category>openai</category><category>party</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Scrape pipelines should fail loud</title><link>https://threesided.com/journal/scrape-pipelines-should-fail-loud/</link><guid isPermaLink="true">https://threesided.com/journal/scrape-pipelines-should-fail-loud/</guid><description>Vegas Kiddos taught us that a quiet empty scrape is worse than a red build.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>data</category><category>next.js</category><category>airtable</category><category>ops</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Spectator links for party games</title><link>https://threesided.com/journal/spectator-links-for-party-games/</link><guid isPermaLink="true">https://threesided.com/journal/spectator-links-for-party-games/</guid><description>Dungeon Jerks needed a way to watch the tavern without holding the dice.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>games</category><category>svelte</category><category>multiplayer</category><category>ux</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Importing D&amp;D Beyond without a second app</title><link>https://threesided.com/journal/importing-ddb-without-a-second-app/</link><guid isPermaLink="true">https://threesided.com/journal/importing-ddb-without-a-second-app/</guid><description>We wanted characters on the Kanban board, not a parallel sheet product.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><category>dnd</category><category>next.js</category><category>supabase</category><category>pdf</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Card-native VTT on a Kanban board</title><link>https://threesided.com/journal/card-native-vtt-on-a-kanban-board/</link><guid isPermaLink="true">https://threesided.com/journal/card-native-vtt-on-a-kanban-board/</guid><description>We merged a full combat engine into DND Cards without pretending the board was a battle map.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><category>dnd</category><category>next.js</category><category>supabase</category><category>vtt</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>When CPU bots need to wait for narration</title><link>https://threesided.com/journal/when-cpu-bots-need-to-wait-for-narration/</link><guid isPermaLink="true">https://threesided.com/journal/when-cpu-bots-need-to-wait-for-narration/</guid><description>Async Dungeon Jerks felt broken until bots stopped rolling while the tile was still talking.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><category>games</category><category>svelte</category><category>ux</category><category>audio</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Desktop gremlins that perch on your title bar</title><link>https://threesided.com/journal/desktop-gremlins-that-perch-on-your-title-bar/</link><guid isPermaLink="true">https://threesided.com/journal/desktop-gremlins-that-perch-on-your-title-bar/</guid><description>Desk Gremlins walks the screen edge in Tauri — perch is a one-time transport, not a second window.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><category>tauri</category><category>three.js</category><category>desktop</category><category>solidjs</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>MarchingCubes lets you color blobs. The material has to ask.</title><link>https://threesided.com/journal/marchingcubes-vertexcolors-gotcha/</link><guid isPermaLink="true">https://threesided.com/journal/marchingcubes-vertexcolors-gotcha/</guid><description>Six blobs, three colors, all rendered hot pink. The fix is one boolean.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><category>threejs</category><category>webgl</category><category>marching-cubes</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Lighthouse 100s are mostly a font problem</title><link>https://threesided.com/journal/lighthouse-100s-are-mostly-a-font-problem/</link><guid isPermaLink="true">https://threesided.com/journal/lighthouse-100s-are-mostly-a-font-problem/</guid><description>We had 88s and 92s on demo pages. One preload tag took them to 100.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><category>performance</category><category>fonts</category><category>lighthouse</category><category>cls</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>The Astro CSS scoping gotcha that ate my afternoon</title><link>https://threesided.com/journal/astro-scoping-ate-my-afternoon/</link><guid isPermaLink="true">https://threesided.com/journal/astro-scoping-ate-my-afternoon/</guid><description>Twelve custom view transitions, all looking identical. Took an embarrassing amount of time to spot why.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>astro</category><category>css</category><category>view-transitions</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Quote posts deserve real art, not gradients</title><link>https://threesided.com/journal/quote-posts-deserve-real-art-not-gradients/</link><guid isPermaLink="true">https://threesided.com/journal/quote-posts-deserve-real-art-not-gradients/</guid><description>Poetry Obscura v2 replaced flat quote cards with generated illustrations — one image per author, atmospheric, committed.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>astro</category><category>poetry</category><category>images</category><category>cms</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>When position:sticky silently dies</title><link>https://threesided.com/journal/when-position-sticky-dies/</link><guid isPermaLink="true">https://threesided.com/journal/when-position-sticky-dies/</guid><description>A scroll-driven 3D scene worked everywhere except where I needed it. The bug was three properties up the tree.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>css</category><category>scroll</category><category>sticky</category><author>hello@threesided.com (Adam Aragon)</author></item><item><title>Migrating a comedy blog off Webflow</title><link>https://threesided.com/journal/migrating-a-comedy-blog-off-webflow/</link><guid isPermaLink="true">https://threesided.com/journal/migrating-a-comedy-blog-off-webflow/</guid><description>FuhNNY relaunched on Astro with the same engineering playbook as Poetry Obscura — different vibe, same Jimp thumbs.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>astro</category><category>migration</category><category>content</category><author>hello@threesided.com (Adam Aragon)</author></item></channel></rss>