<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rohan Kartik. Build journal.</title><description>Working notes on how this site was built. Branching patterns, photo pipelines, agent versus script tradeoffs.</description><link>https://rohankartik.com/</link><language>en</language><item><title>The agent designs. The script ships.</title><link>https://rohankartik.com/build/agent-as-architect-script-as-mechanic/</link><guid isPermaLink="true">https://rohankartik.com/build/agent-as-architect-script-as-mechanic/</guid><description>Claude decides what the about page should be. ship.sh decides nothing. The roles don&apos;t blur.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate></item><item><title>The card frame went away once the photo had alpha</title><link>https://rohankartik.com/build/card-to-floating-figure/</link><guid isPermaLink="true">https://rohankartik.com/build/card-to-floating-figure/</guid><description>Stripping the white card revealed the photo as a figure on the aurora instead of a portrait on a plate.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate></item><item><title>Voice constraints are an input, not a style sheet</title><link>https://rohankartik.com/build/voice-constraints-as-input/</link><guid isPermaLink="true">https://rohankartik.com/build/voice-constraints-as-input/</guid><description>A list of banned words and punctuation is the most useful single artifact I hand to any agent.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate></item><item><title>Atomic commits by default</title><link>https://rohankartik.com/build/atomic-commits-by-default/</link><guid isPermaLink="true">https://rohankartik.com/build/atomic-commits-by-default/</guid><description>Each ship.sh run produces three or fewer commits, each scoped to one logical change.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Best-effort patches with explicit fallbacks</title><link>https://rohankartik.com/build/best-effort-nav-patch/</link><guid isPermaLink="true">https://rohankartik.com/build/best-effort-nav-patch/</guid><description>The nav patcher tries two patterns, warns if both fail, and never blocks the ship.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Branch per feature, named for the moment</title><link>https://rohankartik.com/build/branch-per-feature/</link><guid isPermaLink="true">https://rohankartik.com/build/branch-per-feature/</guid><description>Each ship cuts a feature branch from master. The branch name is a sentence about the change.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>The bundle shipper pattern</title><link>https://rohankartik.com/build/bundle-shipper-pattern/</link><guid isPermaLink="true">https://rohankartik.com/build/bundle-shipper-pattern/</guid><description>When the sandbox can&apos;t reach the repo, hand the human a single bash command that does everything.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Print cleanup commands. Don&apos;t auto-delete.</title><link>https://rohankartik.com/build/bundle-cleanup-printed-not-auto/</link><guid isPermaLink="true">https://rohankartik.com/build/bundle-cleanup-printed-not-auto/</guid><description>Every ship script ends with rm commands you can copy. None of them run on their own.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Saving alpha into WebP without a halo</title><link>https://rohankartik.com/build/alpha-preserving-webp/</link><guid isPermaLink="true">https://rohankartik.com/build/alpha-preserving-webp/</guid><description>alpha_quality=100 and exact=True kept the soft edges of the cutouts clean over the aurora.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>The working tree must be clean before any ship</title><link>https://rohankartik.com/build/clean-tree-precondition/</link><guid isPermaLink="true">https://rohankartik.com/build/clean-tree-precondition/</guid><description>Every ship.sh aborts if git diff isn&apos;t empty. No exceptions, no auto-stash.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Cursor as a continuous slider</title><link>https://rohankartik.com/build/cursor-driven-crossfade/</link><guid isPermaLink="true">https://rohankartik.com/build/cursor-driven-crossfade/</guid><description>Mouse X drives the about hero through ten wardrobe frames as a continuous cross-fade, not a discrete scrub.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>One signature interaction per page, never the same one twice</title><link>https://rohankartik.com/build/distinct-interactions-per-page/</link><guid isPermaLink="true">https://rohankartik.com/build/distinct-interactions-per-page/</guid><description>The home, about, library, and stack each carry a different interactive idea. None repeat.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Extracting the noise URL instead of duplicating it</title><link>https://rohankartik.com/build/extracting-the-noise-url/</link><guid isPermaLink="true">https://rohankartik.com/build/extracting-the-noise-url/</guid><description>The about page reuses the home hero&apos;s noise texture by reading it out of hero.css at install time.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Two media queries decide whether the interaction runs</title><link>https://rohankartik.com/build/graceful-fallbacks/</link><guid isPermaLink="true">https://rohankartik.com/build/graceful-fallbacks/</guid><description>If the device is touch or the user prefers reduced motion, the script never attaches a listener.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Noise is what makes the aurora feel like a surface</title><link>https://rohankartik.com/build/noise-overlay-tunes-aurora/</link><guid isPermaLink="true">https://rohankartik.com/build/noise-overlay-tunes-aurora/</guid><description>A 14% opacity noise layer at mix-blend-mode multiply takes the aurora gradient from CSS to texture.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Vercel preview as the review loop</title><link>https://rohankartik.com/build/vercel-as-the-review-loop/</link><guid isPermaLink="true">https://rohankartik.com/build/vercel-as-the-review-loop/</guid><description>Every branch push gets a real URL. The review happens against the deployed preview, not the dev server.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>1.5 MB of lossy beats 11 MB of lossless</title><link>https://rohankartik.com/build/lossy-vs-lossless/</link><guid isPermaLink="true">https://rohankartik.com/build/lossy-vs-lossless/</guid><description>Quality 92 WebP keeps the photo&apos;s perceived quality and ships under a tenth of the lossless weight.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate></item></channel></rss>