<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sparrow field notes</title>
    <link>https://sarathsp06.github.io/sparrow/blog/</link>
    <atom:link href="https://sarathsp06.github.io/sparrow/blog/rss.xml" rel="self" type="application/rss+xml" />
    <description>Stories and engineering notes from the people building Sparrow.</description>
    <language>en</language>
    <item>
      <title>A letter that keeps its own secret</title>
      <link>https://sarathsp06.github.io/sparrow/blog/envelope-encryption/</link>
      <guid isPermaLink="true">https://sarathsp06.github.io/sparrow/blog/envelope-encryption/</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description>How Sparrow protects webhook credentials with envelope encryption. A database backup turns up somewhere it should not be, so we open it and see what a stranger would find.</description>
      <category>security</category><category>encryption</category><category>architecture</category>
    </item>
    <item>
      <title>Describe the payload, get the template</title>
      <link>https://sarathsp06.github.io/sparrow/blog/ai-template-drafting/</link>
      <guid isPermaLink="true">https://sarathsp06.github.io/sparrow/blog/ai-template-drafting/</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description>Draft a subscription's transform template from a plain-language description, verified by rendering and repaired until it works, with Anthropic, any OpenAI-compatible server, or a copy-and-paste prompt.</description>
      <category>templates</category><category>ai</category><category>subscriptions</category>
    </item>
    <item>
      <title>Speak the receiver's language</title>
      <link>https://sarathsp06.github.io/sparrow/blog/template-transformations/</link>
      <guid isPermaLink="true">https://sarathsp06.github.io/sparrow/blog/template-transformations/</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description>Why Sparrow uses Go templates for subscription transformations instead of embedding JavaScript, and what a small, restrained language buys you on the delivery path.</description>
      <category>webhooks</category><category>go</category><category>performance</category><category>security</category>
    </item>
    <item>
      <title>Write it down once</title>
      <link>https://sarathsp06.github.io/sparrow/blog/recipes-as-config/</link>
      <guid isPermaLink="true">https://sarathsp06.github.io/sparrow/blog/recipes-as-config/</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description>How Sparrow recipes turn webhooks into integrations for Slack, PagerDuty, ClickHouse and more. The first integration is a favour; by the third, you want to write it down.</description>
      <category>recipes</category><category>integrations</category>
    </item>
    <item>
      <title>Keep the record close</title>
      <link>https://sarathsp06.github.io/sparrow/blog/why-sparrow/</link>
      <guid isPermaLink="true">https://sarathsp06.github.io/sparrow/blog/why-sparrow/</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <description>Why Sparrow is self-hosted first. A partner's endpoint goes dark overnight, and the next morning the only thing that matters is whether you can say what they missed.</description>
      <category>architecture</category><category>self-hosting</category>
    </item>
    <item>
      <title>Knowing when to knock again</title>
      <link>https://sarathsp06.github.io/sparrow/blog/delivery-failures/</link>
      <guid isPermaLink="true">https://sarathsp06.github.io/sparrow/blog/delivery-failures/</guid>
      <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
      <description>How Sparrow classifies webhook delivery failures. A timeout, a 401 and a 503 look alike on a dashboard, but each one asks for a different response.</description>
      <category>webhooks</category><category>reliability</category>
    </item>
  </channel>
</rss>