<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog | Abdelwahab Mahmoud</title><description>Case studies and notes from building production systems.</description><link>https://abdelwahab.dev/</link><item><title>7.33M rows per call</title><link>https://abdelwahab.dev/blog/aurora/</link><guid isPermaLink="true">https://abdelwahab.dev/blog/aurora/</guid><description>One status broadcast ran 1,013 queries and pinned Aurora at 100% CPU. The fix was not an index. EXPLAIN showed each call scanning 7.33M rows.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate></item><item><title>One engine, three providers</title><link>https://abdelwahab.dev/blog/engine/</link><guid isPermaLink="true">https://abdelwahab.dev/blog/engine/</guid><description>Rate limits caused 65% of review failures. Treating them as &quot;retry later&quot; stopped provider outages from becoming ours.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Draining, not stopping</title><link>https://abdelwahab.dev/blog/fargate/</link><guid isPermaLink="true">https://abdelwahab.dev/blog/fargate/</guid><description>ECS scale-in was killing 2-hour translation jobs. So workers drain before they stop.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate></item><item><title>The verdict lives in code, not the prompt</title><link>https://abdelwahab.dev/blog/triage/</link><guid isPermaLink="true">https://abdelwahab.dev/blog/triage/</guid><description>Almost trusted a plausible explanation. So pass/fail had to live in tested code.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate></item></channel></rss>