[{"slug":"rate-limiting-aspnetcore","title":"Rate limiting in ASP.NET Core","description":"Fixed window, sliding window, token bucket, and concurrency limiters, each with a live demo you can tweak.","pubDate":"2026-10-09","tags":["dotnet","aspnetcore","rate-limiting"],"url":"https://sanam.me/blog/rate-limiting-aspnetcore/"},{"slug":"search-latency-opensearch","title":"Cutting search latency from seconds to under 100ms","description":"Moving product search off full-table wildcard scans and onto OpenSearch, with feature flags so rollback is a config change.","pubDate":"2026-09-20","tags":["performance","opensearch","sql-server","feature-flags"],"url":"https://sanam.me/blog/search-latency-opensearch/"},{"slug":"multi-region-sql-server","title":"Taking a single-region app to multi-region with SQL Server","description":"Central writes, SQL Server transactional replication to regional read replicas, and cross-region cache invalidation.","pubDate":"2026-08-15","tags":["distributed-systems","sql-server","replication","architecture"],"url":"https://sanam.me/blog/multi-region-sql-server/"},{"slug":"hello-world","title":"Hello, sanam.me: why I'm starting a blog","description":"Why this blog exists and what I plan to write about: .NET, distributed systems, databases, performance, and AI engineering.","pubDate":"2026-07-07","tags":["meta","introduction"],"url":"https://sanam.me/blog/hello-world/"}]