<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Uchkun Rakhimov</title><description>Backend Engineer specializing in scalable distributed systems. 3+ years building with Node.js, TypeScript, NestJS, PostgreSQL, and cloud infrastructure.</description><link>https://uchkun.io/</link><item><title>Race Conditions in Node.js: They Exist and They&apos;ll Bite You</title><link>https://uchkun.io/blog/nodejs-race-conditions/</link><guid isPermaLink="true">https://uchkun.io/blog/nodejs-race-conditions/</guid><description>Node.js is single-threaded, but race conditions are real. Here&apos;s how they happen in async code and how to prevent them.</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Bun vs Node.js: A Practical Comparison for Backend Engineers</title><link>https://uchkun.io/blog/bun-vs-node-practical-guide/</link><guid isPermaLink="true">https://uchkun.io/blog/bun-vs-node-practical-guide/</guid><description>Bun promises speed. But is it ready for production backend work? A real-world comparison across the things that actually matter.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The N+1 Query Problem: Why Your API is Slow</title><link>https://uchkun.io/blog/n-plus-one-problem/</link><guid isPermaLink="true">https://uchkun.io/blog/n-plus-one-problem/</guid><description>The N+1 problem is the most common performance killer in backend applications. Here&apos;s how to detect and fix it across different ORMs.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Designing Idempotent APIs: Why Your Payment Endpoint Charges Twice</title><link>https://uchkun.io/blog/designing-idempotent-apis/</link><guid isPermaLink="true">https://uchkun.io/blog/designing-idempotent-apis/</guid><description>Your user clicked &apos;Pay&apos; twice and got charged twice. Here&apos;s how to design APIs that handle retries, network failures, and duplicate requests without duplicating side effects.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The Node.js Event Loop: Beyond the Basics</title><link>https://uchkun.io/blog/event-loop-deep-dive/</link><guid isPermaLink="true">https://uchkun.io/blog/event-loop-deep-dive/</guid><description>Most explanations of the event loop are oversimplified. Here&apos;s what actually happens, phase by phase, and why it matters.</description><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Docker Multi-Stage Builds: From 1.2GB to 80MB</title><link>https://uchkun.io/blog/docker-multi-stage-builds/</link><guid isPermaLink="true">https://uchkun.io/blog/docker-multi-stage-builds/</guid><description>A real walkthrough of shrinking a Node.js Docker image from 1.2GB to 80MB using multi-stage builds, layer caching, distroless bases, and a production-ready Dockerfile template.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Database Indexing: What Every Backend Engineer Should Know</title><link>https://uchkun.io/blog/database-indexing-explained/</link><guid isPermaLink="true">https://uchkun.io/blog/database-indexing-explained/</guid><description>Indexes can make or break your application performance. Here&apos;s how they work internally and when to use them.</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Big O Notation: The Practical Guide for Working Engineers</title><link>https://uchkun.io/blog/understanding-big-o-practically/</link><guid isPermaLink="true">https://uchkun.io/blog/understanding-big-o-practically/</guid><description>Forget the academic proofs. Here&apos;s how to spot O(n^2) hiding in your code, why hash maps change everything, and real refactoring examples that turned minutes into milliseconds.</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Database Connection Pooling: Why Your Server Crashes at 100 Concurrent Users</title><link>https://uchkun.io/blog/connection-pooling-explained/</link><guid isPermaLink="true">https://uchkun.io/blog/connection-pooling-explained/</guid><description>You&apos;re opening a new database connection for every request and wondering why your server dies under load. Here&apos;s how connection pooling works and how to configure it properly.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate></item><item><title>API Rate Limiting Done Right: Algorithms and Implementation</title><link>https://uchkun.io/blog/api-rate-limiting-done-right/</link><guid isPermaLink="true">https://uchkun.io/blog/api-rate-limiting-done-right/</guid><description>Rate limiting protects your API from abuse. Here&apos;s how the major algorithms work and which one to pick for your use case.</description><pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate></item><item><title>TypeScript Strict Mode: Stop Using `any` and Start Shipping Safer Code</title><link>https://uchkun.io/blog/typescript-strict-mode-guide/</link><guid isPermaLink="true">https://uchkun.io/blog/typescript-strict-mode-guide/</guid><description>Every `any` in your codebase is a bug waiting to happen. Here&apos;s how to enable strict mode, survive the migration, and use TypeScript the way it was meant to be used.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Git Rebase vs Merge: When to Use Which</title><link>https://uchkun.io/blog/git-rebase-vs-merge/</link><guid isPermaLink="true">https://uchkun.io/blog/git-rebase-vs-merge/</guid><description>A practical guide to rebase vs merge from someone who&apos;s destroyed production history and lived to tell about it. Interactive rebase, fixup, squash, and real team workflows.</description><pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Git Bisect: Find the Bug in 10 Steps, Not 10 Hours</title><link>https://uchkun.io/blog/git-bisect-debug-like-pro/</link><guid isPermaLink="true">https://uchkun.io/blog/git-bisect-debug-like-pro/</guid><description>Binary search through your commit history to find exactly which commit broke things. Manual, automated, and CI-integrated approaches.</description><pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Redis Beyond Caching: Queues, Pub/Sub, and Rate Limiters</title><link>https://uchkun.io/blog/redis-beyond-caching/</link><guid isPermaLink="true">https://uchkun.io/blog/redis-beyond-caching/</guid><description>Redis is not just a cache. I&apos;ve used it as a message queue, a rate limiter, a leaderboard engine, and a real-time event bus. Here&apos;s how, and when to stop.</description><pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Graceful Shutdown in Node.js: Stop Killing Your Users&apos; Requests</title><link>https://uchkun.io/blog/graceful-shutdown-nodejs/</link><guid isPermaLink="true">https://uchkun.io/blog/graceful-shutdown-nodejs/</guid><description>Your Node.js server gets SIGTERM, immediately dies, and 47 users get 502 errors. Here&apos;s how to shut down properly in production.</description><pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate></item><item><title>MongoDB Aggregation Pipeline: Replace Your Application Logic with Database Logic</title><link>https://uchkun.io/blog/mongodb-aggregation-pipeline/</link><guid isPermaLink="true">https://uchkun.io/blog/mongodb-aggregation-pipeline/</guid><description>Stop fetching all documents and filtering in JavaScript. MongoDB&apos;s aggregation pipeline can do joins, grouping, pagination, and analytics in a single query.</description><pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Hash Tables Under the Hood: Why Object Lookup is O(1)</title><link>https://uchkun.io/blog/hash-tables-under-the-hood/</link><guid isPermaLink="true">https://uchkun.io/blog/hash-tables-under-the-hood/</guid><description>Hash tables power objects, dictionaries, sets, and caches. Here&apos;s what actually happens when you write obj[key], and when O(1) breaks down.</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Error Handling Patterns in Node.js: Stop Swallowing Errors</title><link>https://uchkun.io/blog/error-handling-patterns-nodejs/</link><guid isPermaLink="true">https://uchkun.io/blog/error-handling-patterns-nodejs/</guid><description>Empty catch blocks, generic error messages, and silent failures. Here are the patterns I use to handle errors properly in production Node.js applications.</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate></item></channel></rss>