1. An Avalanche Investigation: One Synchronous Blocking Call Froze the Entire Event Loop

    The service was mysteriously being drained and rebuilt in batches. The database looked pretty stable too, so after digging around for quite a while, I finally found the culprit: a third-party SDK was quietly making a synchronous blocking call inside an `async` function, freezing the event loop for several seconds and triggering a whole cascading failure chain.

    2026/08/22

  2. A Database Avalanche Incident Investigation

    The first thing I saw after being pulled into the incident chat was: "Every API is timing out." We stopped the bleeding first and gave the database a chance to recover, then circled back to figure out why a hidden risk planted two and a half days earlier would suddenly blow up all at once at that exact moment. Following the trail, it turned out to be a complete chain of events: an analytical query that had been left running, a high-traffic endpoint with a missing index, and a distributed lock that got released at exactly the wrong time. All three lined up and detonated together.

    2026/08/22

  3. How to Elegantly Connect a Local GUI Client to a Private Redis on AWS / GCP

    Say Goodbye to Tedious and Fragile SSM Port Forwarding: Use SSH Tunnels to Give Desktop Clients Smooth Direct Access to Redis Across Multiple Environments

    2026/08/21

  4. An Emergency Production Incident: Redis Memory Exhaustion, Precise Cleanup, and an Architectural Postmortem

    Redis Memory Hit 99.98% in Production and Triggered Eviction Alerts: How We Precisely Cleaned Up 50% of Cold Data Using LRU Idle Time to Free 4GB of Memory, and a Postmortem on the Architectural Risks Behind It

    2026/08/21

  5. Investigating a Slow Memory Leak: Creating a New OpenAI Client Every Time, with the Real Issue in the Event Loop

    While investigating a slow memory leak in a service, I came across a piece of background enrichment logic a teammate had written: on every call, it instantiated a brand-new `AsyncOpenAI` client, and the connection pool quietly piled up into a leak. I wanted to simply cache and reuse the client, but it turned out that didn’t work at all—the root cause was the lifecycle of the event loop.

    2026/08/19

  6. Built an IDEA Plugin That Brings GitHub Actions into the Git Panel

    Every time I just want to check whether an Action has run, I have to switch out and open a browser. So I figured I might as well just build one myself.

    2026/07/30

Lenovo 510smini mini PC

The naming convention for coding summarized by myself hopefully can give you a reference

Why e-waste often has a second life


Automatically caching method data annotations