A long list loads and scrolls slowly
“Normal accounts feel fine. Power users with years of history report blank frames and lag.”
Separate server latency, payload cost, JavaScript work, rendering, and memory before reaching for a new list library.
Anti-amnesia for software engineers
A symptom-first field guide for engineers whose instincts got a little rusty while AI wrote the happy path. No shame. No 40-hour course. Just the mental models you need when production gets weird.
LEARNING TRACKS
THE FIELD GUIDE
115 of 115 guides
“Normal accounts feel fine. Power users with years of history report blank frames and lag.”
Separate server latency, payload cost, JavaScript work, rendering, and memory before reaching for a new list library.
“The live UI looks correct most of the time, but reconnects produce gaps, duplicates, stale balances, or event storms.”
A socket provides freshness, not durable truth. Design reconnect, replay, ordering, idempotency, and snapshot recovery explicitly.
ECONNRESETNode.js system errors1006WebSocket close codes · RFC 6455“The client timed out, retried the request, and both attempts reached the payment provider.”
Treat retries as normal and bind all repetitions of one user intention to one durable payment attempt.
23505PostgreSQL SQLSTATEECONNRESETNode.js system errors“A transaction appears successful, disappears, or makes funds spendable before authoritative state catches up.”
Keep intent, execution, and authoritative reads distinct. Optimism may bridge latency but cannot invent financial facts.
“A young product has unclear boundaries but is accumulating queues, network calls, deployments, and distributed transactions.”
Start with strong module boundaries inside one deployable system, then extract only where operational evidence justifies it.
“Users must understand networks, gas, token allowances, hashes, and finality before making an ordinary payment.”
Use the chain as a settlement rail and translate its mechanics into familiar payment concepts without hiding risk or uncertainty.
CALL_EXCEPTIONethers v6“The job logs "done" and the response is sent, but records are still being written afterwards. Sometimes the totals are zero, errors appear after success, or switching to Promise.all overwhelms the downstream API.”
Array.prototype.forEach ignores the promises its callback returns, and map just returns an array of them. Pick the execution model on purpose: sequential with for...of, concurrent with Promise.all or allSettled, or concurrent with a limit.
“Editing /invoices/1042 to /invoices/1043, or swapping an ID in a JSON body, returns or modifies a record that belongs to another user or tenant. The user is authenticated; nothing checks ownership.”
Authentication says who the caller is; authorization must decide, per object, whether they may touch it. Scope every query by the authenticated principal or tenant and deny by default, so a missing check fails closed.
“The pager fires every night for high CPU, a single failed health check, or a disk at 70%. People ack without looking, and the real incident was reported by a customer.”
Alerts on causes and thresholds fire for things users never notice, so people learn to ignore the pager. Page on user-facing symptoms measured against an SLO, alert on how fast the error budget is burning, and send everything else to tickets or dashboards.
“A severe bug shipped, but App Store and Play Store review may delay a replacement binary.”
Mitigate remotely first, then use a compatible over-the-air update when the defect is in JavaScript or assets.
“A dependency hiccups for seconds, but traffic to it multiplies, error rates stay high after the root cause is gone, and it only recovers when load is shed manually.”
Retries at every layer multiply load exactly when the system has the least capacity. Retry in one place, within a budget and a deadline, and let overloaded services reject work cheaply.
503HTTP status codes · RFC 9110DEADLINE_EXCEEDEDgRPC status codes“The endpoint performs acceptably for ten records but collapses for hundreds, while database query count rises with result count.”
Recognize N+1 access: one query loads the collection and another query runs for every item.
57014PostgreSQL SQLSTATEHOW IT WORKS
53 of 53 explainers
What actually happens when a browser opens a WebSocket, and what keeps it alive?
A WebSocket is one HTTP request that asks to stop being HTTP. After a 101 (or an HTTP/2 extended CONNECT), both sides exchange small framed messages over the same connection until one sends a close frame or the network quietly drops it.
What actually happens between calling fetch() and getting a response?
Before your request leaves the machine, the client resolves a name, opens a transport, negotiates TLS and an HTTP version, and only then sends bytes, usually to a CDN edge rather than your origin. A warm, reused connection skips all of that, which is why connection reuse and timeouts matter more than most code-level tuning.
What actually happens between clicking Send in a wallet and an Ethereum transaction becoming final?
A transaction is a signed, typed message keyed by (sender, nonce). It waits in mempools until a block builder includes it, then gains confidence in stages: included, safe, and finalized about two epochs later.
Why does a promise callback run before setTimeout(fn, 0), and why does one slow handler freeze the whole page?
One thread runs one task to completion, then drains every queued microtask, then the browser may render a frame. Promises and await continuations are microtasks, timers and events are tasks, so microtasks always cut the line and nothing at all happens while your code is on the stack.
Web Worker, Service Worker, worker_threads, job worker, Cloudflare Worker: what does each one actually run, and when do I need which?
"Worker" names at least eight different things that share one idea: run code somewhere other than the thread or process handling the user's request. They differ in where they run, how long they live, what they can touch, and how you talk to them.
How do independently deployed frontends get stitched into one product, and what does that cost?
Micro-frontends split one user-facing product into parts that separate teams build and deploy on their own, then compose them at build time, on the server or edge, or in the browser at runtime. They solve an organizational bottleneck and charge you for it in payload, version skew and operational complexity.
INTERVIEW PRACTICE
NOT ANOTHER DOCS SITE
Find the guide using the half-remembered production problem—not the term you forgot.
Reconnect older experience with the tools and practices teams use today.
Each guide ends with a recall prompt. If you cannot explain it, you do not own it yet.
“Vibe coding made us faster.
Fish Memory keeps us dangerous.”
Built for experienced engineers who use AI every day—and still want their instincts available when the model is wrong.