<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Notes · Abdul Ahad Qureshi</title>
  <link>https://abdulahadqureshi.dev/notes/</link>
  <atom:link href="https://abdulahadqureshi.dev/notes/feed.xml" rel="self" type="application/rss+xml"/>
  <description>Engineering notes on the decisions behind Balti and Fractional Coordinator.</description>
  <language>en</language>
  <item>
    <title>Undo on any S3 bucket, without versioning</title>
    <link>https://abdulahadqureshi.dev/notes/undo-without-bucket-versioning/</link>
    <guid isPermaLink="true">https://abdulahadqureshi.dev/notes/undo-without-bucket-versioning/</guid>
    <pubDate>Thu, 29 Oct 2026 09:00:00 +0500</pubDate>
    <description>How Balti makes deletes, overwrites and moves reversible on any S3-compatible bucket without object versioning, using a trash prefix and typed rollback recipes.</description>
  </item>
  <item>
    <title>Entitlements that fail closed</title>
    <link>https://abdulahadqureshi.dev/notes/entitlements-that-fail-closed/</link>
    <guid isPermaLink="true">https://abdulahadqureshi.dev/notes/entitlements-that-fail-closed/</guid>
    <pubDate>Thu, 29 Oct 2026 09:00:00 +0500</pubDate>
    <description>Entitlements in a multi-tenant NestJS portal: grants on the membership, presence-as-granted rows, shared Zod keys and a guard that denies undeclared routes.</description>
  </item>
  <item>
    <title>Uploading past the serverless body limit</title>
    <link>https://abdulahadqureshi.dev/notes/uploads-past-the-serverless-body-limit/</link>
    <guid isPermaLink="true">https://abdulahadqureshi.dev/notes/uploads-past-the-serverless-body-limit/</guid>
    <pubDate>Thu, 29 Oct 2026 09:00:00 +0500</pubDate>
    <description>How Balti uploads large files to S3-compatible buckets from a Vercel app: presigned PUTs with automatic CORS, and a chunked fallback joined by S3 multipart.</description>
  </item>
</channel>
</rss>
