<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Prakode — Notes by Suryo Prakoso Putra</title>
    <link>https://prakode.site</link>
    <description>Personal blog of Suryo Prakoso Putra: notes on backend engineering, fleet platforms, fintech systems and things learned along the way.</description>
    <language>en</language>
    <atom:link href="https://prakode.site/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How this blog is built: static Next.js, Cloudflare, and a visitor counter that doesn't spy</title>
      <link>https://prakode.site/blog/how-this-blog-is-built</link>
      <guid isPermaLink="true">https://prakode.site/blog/how-this-blog-is-built</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description>A look under the hood: MDX files in a repo, a fully static site, client-side search, GitHub-backed comments and a privacy-friendly view counter on Cloudflare D1.</description>
      <category>nextjs</category>
      <category>cloudflare</category>
      <category>meta</category>
    </item>
    <item>
      <title>When two services disagree about a table: why I built migradrift</title>
      <link>https://prakode.site/blog/when-two-services-disagree-about-a-table</link>
      <guid isPermaLink="true">https://prakode.site/blog/when-two-services-disagree-about-a-table</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description>Schema drift between services is quiet, boring and expensive. Here is the problem, the small Go tool I wrote to catch it in CI, and what it deliberately doesn't do.</description>
      <category>go</category>
      <category>postgres</category>
      <category>ci</category>
      <category>open-source</category>
    </item>
    <item>
      <title>Hello, world — why this blog exists</title>
      <link>https://prakode.site/blog/hello-world</link>
      <guid isPermaLink="true">https://prakode.site/blog/hello-world</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <description>A first post, and a template for how posts are written on this site.</description>
      <category>meta</category>
    </item>
  </channel>
</rss>
