<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Niraj Budhathoki — Writing</title>
    <link>https://nirajbudhathoki.com.np/writing</link>
    <atom:link href="https://nirajbudhathoki.com.np/rss.xml" rel="self" type="application/rss+xml" />
    <description>Engineering case studies and notes from real production work.</description>
    <language>en</language>
    <lastBuildDate>Wed, 01 Jul 2026 06:56:34 GMT</lastBuildDate>
    <item>
      <title>Making AI features survive real users</title>
      <link>https://nirajbudhathoki.com.np/writing/ai-features-that-survive-production</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/ai-features-that-survive-production</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <category>Case study</category>
      <description>A practical case study on shipping reliable, cost-controlled AI features in production — retry and rollback, quota accounting, billing gates, and session caching around language-model calls.</description>
    </item>
    <item>
      <title>Keeping the same data in sync across every screen</title>
      <link>https://nirajbudhathoki.com.np/writing/keeping-ui-state-in-sync</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/keeping-ui-state-in-sync</guid>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <category>Case study</category>
      <description>Patterns for keeping derived UI state consistent across views in a real-time app — one canonical source of truth, value-based diffing, and cache-busting keyed on identity changes.</description>
    </item>
    <item>
      <title>Modeling a relationship lifecycle that doesn't leak</title>
      <link>https://nirajbudhathoki.com.np/writing/relationship-lifecycle-that-doesnt-leak</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/relationship-lifecycle-that-doesnt-leak</guid>
      <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
      <category>Case study</category>
      <description>How to model a bidirectional invite/relationship lifecycle correctly — enforcing accept-before-share, scoping disconnects to a single edge, idempotent cancels, and quota that settles on acceptance.</description>
    </item>
    <item>
      <title>Building a database from scratch, in public</title>
      <link>https://nirajbudhathoki.com.np/writing/building-a-database-from-scratch</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/building-a-database-from-scratch</guid>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <category>Note</category>
      <description>Why I'm building mini_db, a database engine from scratch in C++ — climbing under the abstractions I've shipped on for years, and how fundamentals and shipping fluency compound.</description>
    </item>
    <item>
      <title>Shipping a full product solo — on your own infrastructure</title>
      <link>https://nirajbudhathoki.com.np/writing/shipping-solo-on-your-own-infra</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/shipping-solo-on-your-own-infra</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <category>Note</category>
      <description>Lessons from building and self-hosting a full Next.js travel platform solo — self-hosted Supabase on a VPS, a GitHub Actions deploy pipeline, CORS proxying, i18n, and a structured CMS.</description>
    </item>
    <item>
      <title>Server-driven UI without the JavaScript spaghetti</title>
      <link>https://nirajbudhathoki.com.np/writing/server-driven-ui-without-spaghetti</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/server-driven-ui-without-spaghetti</guid>
      <pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate>
      <category>Case study</category>
      <description>Patterns for server-driven UI with Turbo and Stimulus in Rails: multi-step flows over Turbo Frames, Stimulus outlets instead of global window events, and small, single-purpose controllers.</description>
    </item>
    <item>
      <title>When search silently drops the right results</title>
      <link>https://nirajbudhathoki.com.np/writing/when-search-drops-results</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/when-search-drops-results</guid>
      <pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate>
      <category>Note</category>
      <description>A short note on a search bug where live events vanished from results at a date boundary — why silent omissions are the worst bugs, and why reindexing logic needs integration tests.</description>
    </item>
    <item>
      <title>Server-rendering a marketing site for SEO</title>
      <link>https://nirajbudhathoki.com.np/writing/server-rendering-for-seo</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/server-rendering-for-seo</guid>
      <pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate>
      <category>Case study</category>
      <description>How moving marketing and landing pages to server-side rendering fixed search visibility and Core Web Vitals on a high-traffic events site — plus why SEO and performance are the same problem.</description>
    </item>
    <item>
      <title>Modelling money and approvals you can trust</title>
      <link>https://nirajbudhathoki.com.np/writing/modelling-money-and-approvals</link>
      <guid isPermaLink="true">https://nirajbudhathoki.com.np/writing/modelling-money-and-approvals</guid>
      <pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate>
      <category>Case study</category>
      <description>Lessons from building the finance and payroll core of an operations SaaS: modelling money as an append-only ledger, making approvals first-class, and why reversible migrations matter early.</description>
    </item>
  </channel>
</rss>
