<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Adham Al-Meklhafi — Writing</title>
    <link>https://adham-mustafa.vercel.app</link>
    <description>Adham Al-Meklhafi builds clear interfaces for complex systems and leads an eight-engineer frontend team across roughly 30 repositories.</description>
    <language>en</language>
    <item>
      <title>When events arrive faster than React can render</title>
      <link>https://adham-mustafa.vercel.app/blog/rendering-50k-security-events/</link>
      <guid>https://adham-mustafa.vercel.app/blog/rendering-50k-security-events/</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <description>The row count is only part of the problem. Most stutter starts earlier, in the way data enters the browser, reaches the store, and wakes React.</description>
    </item>
    <item>
      <title>Moving unlike repositories from ESLint to Biome</title>
      <link>https://adham-mustafa.vercel.app/blog/eslint-to-biome-multi-repo/</link>
      <guid>https://adham-mustafa.vercel.app/blog/eslint-to-biome-multi-repo/</guid>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
      <description>Running Biome was easy. The real work was finding what ESLint did in each repository and what we would lose by removing it too quickly.</description>
    </item>
    <item>
      <title>What I learned after the first real gRPC-Web interface</title>
      <link>https://adham-mustafa.vercel.app/blog/grpc-web-react-missing-docs/</link>
      <guid>https://adham-mustafa.vercel.app/blog/grpc-web-react-missing-docs/</guid>
      <pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate>
      <description>The first unary call is easy. The work starts with cancellation, deadlines, streaming, errors, and the code generated from proto files.</description>
    </item>
    <item>
      <title>Leading a frontend team across different stacks</title>
      <link>https://adham-mustafa.vercel.app/blog/leading-frontend-team-different-stacks/</link>
      <guid>https://adham-mustafa.vercel.app/blog/leading-frontend-team-different-stacks/</guid>
      <pubDate>Sun, 25 Jan 2026 00:00:00 GMT</pubDate>
      <description>We have eight engineers and roughly 30 repositories. I did not try to make them identical; I focused on making movement between them understandable.</description>
    </item>
    <item>
      <title>Why we built a manifest instead of moving 30 repositories</title>
      <link>https://adham-mustafa.vercel.app/blog/polyrepo-over-monorepo/</link>
      <guid>https://adham-mustafa.vercel.app/blog/polyrepo-over-monorepo/</guid>
      <pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate>
      <description>Independent repositories were an intentional boundary. What we were missing was one map that made setup and inspection repeatable.</description>
    </item>
    <item>
      <title>What a security analyst needs from a data table</title>
      <link>https://adham-mustafa.vercel.app/blog/data-tables-analysts-work-in/</link>
      <guid>https://adham-mustafa.vercel.app/blog/data-tables-analysts-work-in/</guid>
      <pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate>
      <description>An analyst does not read rows in order. They search, compare, open details, and come back, so the table has to preserve the investigation.</description>
    </item>
  </channel>
</rss>