<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Asif Sadat | Writing]]></title>
        <description><![CDATA[Stories from the work: systems, decisions, and lessons learned the hard way.]]></description>
        <link>https://www.asifsadat.com</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Thu, 15 Oct 2026 02:13:09 GMT</lastBuildDate>
        <atom:link href="https://www.asifsadat.com/api/rss.xml" rel="self" type="application/rss+xml"/>
        <language><![CDATA[en]]></language>
        <item>
            <title><![CDATA[A payment lands twice. The order gets created once.]]></title>
            <description><![CDATA[Two callback channels racing to settle the same transaction, an ERP that refuses an order with no payment on it, and the three honest ways a payment can end.]]></description>
            <link>https://www.asifsadat.com/notes/a-payment-lands-twice-the-order-gets-created-once</link>
            <guid isPermaLink="false">a-payment-lands-twice-the-order-gets-created-once</guid>
            <category><![CDATA[Engineering]]></category>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[One interface, two OAuth providers, and a third one I haven't had to build yet]]></title>
            <description><![CDATA[Designing the OAuth provider abstraction behind LinkedIn and Google sign-in for a CV platform, and why the next provider should cost almost nothing to add.]]></description>
            <link>https://www.asifsadat.com/notes/the-oauth-provider-i-havent-had-to-write-yet</link>
            <guid isPermaLink="false">the-oauth-provider-i-havent-had-to-write-yet</guid>
            <category><![CDATA[Engineering]]></category>
            <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The bottleneck moved from typing to judgment]]></title>
            <description><![CDATA[Cursor, Claude, and ChatGPT didn't make JSX cheaper to ship. They made the expensive part obvious: deciding whether the component belongs in the codebase at all.]]></description>
            <link>https://www.asifsadat.com/notes/the-bottleneck-moved-from-typing-to-judgment</link>
            <guid isPermaLink="false">the-bottleneck-moved-from-typing-to-judgment</guid>
            <category><![CDATA[Engineering]]></category>
            <pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Learning the backend on a frontend engineer's clock]]></title>
            <description><![CDATA[Not a detour: a deliberate move into schemas, APIs, and the half of the system I used to treat as a black box.]]></description>
            <link>https://www.asifsadat.com/notes/learning-the-backend-on-a-frontend-clock</link>
            <guid isPermaLink="false">learning-the-backend-on-a-frontend-clock</guid>
            <category><![CDATA[Growth]]></category>
            <pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How I moved a team off Angular without a rewrite]]></title>
            <description><![CDATA[The win was never "React is better." It was de-risking a framework change and bringing people with me.]]></description>
            <link>https://www.asifsadat.com/notes/moving-a-team-off-angular-without-a-rewrite</link>
            <guid isPermaLink="false">moving-a-team-off-angular-without-a-rewrite</guid>
            <category><![CDATA[Leadership]]></category>
            <pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>