<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Behzad Fattahi — Blog</title>
    <link>https://behzadfattahi.com/blog</link>
    <atom:link href="https://behzadfattahi.com/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Articles by Behzad Fattahi on software architecture, .NET, React, and building systems that stay fast under load.</description>
    <language>en</language>
    <lastBuildDate>Sun, 16 Aug 2026 08:00:00 GMT</lastBuildDate>
    <item>
      <title>The Agent Development Lifecycle at n=1</title>
      <link>https://behzadfattahi.com/blog/agent-development-lifecycle</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/agent-development-lifecycle</guid>
      <pubDate>Sun, 16 Aug 2026 08:00:00 GMT</pubDate>
      <description>Cloudflare says agents write code faster than teams can review, deploy, and maintain it. I run that lifecycle on a one-person site, and the bottleneck is real.</description>
      <category>AI</category>
      <category>Process</category>
      <category>MCP</category>
    </item>
    <item>
      <title>The ORDER BY That Hid Our SQL Server Indexes</title>
      <link>https://behzadfattahi.com/blog/order-by-nulls-index-scan</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/order-by-nulls-index-scan</guid>
      <pubDate>Fri, 14 Aug 2026 08:00:00 GMT</pubDate>
      <description>A null-placement wrapper in generated SQL made every sorted query a full scan. Why medium data still timed out, and the fix that shipped in Hasura v2.50.0.</description>
      <category>SQL Server</category>
      <category>Performance</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>AI Writes the Code. Reading It Is the Job.</title>
      <link>https://behzadfattahi.com/blog/reading-ai-code</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/reading-ai-code</guid>
      <pubDate>Thu, 13 Aug 2026 08:00:00 GMT</pubDate>
      <description>Sonar says 42% of committed code is AI-generated or assisted, 96% of developers do not fully trust it, and only 48% always verify. Triage is the new skill.</description>
      <category>AI</category>
      <category>Process</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>Queues for Kafka: The Consumer Scaling Math Changed</title>
      <link>https://behzadfattahi.com/blog/kafka-queues-consumer-scaling</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/kafka-queues-consumer-scaling</guid>
      <pubDate>Tue, 11 Aug 2026 08:00:00 GMT</pubDate>
      <description>Kafka finally has real queue semantics: share groups decouple consumers from partitions. What that changes about scaling consumers, and what it costs you.</description>
      <category>Apache Kafka</category>
      <category>Architecture</category>
      <category>Scalability</category>
    </item>
    <item>
      <title>Agents on the Broker: ACL Lessons from a Fleet</title>
      <link>https://behzadfattahi.com/blog/mqtt-agent-permissions</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/mqtt-agent-permissions</guid>
      <pubDate>Thu, 06 Aug 2026 08:00:00 GMT</pubDate>
      <description>AI agents are joining device fleets as MQTT clients. What fleet ACLs already solve, what genuinely changes, and how I would wire agent permissions today.</description>
      <category>MQTT</category>
      <category>IoT</category>
      <category>Security</category>
      <category>MCP</category>
    </item>
    <item>
      <title>Stateless by Default: Reading the MCP C# SDK v2.0</title>
      <link>https://behzadfattahi.com/blog/mcp-stateless-by-default</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/mcp-stateless-by-default</guid>
      <pubDate>Wed, 05 Aug 2026 08:00:00 GMT</pubDate>
      <description>MCP servers just went stateless by default. Why that mirrors the journey every scaling backend takes, what MRTR really is, and where a session is still right.</description>
      <category>.NET</category>
      <category>Architecture</category>
      <category>MCP</category>
      <category>Scalability</category>
    </item>
    <item>
      <title>Version Upgrades Are a Performance Feature</title>
      <link>https://behzadfattahi.com/blog/version-upgrades-performance</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/version-upgrades-performance</guid>
      <pubDate>Sun, 02 Aug 2026 08:00:00 GMT</pubDate>
      <description>A runtime release is the cheapest performance work you can buy: how I read one with a production lens, verify wins on my hot paths, and decide when to jump.</description>
      <category>.NET</category>
      <category>Performance</category>
      <category>Architecture</category>
      <category>Process</category>
    </item>
    <item>
      <title>Before the First Commit: Stakeholders and Scale</title>
      <link>https://behzadfattahi.com/blog/before-the-first-commit</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/before-the-first-commit</guid>
      <pubDate>Fri, 31 Jul 2026 08:00:00 GMT</pubDate>
      <description>Most engineering failures are understanding failures. The stakeholder questions I ask before implementing any feature, and why designing on the growth curve keeps scaling from becoming a rewrite.</description>
      <category>Architecture</category>
      <category>Process</category>
      <category>Scalability</category>
      <category>Cloud-Native</category>
    </item>
    <item>
      <title>MQTT in Production: Topic Patterns and ACLs</title>
      <link>https://behzadfattahi.com/blog/mqtt-acl-topic-patterns</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/mqtt-acl-topic-patterns</guid>
      <pubDate>Sun, 12 Jul 2026 08:00:00 GMT</pubDate>
      <description>The topic tree is an API and the ACL is its type system. Designing MQTT topic hierarchies and wildcard subscriptions, locking devices down with placeholder ACL rules, and why EMQX is a strong default for high-throughput fleets.</description>
      <category>MQTT</category>
      <category>IoT</category>
      <category>EMQX</category>
      <category>Security</category>
    </item>
    <item>
      <title>Vertical vs. Horizontal Scaling: Choosing the Axis</title>
      <link>https://behzadfattahi.com/blog/vertical-vs-horizontal-scaling</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/vertical-vs-horizontal-scaling</guid>
      <pubDate>Sun, 28 Jun 2026 08:00:00 GMT</pubDate>
      <description>Scaling up and scaling out solve different problems. How to choose between them for stateless servers, databases, Apache Kafka, and Kubernetes — with the failure modes each choice buys you.</description>
      <category>Architecture</category>
      <category>Apache Kafka</category>
      <category>Kubernetes</category>
      <category>Scalability</category>
    </item>
    <item>
      <title>Real-Time .NET: SignalR, WebSockets, Backpressure</title>
      <link>https://behzadfattahi.com/blog/realtime-backpressure-dotnet</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/realtime-backpressure-dotnet</guid>
      <pubDate>Sun, 17 May 2026 08:00:00 GMT</pubDate>
      <description>Push-based APIs fail differently than request/response ones. Choosing between SignalR, raw WebSockets, SSE, and polling — and designing for slow consumers before they take the server down.</description>
      <category>.NET</category>
      <category>SignalR</category>
      <category>Real-time</category>
      <category>WebSockets</category>
    </item>
    <item>
      <title>Offline-First React: Render First, Fetch Second</title>
      <link>https://behzadfattahi.com/blog/offline-first-react</link>
      <guid isPermaLink="true">https://behzadfattahi.com/blog/offline-first-react</guid>
      <pubDate>Thu, 09 Apr 2026 08:00:00 GMT</pubDate>
      <description>This site paints instantly from bundled data and treats the API as an upgrade, not a dependency. The pattern, the trade-offs, and where it stops being worth it.</description>
      <category>React</category>
      <category>Performance</category>
      <category>Resilience</category>
    </item>
  </channel>
</rss>
