<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kimmo Saari — Kirbo.DEV</title>
    <link>https://beta.kirbo.dev/blog</link>
    <description>Writing on TypeScript, React, DevOps, smart home projects, and lessons learned.</description>
    <language>en</language>
    <lastBuildDate>Sat, 22 Aug 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://beta.kirbo.dev/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Where R You?</title>
      <link>https://beta.kirbo.dev/blog/coding/where-r-you</link>
      <guid isPermaLink="true">https://beta.kirbo.dev/blog/coding/where-r-you</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <description>A handful of Slack workspaces, all showing whatever status I last bothered to type. So I built a Tauri app that watches the network and the calendar and sets it for me, per workspace — with Claude writing the Rust resolver, and me finding out which of Switchboard&apos;s old scars were worth reopening.</description>
    </item>
    <item>
      <title>Albumize</title>
      <link>https://beta.kirbo.dev/blog/coding/albumize</link>
      <guid isPermaLink="true">https://beta.kirbo.dev/blog/coding/albumize</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <description>I listen to albums, Spotify recommends tracks. Albumize expands playlists into full albums on a schedule — and taught me more than I expected about idempotency, ISO week numbers, and why unattended automation is where the real bugs live.</description>
    </item>
    <item>
      <title>Electrolux-to-MQTT</title>
      <link>https://beta.kirbo.dev/blog/smart-home/electrolux-to-mqtt</link>
      <guid isPermaLink="true">https://beta.kirbo.dev/blog/smart-home/electrolux-to-mqtt</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <description>The full story of my Electrolux → MQTT → Home Assistant bridge: a reverse-engineered login flow, an API that caches stale state and takes 15 seconds to fail, a climate entity stuck on &quot;Unavailable&quot;, and the debugging sessions behind all of it.</description>
    </item>
    <item>
      <title>Switchboard</title>
      <link>https://beta.kirbo.dev/blog/coding/switchboard</link>
      <guid isPermaLink="true">https://beta.kirbo.dev/blog/coding/switchboard</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <description>My old streaming app died because I invented ideas faster than I could build them. So I rebuilt it — with Claude writing the overwhelming majority of the code and me acting as product owner and architect. 837 commits and 97 releases later, this is what I learned.</description>
    </item>
    <item>
      <title>&lt;Kirbo.DEV /&gt;</title>
      <link>https://beta.kirbo.dev/blog/coding/kirbo-dev</link>
      <guid isPermaLink="true">https://beta.kirbo.dev/blog/coding/kirbo-dev</guid>
      <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
      <description>This portfolio sat half-built since 2019 — Ant-Design frontend, no backend, no content. Here&apos;s what got it shipped: Next.js, Keystatic, and an AI-assisted QA pipeline covering 242 visual-review cells and 44 Lighthouse audits across viewports, themes and devices.</description>
    </item>
  </channel>
</rss>
