<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Mahmudul Islam – Blog</title><description>Notes on backend engineering, Python, TypeScript and LLM/RAG in production.</description><link>https://mdislam.dev/</link><language>en</language><item><title>Circuit breakers: failing fast when a dependency is down</title><link>https://mdislam.dev/blog/2026-11-04-circuit-breakers-failing-fast/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-11-04-circuit-breakers-failing-fast/</guid><description>When a downstream service is struggling, waiting on it makes things worse. A circuit breaker stops calling it for a while so both sides can recover.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>backend</category><category>reliability</category><category>architecture</category></item><item><title>Retrying failed requests with exponential backoff and jitter</title><link>https://mdislam.dev/blog/2026-11-03-retries-exponential-backoff-jitter/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-11-03-retries-exponential-backoff-jitter/</guid><description>A retry loop can rescue a request or take down a struggling service. Here is how to retry with backoff, jitter and a budget so it does the first.</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>api-design</category><category>backend</category><category>reliability</category></item><item><title>Zero-downtime schema migrations with expand and contract</title><link>https://mdislam.dev/blog/2026-11-02-zero-downtime-schema-migrations/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-11-02-zero-downtime-schema-migrations/</guid><description>Old and new code run side by side during every deploy. Here is how to change a database schema in small, safe steps so neither version breaks.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>databases</category><category>backend</category><category>postgres</category><category>devops</category></item><item><title>Graceful shutdown: handling SIGTERM without dropping requests</title><link>https://mdislam.dev/blog/2026-10-31-graceful-shutdown-sigterm/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-31-graceful-shutdown-sigterm/</guid><description>Every deploy stops your old processes. Here is how to handle SIGTERM so in-flight requests finish, connections close cleanly and users never notice.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>backend</category><category>devops</category><category>reliability</category><category>docker</category></item><item><title>Structured logging: why your logs should be JSON</title><link>https://mdislam.dev/blog/2026-10-30-structured-logging-json/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-30-structured-logging-json/</guid><description>Plain text logs are easy to write and hard to search. Here is how structured logs with consistent fields make debugging production services faster.</description><pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate><category>backend</category><category>observability</category><category>python</category><category>devops</category></item><item><title>Liveness vs readiness: writing health checks that actually help</title><link>https://mdislam.dev/blog/2026-10-29-liveness-readiness-health-checks/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-29-liveness-readiness-health-checks/</guid><description>What liveness and readiness checks are for, why mixing them up causes restart loops, and how to write health endpoints that tell your platform the truth.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>devops</category><category>kubernetes</category><category>backend</category><category>reliability</category></item><item><title>Database connection pooling: what it is and how to size it</title><link>https://mdislam.dev/blog/2026-10-28-database-connection-pooling/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-28-database-connection-pooling/</guid><description>Why opening a database connection per request hurts, how a connection pool fixes it, and how to choose pool sizes that do not overload your database.</description><pubDate>Wed, 28 Oct 2026 00:00:00 GMT</pubDate><category>databases</category><category>backend</category><category>postgres</category><category>performance</category></item><item><title>Rate limiting APIs with the token bucket algorithm</title><link>https://mdislam.dev/blog/2026-10-27-rate-limiting-token-bucket/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-27-rate-limiting-token-bucket/</guid><description>How the token bucket works, why it handles bursts better than a fixed window, and what to think about when you run it across several servers.</description><pubDate>Tue, 27 Oct 2026 00:00:00 GMT</pubDate><category>api-design</category><category>backend</category><category>redis</category><category>architecture</category></item><item><title>Smaller Docker images with multi-stage builds</title><link>https://mdislam.dev/blog/2026-10-26-docker-multi-stage-builds/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-26-docker-multi-stage-builds/</guid><description>How multi-stage Dockerfiles keep compilers and dev dependencies out of your final image, with a simple Node example and a few habits that help.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>docker</category><category>devops</category><category>containers</category></item><item><title>HTTP caching basics: Cache-Control and ETags</title><link>https://mdislam.dev/blog/2026-10-25-http-caching-etags/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-25-http-caching-etags/</guid><description>How browsers and proxies decide when to reuse a response, and how Cache-Control and ETags let your API skip work it has already done.</description><pubDate>Sun, 25 Oct 2026 00:00:00 GMT</pubDate><category>http</category><category>performance</category><category>backend</category></item><item><title>Access tokens and refresh tokens: why APIs use two</title><link>https://mdislam.dev/blog/2026-10-24-access-and-refresh-tokens/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-24-access-and-refresh-tokens/</guid><description>A short-lived access token plus a longer-lived refresh token is a common login pattern. Here is what each one does and how to handle them safely.</description><pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate><category>security</category><category>authentication</category><category>backend</category></item><item><title>Database indexes, explained without the magic</title><link>https://mdislam.dev/blog/2026-10-23-database-indexes-explained/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-23-database-indexes-explained/</guid><description>Indexes fix slow queries but can slow down writes. What they actually do, and how to decide when one is worth it.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate><category>databases</category><category>backend</category><category>performance</category></item><item><title>Idempotent APIs and why retries should be safe</title><link>https://mdislam.dev/blog/2026-10-23-idempotent-apis-safe-retries/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-23-idempotent-apis-safe-retries/</guid><description>Networks fail in awkward ways. Designing endpoints so that a repeated request does no extra harm is one of the cheapest reliability wins you can get.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate><category>api-design</category><category>backend</category><category>reliability</category></item><item><title>Why I&apos;m writing one short post every day</title><link>https://mdislam.dev/blog/2026-10-23-why-i-write-every-day/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-23-why-i-write-every-day/</guid><description>A daily engineering log: what I learn building backend and LLM features in production, written down while it&apos;s still fresh.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate><category>writing</category><category>career</category></item><item><title>AI and the future of industry</title><link>https://mdislam.dev/blog/2026-10-23-ai-future-of-industry/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-23-ai-future-of-industry/</guid><description>Where AI is already useful in manufacturing, healthcare, software, logistics and energy, how work is changing, and what responsible use looks like.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>industry</category><category>future</category></item><item><title>Typed configuration in FastAPI with pydantic-settings</title><link>https://mdislam.dev/blog/2026-10-22-fastapi-settings-pydantic/</link><guid isPermaLink="true">https://mdislam.dev/blog/2026-10-22-fastapi-settings-pydantic/</guid><description>Load and validate environment variables once, fail fast on bad config, and keep secrets out of your code: a small pattern I use in every FastAPI service.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>python</category><category>fastapi</category><category>backend</category></item></channel></rss>