<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Field Notes — Shehzad Aslam</title>
    <link>https://shezz77.com/blog/</link>
    <description>Short, practical write-ups on architecture, event-driven systems, cloud and DevOps modernization, and engineering leadership.</description>
    <language>en</language>
    <atom:link href="https://shezz77.com/blog/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Connect Claude Code to your database — without handing over the keys</title>
      <link>https://shezz77.com/blog/who-may-connect-to-your-mcp-server/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/who-may-connect-to-your-mcp-server/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>Reusing your app's own role rows is the right instinct, and it still leaves the hard question unanswered: which roles? Hardcode it and the first customer who disagrees files a ticket you cannot close.</description>
    </item>
    <item>
      <title>Let a model write the tests, let mutation testing grade them</title>
      <link>https://shezz77.com/blog/llm-tests-scored-by-mutation-testing/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/llm-tests-scored-by-mutation-testing/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>An LLM will happily take you from 44% coverage to 91% in an afternoon, and catch nothing. The fix is not a better prompt — it is a scoring function the model cannot argue with.</description>
    </item>
    <item>
      <title>Set up an MCP server for your application</title>
      <link>https://shezz77.com/blog/set-up-an-mcp-server/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/set-up-an-mcp-server/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>Write the server once and every client can use it — Claude Code, your own agent, the Messages API. Tools, resources, transports, config scopes, and the limits that bite in production.</description>
    </item>
    <item>
      <title>Your first agent with the Claude Agent SDK</title>
      <link>https://shezz77.com/blog/claude-agent-sdk-first-agent/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/claude-agent-sdk-first-agent/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>Claude Code as a library. Installing it, the two entry points, what the message stream actually contains, and the three limits you set before you let it run.</description>
    </item>
    <item>
      <title>Custom tools with the Claude Agent SDK</title>
      <link>https://shezz77.com/blog/claude-agent-sdk-custom-tools/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/claude-agent-sdk-custom-tools/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>The built-in tools cover files and shell. Everything specific to your business — issue trackers, deploy APIs, internal databases — you supply as an in-process MCP server.</description>
    </item>
    <item>
      <title>Subagents in the Claude Agent SDK: isolation and parallelism</title>
      <link>https://shezz77.com/blog/claude-agent-sdk-subagents/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/claude-agent-sdk-subagents/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>Delegation buys you a clean context window, real parallelism, and per-agent tool restrictions. It costs you a full context rebuild each time — which is the whole trade.</description>
    </item>
    <item>
      <title>Hooks and permissions: putting a boundary around an agent</title>
      <link>https://shezz77.com/blog/claude-agent-sdk-hooks-permissions/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/claude-agent-sdk-hooks-permissions/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>A prompt asking an agent not to do something is a request. A hook that returns deny is a boundary. Blocking, rewriting, auditing, and where each one belongs.</description>
    </item>
    <item>
      <title>Build a RabbitMQ retry pipeline in Laravel, end to end</title>
      <link>https://shezz77.com/blog/rabbitmq-retry-pipeline-laravel/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/rabbitmq-retry-pipeline-laravel/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>A complete walkthrough: topology, publisher, consumer contract, delay-exchange backoff, a poison lane, idempotency, and the tests that prove it.</description>
    </item>
    <item>
      <title>Laravel on ECS Fargate: the whole pipeline, start to finish</title>
      <link>https://shezz77.com/blog/laravel-on-ecs-fargate-tutorial/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/laravel-on-ecs-fargate-tutorial/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>Cloud &amp; DevOps</category>
      <description>Dockerfile, task definition, secrets, a migration gate, GitHub Actions, health checks that mean something, and a rollback that takes forty seconds.</description>
    </item>
    <item>
      <title>Make a slow MySQL query fast: a full diagnosis</title>
      <link>https://shezz77.com/blog/make-a-slow-mysql-query-fast/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/make-a-slow-mysql-query-fast/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>Cloud &amp; DevOps</category>
      <description>One real 4.2-second listing query, taken to 40 milliseconds. Reading EXPLAIN properly, composite index order, covering indexes, and keyset pagination.</description>
    </item>
    <item>
      <title>Modular monolith in Laravel: enforce the boundaries in CI</title>
      <link>https://shezz77.com/blog/modular-monolith-boundaries-laravel/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/modular-monolith-boundaries-laravel/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>Independent deploys and clear ownership without a distributed system. Module layout, a contracts-only rule, a failing build when it is broken, and how to extract later.</description>
    </item>
    <item>
      <title>A Laravel CI pipeline that actually catches things</title>
      <link>https://shezz77.com/blog/laravel-ci-pipeline-that-catches-things/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/laravel-ci-pipeline-that-catches-things/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>Cloud &amp; DevOps</category>
      <description>Most CI runs tests and stops. Here is the full pipeline: static analysis, real service containers, migration-safety checks, boundary rules, and a nine-minute budget.</description>
    </item>
    <item>
      <title>Wire an AI reviewer into CI without it becoming noise</title>
      <link>https://shezz77.com/blog/ai-reviewer-in-ci-without-noise/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/ai-reviewer-in-ci-without-noise/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>The naive version comments on everything and gets muted in a fortnight. Scoping to the diff, structured verdicts, a confidence gate, and measuring the signal ratio.</description>
    </item>
    <item>
      <title>Context is the job now</title>
      <link>https://shezz77.com/blog/context-is-the-job/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/context-is-the-job/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>The useful work happens before the question. Three minutes of assembling context is the difference between a suggestion I merge and a suggestion I argue with.</description>
    </item>
    <item>
      <title>Rubber-ducking with something that argues back</title>
      <link>https://shezz77.com/blog/argue-back-rubber-duck/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/argue-back-rubber-duck/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>I run design decisions past a model before I run them past a person. Not because it is smart — because it is available at 11pm and has no stake in the outcome.</description>
    </item>
    <item>
      <title>Reading a strange codebase in a day</title>
      <link>https://shezz77.com/blog/strange-codebase-in-a-day/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/strange-codebase-in-a-day/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>Inheriting 200k lines used to be a week of grep and optimism. The goal was never to have the code explained — it was to get a map you can be wrong about quickly.</description>
    </item>
    <item>
      <title>The bottleneck moved to review and nobody staffed for it</title>
      <link>https://shezz77.com/blog/the-review-bottleneck/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/the-review-bottleneck/</guid>
      <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
      <category>Leadership</category>
      <description>My team writes considerably more code than it did a year ago and ships about the same amount. The constraint moved, and our process did not move with it.</description>
    </item>
    <item>
      <title>Why we replaced 14 cron jobs with a single event bus</title>
      <link>https://shezz77.com/blog/event-bus-over-cron/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/event-bus-over-cron/</guid>
      <pubDate>Wed, 01 Jul 2026 09:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>Scheduled jobs are the cheapest way to build a distributed system and the most expensive way to run one. Here is the migration that closed our nightly failure window.</description>
    </item>
    <item>
      <title>The monolith you should keep</title>
      <link>https://shezz77.com/blog/the-monolith-you-should-keep/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/the-monolith-you-should-keep/</guid>
      <pubDate>Mon, 01 Jun 2026 09:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>Splitting a service is a bet on your ability to run more infrastructure. Often the right architecture decision is a well-bounded module and a boring deploy.</description>
    </item>
    <item>
      <title>ECS without tears: a deploy pipeline that is genuinely boring</title>
      <link>https://shezz77.com/blog/boring-ecs-pipeline/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/boring-ecs-pipeline/</guid>
      <pubDate>Fri, 01 May 2026 09:00:00 GMT</pubDate>
      <category>Cloud &amp; DevOps</category>
      <description>Docker build, ECR push, rolling update, health check, done. The interesting part is everything I deliberately left out.</description>
    </item>
    <item>
      <title>RabbitMQ retries: the three patterns that actually work</title>
      <link>https://shezz77.com/blog/rabbitmq-retries/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/rabbitmq-retries/</guid>
      <pubDate>Wed, 01 Apr 2026 09:00:00 GMT</pubDate>
      <category>Architecture</category>
      <description>Naive requeue is an infinite loop with extra steps. Delay exchanges, capped backoff, and a poison lane cover nearly everything you will hit in production.</description>
    </item>
    <item>
      <title>Reading code as a manager without taking the keyboard</title>
      <link>https://shezz77.com/blog/reading-code-as-a-manager/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/reading-code-as-a-manager/</guid>
      <pubDate>Sun, 01 Mar 2026 09:00:00 GMT</pubDate>
      <category>Leadership</category>
      <description>Staying technical as an engineering manager is not about writing the tricky patch. It is about reading enough to ask the question that saves a sprint.</description>
    </item>
    <item>
      <title>Shipping an Android app with an LLM in the loop</title>
      <link>https://shezz77.com/blog/android-with-an-llm/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/android-with-an-llm/</guid>
      <pubDate>Sun, 01 Feb 2026 09:00:00 GMT</pubDate>
      <category>AI</category>
      <description>Concept to Play Store with AI doing the scaffolding. What it genuinely accelerated, and the two places it quietly cost me a day.</description>
    </item>
    <item>
      <title>Data modeling for high-volume hiring workloads</title>
      <link>https://shezz77.com/blog/high-volume-hiring-data/</link>
      <guid isPermaLink="true">https://shezz77.com/blog/high-volume-hiring-data/</guid>
      <pubDate>Thu, 01 Jan 2026 09:00:00 GMT</pubDate>
      <category>Cloud &amp; DevOps</category>
      <description>Recruitment traffic is spiky, write-heavy, and read through dashboards. Three modeling choices kept assessment platforms responsive on campaign day.</description>
    </item>
  </channel>
</rss>
