<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Abid Al Amin — Engineering Notes</title>
    <link>https://abidalamin.dev</link>
    <atom:link href="https://abidalamin.dev/rss.xml" rel="self" type="application/rss+xml" />
    <description>A personal engineering knowledge base: software concepts, system design practices and AI notes, written from real engineering experience.</description>
    <language>en</language>
    <lastBuildDate>Tue, 06 Oct 2026 10:51:18 GMT</lastBuildDate>
    <item>
      <title>Rate Limiting Algorithms: Which One to Pick and Why</title>
      <link>https://abidalamin.dev/concepts/rate-limiting-algorithms</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/rate-limiting-algorithms</guid>
      <description>Token bucket, leaky bucket, fixed window, sliding window log and sliding window counter — how each one decides, where each one breaks, and how to choose between them.</description>
      <category>Concepts</category>
      <category>Scalability</category>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>chmod, chown and What 600 Actually Means</title>
      <link>https://abidalamin.dev/concepts/file-permissions</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/file-permissions</guid>
      <description>Every file on a Unix system carries an owner, a group and nine permission bits. This is what those bits mean, why 600 and 700 keep showing up, how the octal digits are built, and the rules that make permissions behave differently than most people assume.</description>
      <category>Concepts</category>
      <category>Security</category>
      <pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>NAT and Port Forwarding: Public Port vs. Listening Port</title>
      <link>https://abidalamin.dev/concepts/nat-port-forwarding</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/nat-port-forwarding</guid>
      <description>A packet can arrive at one port number and be delivered to another. Once you know where that rewrite happens, firewall rules stop being guesswork — you allow the port the service actually receives traffic on inside the machine, not the port you typed into the client.</description>
      <category>Concepts</category>
      <category>Networking</category>
      <pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is an SSH Key?</title>
      <link>https://abidalamin.dev/concepts/ssh-keys</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/ssh-keys</guid>
      <description>An SSH key is a public/private keypair that proves who you are to a server without ever sending a secret over the wire — replacing passwords with a challenge you can only answer if you hold the private half.</description>
      <category>Concepts</category>
      <category>Security</category>
      <pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is a Circuit Breaker?</title>
      <link>https://abidalamin.dev/concepts/circuit-breaker</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/circuit-breaker</guid>
      <description>A circuit breaker stops a service from repeatedly calling a dependency that's already failing, giving it room to recover instead of being buried under retries.</description>
      <category>Concepts</category>
      <category>Architecture</category>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>LLM Evaluation</title>
      <link>https://abidalamin.dev/ai/llm-evaluation</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/llm-evaluation</guid>
      <description>Building eval sets, choosing between deterministic checks and model graders, and catching regressions before a prompt change ships.</description>
      <category>AI Learning</category>
      <category>Evaluation</category>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Tool Calling</title>
      <link>https://abidalamin.dev/ai/tool-calling</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/tool-calling</guid>
      <description>How structured tool use actually works under the hood, why it isn't function execution, and what makes a tool definition easy for a model to call correctly.</description>
      <category>AI Learning</category>
      <category>Agents</category>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is Consistent Hashing?</title>
      <link>https://abidalamin.dev/concepts/consistent-hashing</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/consistent-hashing</guid>
      <description>Consistent hashing distributes keys across nodes so that adding or removing a node only reshuffles a small fraction of keys, instead of nearly all of them.</description>
      <category>Concepts</category>
      <category>Distributed Systems</category>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AI Agents Explained</title>
      <link>https://abidalamin.dev/ai/ai-agents</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/ai-agents</guid>
      <description>What separates an agent from a single LLM call, how the agent loop actually runs, and where autonomous systems fail in practice.</description>
      <category>AI Learning</category>
      <category>Agents</category>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is Idempotency?</title>
      <link>https://abidalamin.dev/concepts/idempotency</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/idempotency</guid>
      <description>An idempotent operation produces the same result no matter how many times it's applied, which is the property that makes retrying a failed request safe in a distributed system.</description>
      <category>Concepts</category>
      <category>Distributed Systems</category>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>RAG vs Fine-tuning</title>
      <link>https://abidalamin.dev/ai/rag-vs-fine-tuning</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/rag-vs-fine-tuning</guid>
      <description>Two different mechanisms for adapting an LLM to your domain, what each one actually changes inside the system, and how to pick between them.</description>
      <category>AI Learning</category>
      <category>RAG</category>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is the Outbox Pattern?</title>
      <link>https://abidalamin.dev/concepts/outbox-pattern</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/outbox-pattern</guid>
      <description>The outbox pattern makes writing to a database and publishing an event look atomic by writing both in one transaction and relaying the event asynchronously.</description>
      <category>Concepts</category>
      <category>Distributed Systems</category>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Designing a File Storage System</title>
      <link>https://abidalamin.dev/system-design/file-storage-system</link>
      <guid isPermaLink="true">https://abidalamin.dev/system-design/file-storage-system</guid>
      <description>Design a file storage and sync service like Dropbox: chunking, deduplication, metadata separation, and multi-device sync.</description>
      <category>System Design</category>
      <category>Storage</category>
      <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is Write-Ahead Logging (WAL)?</title>
      <link>https://abidalamin.dev/concepts/WAL</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/WAL</guid>
      <description>Write-Ahead Logging (WAL) is a technique used in databases to ensure data integrity and durability by recording changes to a log before applying them to the database.</description>
      <category>Concepts</category>
      <category>Databases</category>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Prompt Engineering Fundamentals</title>
      <link>https://abidalamin.dev/ai/prompt-engineering</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/prompt-engineering</guid>
      <description>Structuring prompts, choosing between system and user content, and the failure modes that show up once a prompt leaves the playground.</description>
      <category>AI Learning</category>
      <category>Prompt Engineering</category>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is a Cache Stampede?</title>
      <link>https://abidalamin.dev/concepts/cache-stampede</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/cache-stampede</guid>
      <description>A cache stampede happens when a popular cached value expires and every waiting request rushes the origin at once, turning a cache miss into a self-inflicted denial of service.</description>
      <category>Concepts</category>
      <category>Caching</category>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Vector Databases Explained</title>
      <link>https://abidalamin.dev/ai/vector-databases</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/vector-databases</guid>
      <description>Why nearest-neighbor search needs its own index structure, how HNSW works, and what actually differs between vector database options.</description>
      <category>AI Learning</category>
      <category>Embeddings</category>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Designing a Rate Limiter</title>
      <link>https://abidalamin.dev/system-design/rate-limiter</link>
      <guid isPermaLink="true">https://abidalamin.dev/system-design/rate-limiter</guid>
      <description>Design a distributed rate limiter for an API gateway: algorithm choice, distributed counters, and protecting shared backends under load.</description>
      <category>System Design</category>
      <category>Scalability</category>
      <pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is a Database Index?</title>
      <link>https://abidalamin.dev/concepts/database-index</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/database-index</guid>
      <description>A database index trades extra storage and slower writes for the ability to find rows without scanning the whole table, the same trade a book's index makes for its reader.</description>
      <category>Concepts</category>
      <category>Databases</category>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What are Embeddings?</title>
      <link>https://abidalamin.dev/ai/embeddings</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/embeddings</guid>
      <description>How text becomes a vector, why cosine similarity works as a proxy for meaning, and what actually determines embedding quality.</description>
      <category>AI Learning</category>
      <category>Embeddings</category>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>HTTP/1.1 vs HTTP/2 vs HTTP/3</title>
      <link>https://abidalamin.dev/concepts/http-1-2-3</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/http-1-2-3</guid>
      <description>Each HTTP version fixes a specific bottleneck in the one before it, moving from one request per connection to multiplexed streams to a transport that no longer blocks on packet loss.</description>
      <category>Concepts</category>
      <category>Networking</category>
      <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Designing a Chat System</title>
      <link>https://abidalamin.dev/system-design/chat-system</link>
      <guid isPermaLink="true">https://abidalamin.dev/system-design/chat-system</guid>
      <description>Design a real-time chat system like WhatsApp or Slack: connection management, message ordering, delivery guarantees, and fan-out at scale.</description>
      <category>System Design</category>
      <category>Real-time</category>
      <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is RAG?</title>
      <link>https://abidalamin.dev/ai/rag</link>
      <guid isPermaLink="true">https://abidalamin.dev/ai/rag</guid>
      <description>How retrieval augmented generation grounds LLM outputs in your own data, and where the pattern breaks down in production.</description>
      <category>AI Learning</category>
      <category>RAG</category>
      <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>OAuth 2.0 Explained</title>
      <link>https://abidalamin.dev/concepts/oauth-2</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/oauth-2</guid>
      <description>OAuth 2.0 is an authorization framework that lets one application access resources on a user's behalf without ever seeing that user's password.</description>
      <category>Concepts</category>
      <category>Authentication</category>
      <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is a JWT?</title>
      <link>https://abidalamin.dev/concepts/jwt</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/jwt</guid>
      <description>A JWT is a signed, self-contained token format that lets a server verify claims about a user without a database lookup, at the cost of being hard to revoke early.</description>
      <category>Concepts</category>
      <category>Authentication</category>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Designing a Notification System</title>
      <link>https://abidalamin.dev/system-design/notification-system</link>
      <guid isPermaLink="true">https://abidalamin.dev/system-design/notification-system</guid>
      <description>Design a scalable notification system supporting email, SMS and push, with fan-out, retries, and per-channel rate limits.</description>
      <category>System Design</category>
      <category>Messaging</category>
      <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Designing a URL Shortener</title>
      <link>https://abidalamin.dev/system-design/url-shortener</link>
      <guid isPermaLink="true">https://abidalamin.dev/system-design/url-shortener</guid>
      <description>Design a URL shortening service like Bitly: encoding schemes, redirect latency, and read-heavy caching at scale.</description>
      <category>System Design</category>
      <category>Storage</category>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What is PKCE?</title>
      <link>https://abidalamin.dev/concepts/pkce</link>
      <guid isPermaLink="true">https://abidalamin.dev/concepts/pkce</guid>
      <description>PKCE hardens the OAuth 2.0 authorization code flow against interception attacks by binding the authorization request to the token exchange with a one-time secret.</description>
      <category>Concepts</category>
      <category>Authentication</category>
      <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>