<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kivo Blog</title>
    <link>https://example.com/blog/</link>
    <description>Engineering deep dives, product news, and practical guides from the team building the platform.</description>
    <language>en</language>
    <atom:link href="https://example.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Tue, 06 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Introducing durable workflows</title>
      <link>https://example.com/blog/introducing-durable-workflows/</link>
      <guid isPermaLink="true">https://example.com/blog/introducing-durable-workflows/</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <description>Run multi-step jobs that survive deploys, crashes, and timeouts. Each step is checkpointed, retried, and replayable from the dashboard.</description>
      <category>Product</category>
    </item>
    <item>
      <title>How we cut cold starts in half</title>
      <link>https://example.com/blog/cutting-cold-starts-in-half/</link>
      <guid isPermaLink="true">https://example.com/blog/cutting-cold-starts-in-half/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>A look at the snapshot cache, lazy module loading, and the routing change that brought the median cold start of a Node service from 410 ms to 190 ms.</description>
      <category>Engineering</category>
    </item>
    <item>
      <title>Why deploy tokens now expire after one hour</title>
      <link>https://example.com/blog/short-lived-deploy-tokens/</link>
      <guid isPermaLink="true">https://example.com/blog/short-lived-deploy-tokens/</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <description>Long-lived CI tokens are the easiest credential to leak. Here is how short-lived tokens work, and how to move your pipeline to them in a few minutes.</description>
      <category>Security</category>
    </item>
    <item>
      <title>Set up a preview environment for every pull request</title>
      <link>https://example.com/blog/preview-environments-for-every-pull-request/</link>
      <guid isPermaLink="true">https://example.com/blog/preview-environments-for-every-pull-request/</guid>
      <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
      <description>A step-by-step guide to deploying each pull request to its own URL, with its own database branch, and cleaning it up when the pull request closes.</description>
      <category>Guides</category>
    </item>
    <item>
      <title>Zero-downtime database migrations in five steps</title>
      <link>https://example.com/blog/zero-downtime-database-migrations/</link>
      <guid isPermaLink="true">https://example.com/blog/zero-downtime-database-migrations/</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <description>Renaming a column while the app is serving traffic is safe if you split the change into small, backward-compatible deploys. Here is the pattern we use.</description>
      <category>Engineering</category>
    </item>
    <item>
      <title>Set cost alerts before the surprise bill</title>
      <link>https://example.com/blog/set-cost-alerts-before-the-surprise-bill/</link>
      <guid isPermaLink="true">https://example.com/blog/set-cost-alerts-before-the-surprise-bill/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Budgets, per-service alerts, and spend caps: a short guide to knowing what you will pay before the invoice arrives.</description>
      <category>Guides</category>
    </item>
  </channel>
</rss>
