<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Raza Basit’s Blog</title><description>Distributed systems, backend infrastructure, and engineering post-mortems by Raza Basit.</description><link>https://raza.build/</link><item><title>Dependency Pinning in JavaScript — Why It Matters More Than You Think</title><link>https://raza.build/blog/dependency-pinning-javascript/</link><guid isPermaLink="true">https://raza.build/blog/dependency-pinning-javascript/</guid><description>Loose version ranges feel convenient until a patch update ships malware or breaks your build on a fresh clone. Here&apos;s the honest tradeoff between pinning and automatic updates, and where to land.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><readingTime>8 min read</readingTime></item><item><title>Git + Shell: Run Tooling Only on Files You Actually Changed</title><link>https://raza.build/blog/git-shell-run-tooling-changed-files/</link><guid isPermaLink="true">https://raza.build/blog/git-shell-run-tooling-changed-files/</guid><description>A simple but powerful shell pattern — pipe git log into your tooling so you&apos;re only formatting, linting, testing, and scanning the files that changed, not your entire codebase.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><readingTime>6 min read</readingTime></item><item><title>The Hidden Cost of Overfetching — How a NAT Gateway Spike Led Us Down a Rabbit Hole</title><link>https://raza.build/blog/hidden-cost-of-overfetching/</link><guid isPermaLink="true">https://raza.build/blog/hidden-cost-of-overfetching/</guid><description>A NAT gateway inbound traffic spike of 100MB/s with no deployment changes. The culprit wasn&apos;t the network — it was two overfetching bugs hiding in a Kafka consumer and a MongoDB query, exposed by moving to new infrastructure.</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><readingTime>10 min read</readingTime></item><item><title>Optimizing Rust Log Parsers</title><link>https://raza.build/blog/optimizing-rust/</link><guid isPermaLink="true">https://raza.build/blog/optimizing-rust/</guid><description>A deep dive into zero-copy parsing techniques and SIMD optimizations for high-throughput logging infrastructure.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><readingTime>8 min read</readingTime></item><item><title>Build a Rate Limiter in Go — Part 2: Scaling with Map Sharding</title><link>https://raza.build/blog/rate-limiter-go-map-sharding/</link><guid isPermaLink="true">https://raza.build/blog/rate-limiter-go-map-sharding/</guid><description>In Part 1 we built a correct sliding window rate limiter. In Part 2 we fix its biggest weakness — a global lock that blocks real traffic during cleanup at scale.</description><pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate><readingTime>7 min read</readingTime></item><item><title>Build a Rate Limiter in Go — Part 4: Redis-Backed Distributed Rate Limiting</title><link>https://raza.build/blog/rate-limiter-go-redis-distributed/</link><guid isPermaLink="true">https://raza.build/blog/rate-limiter-go-redis-distributed/</guid><description>In-memory rate limiters break the moment you scale horizontally. In Part 4 we move state into Redis, introduce a Store interface for flexibility, and implement both sliding window and token bucket algorithms that work correctly across multiple instances.</description><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate><readingTime>10 min read</readingTime></item><item><title>Build a Rate Limiter in Go — Part 1: The Sliding Window</title><link>https://raza.build/blog/rate-limiter-go-sliding-window/</link><guid isPermaLink="true">https://raza.build/blog/rate-limiter-go-sliding-window/</guid><description>A practical guide to building a correct, concurrent, memory-safe rate limiter in Go using the sliding window algorithm — with honest tradeoffs included.</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><readingTime>6 min read</readingTime></item><item><title>Build a Rate Limiter in Go — Part 3: The Token Bucket Algorithm</title><link>https://raza.build/blog/rate-limiter-go-token-bucket/</link><guid isPermaLink="true">https://raza.build/blog/rate-limiter-go-token-bucket/</guid><description>The sliding window isn&apos;t the only way to rate limit. In Part 3 we implement the token bucket algorithm — a different mental model that handles bursts more gracefully.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><readingTime>7 min read</readingTime></item><item><title>Building a Safe SQLite MCP Server in Go — Why Agents Shouldn&apos;t Have Raw Database Access</title><link>https://raza.build/blog/safe-sqlite-mcp-server-go/</link><guid isPermaLink="true">https://raza.build/blog/safe-sqlite-mcp-server-go/</guid><description>Exposing raw SQL or shell access to AI agents is an operational disaster waiting to happen. Here is how to build a single-binary Model Context Protocol (MCP) server in Go with immutable database guardrails.</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><readingTime>11 min read</readingTime></item></channel></rss>