Legacy .NET rescue: stabilize production first
Fix hangs, timeouts, starvation, and retries that duplicate work — with practical instrumentation and safe changes you can ship.
Lane A
Symptoms I fix
- • Background jobs hang forever
- • Thread pool starvation and slow APIs
- • Retry storms and duplicate side effects
- • “Works locally” but flakes in prod
What you get
A diagnosis ladder, minimal-risk fixes, and the exact logs/metrics to prevent the same outage next week.
Featured
Browse all
Performance triage in legacy .NET: find the top 3 bottlenecks fast
When the legacy system is slow and no one knows where to start, a structured triage finds the real bottlenecks in hours, not weeks. This playbook gives you a repeatable method to identify, rank, and fix the top 3 performance killers.

WebSocket Disconnects in Trading Bots: Reconnection That Actually Works
Handle WebSocket disconnects in trading bots with automatic reconnection, message gap detection, and state recovery—without missing fills or duplicating orders.
Feb 25, 2026

Outbox pattern: reliable writes + events without the enterprise baggage
When a database write succeeds but the event never arrives, your system is lying to downstream consumers. The outbox pattern fixes this without a distributed transaction or a message broker rewrite.
Feb 24, 2026

Structured logging that actually helps: Serilog fields that matter in .NET incidents
When logs are noisy but useless: why incidents stay unsolved, which fields actually explain failures, and the minimal schema that makes .NET outages diagnosable.
Feb 04, 2026

OpenTelemetry for .NET: minimum viable tracing for production debugging
When incidents span multiple services and logs cannot explain latency: the smallest OpenTelemetry setup that makes production debugging possible without a full rewrite.
Feb 04, 2026
Promotion
ThreadTrak — Founder access
Lock in Founder access before ThreadTrak moves to a subscription — seats are limited.

Idempotency keys for APIs: stop duplicate orders, emails, and writes
When retries create duplicate side effects, idempotency keys are the only safe fix. This playbook shows how to design keys, store results, and prove duplicates cannot recur.
Feb 04, 2026

HttpClient keeps getting 429s: why retries amplify rate limiting in .NET
When retries multiply 429 errors instead of fixing them: how retry amplification happens, how to prove it, and how to honor Retry-After with budgets.

Polly retries making outages worse: stop retry storms with backoff and jitter
When retries amplify failures instead of fixing them: how retry storms happen in .NET, how to prove it, and the four components that stop cascading failures.

Cannot trace requests across services: why correlation IDs die at boundaries in .NET
A production playbook for when logs exist but cannot be joined—correlation IDs die at HttpClient boundaries, jobs, and queues, making incidents unreproducible.

Retries making outages worse: when resilience policies multiply failures in .NET
Retry storms don't look like a bug—they look like good engineering until retries amplify failures and multiply in-flight requests during backpressure.

Trading bot keeps getting 429s after deploy: stop rate limit storms
When deploys trigger 429 storms: why synchronized restarts amplify rate limits, how to diagnose fixed window vs leaky bucket, and guardrails that stop repeat incidents.

Crash Recovery: Reconciliation Loops That Prevent Double Orders
Build crash-proof trading bots with reconciliation loops that detect and correct out-of-sync state on restart—preventing double orders and orphan positions.

API key suddenly forbidden: why exchange APIs ban trading bots without warning
When API key flips from working to 403 forbidden after bot runs for hours: why exchange APIs ban trading bots for traffic bursts, retry storms, and auth failures, and the client behavior that prevents it.
Jan 11, 2026

Signature invalid but bot was working: why clock drift breaks auth suddenly
When bot gets signature invalid or 401 after working fine for hours: why clock drift breaks exchange auth suddenly, and the time calibration that prevents it.

Agent keeps calling same tool: why autonomous agents loop forever in production
When agent loops burn tokens calling same tool repeatedly and cost spikes: why autonomous agents loop without stop rules, and the guardrails that prevent repeat execution and duplicate side effects.
Resources
All resourcesStructured logging fields checklist (.NET)
A minimal schema and Serilog starter config that makes production incidents diagnosable in .NET services.
Polly Retry Policies package
A small shipped kit for safe Polly retries: C# client wrapper, retry checklist, retry logging schema, and setup notes.
Axiom
Axiom Ops — reliability defaults + runbooks
A practical kit to stop loops, prevent duplicate side effects, and make failures obvious.
XConnect — turn X DMs into a real pipeline
A lightweight CRM + DM workflow inside X so you can capture prospects, organize leads, and send consistent follow-ups without losing context.
This week
Want help this week?
If you have a production incident, recurring timeouts, or jobs that get stuck overnight, I can help you stabilize first.
What we do in the first 48 hours
- • Confirm the failure mode + the repeat trigger
- • Add the minimum logs/metrics to prove the fix
- • Ship 1–2 safe changes that stop repeats
Latest Posts

Idempotency keys for APIs: stop duplicate orders, emails, and writes
When retries create duplicate side effects, idempotency keys are the only safe fix. This playbook shows how to design keys, store results, and prove duplicates cannot recur.

Trading bot keeps getting 429s after deploy: stop rate limit storms
When deploys trigger 429 storms: why synchronized restarts amplify rate limits, how to diagnose fixed window vs leaky bucket, and guardrails that stop repeat incidents.

HttpClient keeps getting 429s: why retries amplify rate limiting in .NET
When retries multiply 429 errors instead of fixing them: how retry amplification happens, how to prove it, and how to honor Retry-After with budgets.

Polly retries making outages worse: stop retry storms with backoff and jitter
When retries amplify failures instead of fixing them: how retry storms happen in .NET, how to prove it, and the four components that stop cascading failures.
Kamran Ul Haq
Founder & Lead Engineer
I help teams keep automation and .NET systems stable in production: stop duplicate side effects, fix retry storms, make failures observable, and ship guardrails fast. If you’re dealing with 429s, timeouts, runaway jobs, or “it fails but the logs don’t say why”, I’ll help you stabilize first and then harden so it stays fixed.
Most Popular
WebSocket Disconnects in Trading Bots: Reconnection That Actually Works
Performance triage in legacy .NET: find the top 3 bottlenecks fast
Outbox pattern: reliable writes + events without the enterprise baggage
Structured logging that actually helps: Serilog fields that matter in .NET incidents
OpenTelemetry for .NET: minimum viable tracing for production debugging
Hot Tags
Don't Miss
WebSocket Disconnects in Trading Bots: Reconnection That Actually Works
Feb 25, 2026
Performance triage in legacy .NET: find the top 3 bottlenecks fast
Feb 26, 2026
Outbox pattern: reliable writes + events without the enterprise baggage
Feb 24, 2026
Structured logging that actually helps: Serilog fields that matter in .NET incidents
Feb 04, 2026
Browse the latest posts, shipped kits, and runbooks.