277 terms · 2026
Look up the term.Paste the prompt.
For developers who ship with an agent and need the normal engineering word, not a longer prompt.
loop
How you work. TDD, reverse engineering, skeletons, stranglers. The model writes the code. You choose the method.
- 01test-driven developmentWrite a failing test first, then make the implementation pass. The test is the spec. The code is fill.
- 02reverse engineeringRecover a spec from a finished thing: behaviour, data, edges. Not copying pixels — extracting a testable contract.
- 03characterization testSnapshot what the system does today, then change it. Not the ideal — the actual.
- 04spikeCode you intend to throw away, written only to answer one unknown. Stop when the clock hits.
- 05walking skeletonA path so thin it is almost bone, but it walks end to end: deploy, sign in, write one row, read it back.
- 06tracer bulletOne live round: a small feature through every layer, leaving a visible trace so you can correct aim.
- 07vertical sliceShip one user-visible sliver at a time, instead of finishing a layer.
- 08refactoringChange structure, keep behaviour. An edit with no tests is not a refactor. It is a rewrite.
- 09strangler figGrow a new skin around the old system, take it over piece by piece, let the old wood die. No big-bang rewrite.
spec
How you pin the thing down. Types, scenarios, a noun list. A mood is not a spec.
- 10spec-drivenA checkable spec before generated code. Shorter than the chat, harder than a vibe.
- 11types as specWrite the data shape as types first, and let the compiler shout at the model.
- 12behaviour-driven developmentSpecify with scenarios: given, when, then. A human can read them. A test can run them.
- 13ubiquitous languageThe same word for the same thing in the chat, the code, and the tests. The noun list is the spec.
- 14YAGNIYou aren’t gonna need it. Do not let the model build the abstraction nobody asked for.
- 15minimum viable productThe smallest version that tests one hypothesis — not a complete product with fewer buttons.
- 16contract-firstFreeze the interface — types, OpenAPI, events — then fill both sides.
agent
How the model runs, and how you stop it. Context, tools, review, evals.
- 17vibe codingDrive a model to edit the repo in natural language. You review the diff, run the tests, name the move — syntax is not the first job.
- 18prompt as specWrite the prompt as a ticket: objects, constraints, acceptance, what not to do. Not a mood.
- 19context engineeringControl what the model can see right now. Only the papers this turn needs stay on the table.
- 20tool useThe model does not only talk — it runs commands, edits files, clicks a browser. Every step must be stoppable.
- 21human in the loopThe model proposes, the human nods, then it moves. Irreversible steps halt.
- 22evalsScore the prompt on a fixed task set. A vibe is not a regression suite.
- 23guardrailsWhat the agent must not do, as mechanical limits: paths, commands, permissions, spend.
- 24diff reviewThe human job is the diff, not the file. If you have not seen what moved, you do not merge.
feedback
How you know this round is right. Red tests, CI, fakes, a repro, one e2e. Eyeballing is not enough.
- 25red-green-refactorTDD’s metronome: red, then green, then tidy. Skipping a beat is a bet.
- 26CI as judgeThe merge key belongs to the pipeline, not to a vibe. Local green is not court. CI is.
- 27linter loopTreat lint and type errors as the model’s compiler. The red text is spec, not insult.
- 28snapshot testPin output to a file. If it changes, red. Good for characterization. Bad at asserting intent.
- 29property-based testingDo not only write examples. Write a property that must always hold, and let a generator try to break it.
- 51reproSteps that make the bug happen on a clean machine. Without a repro, the model is guessing.
- 52end-to-end testA script that drives the real UI through a real user path. Slow, few, precious.
- 53flaky testA test that fails without a product bug: time, order, network, leftover state. Delete or fix. Never retry to green.
- 218test doubleA stand-in for a collaborator. A fake has behavior. A mock only remembers it was called.
model
Hallucination, system prompts, MCP, tokens, temperature, sandboxes. Words about the model itself.
- 30hallucinationThe model states a missing API, file, or fact as if it were real. Calm tone is not evidence.
- 31system promptThe standing instructions above the chat: who the model is, what it may touch, how it should fail.
- 32few-shotShow two or three worked examples in the prompt. The model copies the shape, not your adjectives.
- 33structured outputForce JSON or a schema. Prose from a model is a suggestion. A schema is a contract.
- 34MCPA standard way to plug tools and data into the model: issue trackers, browsers, docs, databases.
- 35token budgetThe window is finite. Every file you add crowds out the one that mattered.
- 36temperatureA knob for randomness. Code wants it low. Brainstorming can stand it higher.
- 37sandboxA sealed place the agent can run commands. Network, filesystem, and secrets are opt-in.
- 38plan then actThe model writes the steps. You approve. Then it may touch files. Not the other way around.
- 39compactionWhen the window fills, the agent summarises the chat. Details die in the summary. Pin what must live.
ship
Secrets, migrations, idempotency, flags, rollbacks. The layer the model fakes fluency in, and where it blows up.
- 40env and secretsKeys live in the environment, never in the repo, never in the prompt if you can help it.
- 42migrationA versioned, reversible change to the schema. Not “edit the database until it works.”
- 43idempotencyDoing it twice has the same result as doing it once. Clicks, webhooks, and retries need this.
- 49feature flagShip the code dark. Turn it on for some people. Turn it off without a rollback of the whole site.
- 50rollbackA rehearsed way back. If you cannot undo the deploy, you did not finish the change.
engineering
Dependency injection, leaky abstractions, semver, observability. Software-engineering names the model will not pick unless you do.
- 56dependency injectionPass collaborators in. Do not let a function new up the world.
- 57separation of concernsUI does not own the rule. The rule does not own SQL. Each file has one reason to change.
- 58leaky abstractionThe wrapper still forces you to know what is underneath. Then it is not a wrapper.
- 59technical debtA shortcut with interest. Write down the principal, the interest, and the due date.
- 60semverMAJOR breaks callers. MINOR adds. PATCH fixes. The number is a promise, not a vibe.
- 61breaking changeExisting callers fail without edits. Renames, removed fields, stricter validation.
- 62observabilityLogs say what happened. Metrics say how often. Traces say which hop was slow.
- 63architecture decision recordA short note: the decision, the context, the options you rejected. So next month’s chat does not relitigate it.
- 64invariantA fact that must stay true. Balance not negative. A child row never outlives its parent.
- 65composition over inheritanceHas-a, not is-a. Assemble small pieces. Do not grow a base class the model keeps subclassing.
backend
REST, auth, N+1, money, time zones, transactions, queues. The server words a model writes fluently and wrongly.
- 45N+1 queryOne query to list N rows, then one query per row. Fine at 3. Dead at 300.
- 48webhookTheir server hits yours when something happens. Verify the signature. Do not trust the browser return.
- 66RESTResources and verbs the HTTP spec already has. GET reads. PUT replaces. POST creates. DELETE removes.
- 67authn vs authzAuthn is who you are. Authz is what you may do. Logging in is not permission.
- 68paginationDo not return the whole table. Offset pages lie under inserts. Cursors stay stable.
- 69rate limitA cap on how often a caller may hit you. 429, not a meltdown.
- 70transactionSeveral writes that commit together or not at all. A half-saved order is a bug.
- 71database indexA lookup structure so the query does not read the whole table. Indexes match the WHERE and the ORDER BY.
- 72cache invalidationA cache is a lie with a deadline. Say who deletes it, and when.
- 73job queueWork that must not live inside the request: mail, thumbnails, webhooks you send. Durable, retried, idempotent.
- 74circuit breakerStop calling a dependency that is already failing. Fail fast, then try again later.
- 75graceful shutdownOn SIGTERM, stop taking work, finish what you started, then exit. Do not drop the request mid-write.
- 261event loopOne thread runs your JavaScript. A long synchronous call blocks every request on it.
- 262GILCPython runs one thread of bytecode at a time. Threads do not speed up a pure Python loop.
- 263ownershipOne owner. Borrows are temporary. Cloning to silence the checker keeps the cost forever.
- 264goroutineA goroutine is cheap to start and easy to leak. Cancel it, or it runs until the process dies.
- 265minor unitsMoney is an integer of the smallest unit, plus a currency. It is not a float.
- 266UTC vs local timeStore an instant in UTC. Store a birthday as a date. Do not confuse the two.
- 267optimistic concurrencyWrite only if the version you read is still current. Zero rows updated means someone else wrote.
- 268partial updatePATCH changes the fields it names. A missing field is left alone, not cleared.
- 269transaction isolationThe default isolation level is not “as if one at a time.” Serializable can fail, and you retry.
- 270DTOThe API type is not the table type. Do not bind a request onto the entity.
- 271prepared statementThe SQL string is constant. Values are parameters. Escaping quotes is not that.
- 272WebSocketA WebSocket is a long-lived connection. Auth happens on the upgrade, and a slow client must not fill memory.
- 273error as valueReturn the error or throw it. Do not do both, and do not swallow either.
- 274request scopeOne database session for the request. Close it before you return. Do not share it.
- 275option typeMissing, null, and empty are three states. Do not collapse them at the door.
- 276DataLoaderCollect ids during one request and load them in one query. The cache dies with the request.
- 277middleware orderThe first middleware sees the request first. Auth at the bottom of the stack is auth that never runs in time.
mobile
Offline, deep links, safe areas, push, lifecycle, secure storage, background limits. Phone nouns. Not a shrunk website.
- 76offline-firstThe phone is the source of truth until the network returns. Queue writes. Do not pretend you are online.
- 77deep linkA URL that opens a specific screen, not just the app icon. Cold start must land there too.
- 78safe areaThe notch, the home indicator, the status bar. Content lives inside the inset, not under the glass.
- 79navigation stackScreens push and pop. Back goes to the previous screen, not to whatever the model rendered last.
- 80push notificationThe OS delivers a message while you are not running. Tapping it is a deep link, not a mystery.
- 81app lifecycleForeground, background, killed. Resume must not assume the screen you left is still valid.
- 82OS permissionCamera, photos, location, notifications. Ask when the need is obvious. Survive “don’t allow.”
- 83hapticA small tap from the hardware when something commits. Not a vibration on every pixel.
- 84OTA updateShip JS without a store review. You still cannot OTA a native change, and you must be able to roll it back.
- 85list virtualizationRender the rows on screen, not the ten thousand off screen. Recycle views.
- 97sync conflictTwo edits of the same row while offline. You must pick a rule: merge, reject, or ask.
- 234secure storageTokens live in the keychain or the keystore. AsyncStorage is not a safe.
- 235app linkAn https URL the OS has verified belongs to your app. A custom scheme is not that.
- 236background executionThe OS suspends your app. A timer is not a background job.
- 237app extensionA widget or a share sheet is a separate process with a small memory budget.
- 238adaptive layoutA tablet is a different layout, not a phone screen stretched.
- 239in-app purchaseThe store charges the user. Your server decides what that unlocked.
- 240build variantDebug and release are different apps. They do not share a bundle id or a push key.
- 241native bridgeUI and native code exchange structured messages. They do not share objects.
- 242dynamic typeThe user sets a larger text size. The layout has to survive the largest one.
- 243launch screenThe launch screen is a static picture the OS shows. It is not a place to fetch.
- 244biometricThe face or fingerprint unlocks a key already on the device. It is not a password you send.
- 245background locationLocation after the app closes is a separate permission, and you have to earn it.
desktop
Main process, IPC, signing, windows, trays. A desktop app is not a website in a frame.
- 219main process vs rendererThe shell process owns the files and the OS. The window is a guest.
- 220IPCA named channel between the window and the shell. Not a function that runs anything.
- 221context isolationThe page cannot see Node, even if it is compromised.
- 222single instanceThe second launch focuses the window that is already open. It does not start another copy.
- 223code signingThe OS checks who signed the binary. Unsigned apps are blocked, not just warned, on current systems.
- 224desktop auto-updateDownload a signed build, check it, and swap it on quit. Do not overwrite a running binary.
- 225protocol handlerThe OS opens your app for a scheme or a file type. The already-running instance must receive it.
- 226window stateRemember where the window was. If that display is gone, open it on a display that exists.
- 227trayClosing the window does not quit a tray app. Quitting is a menu item.
- 228native dialogOpen and save go through the OS dialog. The path it returns is the permission.
- 229app sandboxThe OS allowlist for a desktop app. Entitlements are the permission, not a comment.
- 230webviewA browser inside the app. Remote pages do not get the app’s files or IPC.
- 231app packagingThe installer is the product the OS sees. A folder of files is not an install.
- 232global shortcutA global hotkey fires even when another app is focused. An in-window shortcut does not.
- 233native menuUse the OS menu bar. Roles give you undo, quit, and the window menu for free.
game
Game loop, delta time, collision, sprite sheets, object pools. Name them or the model invents a slideshow.
- 86game loopInput, update, render, repeat. Not a chain of setTimeouts that drift.
- 87delta timeMove by time, not by frames. A slow machine must not make the jump shorter.
- 88entity component systemEntities are ids. Components are data. Systems are the functions. Do not build a God class named Player.
- 89collisionDetect overlap, then resolve it. Detection without a response is a highlight, not physics.
- 90sprite sheetMany frames in one image. The game draws a rectangle, not a new file per frame.
- 91state machineExplicit states and the only legal transitions. Idle can go to run. Dead cannot go to jump.
- 92object poolReuse bullets and particles. Allocating every shot is how the frame hitch arrives.
- 93hitbox and hurtboxWhere you deal damage, and where you take it. They are not the sprite’s rectangle.
- 94camera followThe camera eases toward the player. It does not glue to their pixels, and it does not show past the level.
- 95save gameSerialize the sim, not the sprites. Version the blob. Load must survive an old file.
- 96frame budgetA 60fps frame has about 16ms. If you spend 20, you are not at 60. Measure before you decorate.
system design
Load balancers, shards, replicas, eventual consistency, sagas, canaries. The names that show up once one machine is not enough.
- 98load balancerOne address, many machines. It spreads requests and stops sending them to a dead one.
- 99horizontal scalingMore machines, not a bigger one. That only works if no single process owns the user.
- 100CDNStatic bytes cached near the user. HTML that changes per person usually does not belong there.
- 101CAP theoremDuring a partition you choose: answer with stale or different data, or stop answering. You do not get both.
- 102replicationCopies of the same data on more than one node. Copies drift unless you say how writes propagate.
- 103shardingSplit rows across databases by a key. The key is the product decision. A bad key is a hot shard.
- 104consistent hashingAdding a node moves only some keys, not all of them. That is the point of the ring.
- 105read replicaCopies that serve reads. They lag. A read-your-writes screen must not use them.
- 106eventual consistencyIf writes stop, copies agree. Until then they may disagree. The UI has to admit that.
- 107sagaA multi-step business action with a compensating step for each. Not a distributed transaction you hoped would exist.
- 108transactional outboxWrite the row and the “please publish this event” in the same database transaction. A worker publishes after.
- 109cache stampedeThe hot key expires and every request rebuilds it at once. One recomputation. The rest wait or get stale.
- 110hot keyOne key gets a disproportionate share of traffic. The shard that owns it falls over. The others look idle.
- 111backpressureWhen the consumer is slow, the producer must slow down or shed. An unbounded queue is a delayed outage.
- 112load sheddingRefuse the cheap requests so the expensive, important ones still finish. A polite 503 beats a timeout for everyone.
- 113dead-letter queueJobs that failed enough times go somewhere a human can see. They do not retry forever, and they do not vanish.
- 114liveness and readinessLiveness: the process is not stuck, so restart it. Readiness: it can take traffic, so leave it out of the balancer until it can.
- 115canary deployA small slice of traffic gets the new version first. If it burns, everyone else never sees it.
- 116single point of failureThe one box, file, or person whose death takes the system with it. Name it before you draw more boxes.
- 117failoverA named promotion when the primary dies. If you have never run it, you do not have it.
- 118pub/subPublishers do not know the subscribers. Each subscriber gets the event. A work queue is the opposite: one consumer does the job.
- 119tail latencyThe average can look fine while the slowest 1% makes the page feel broken. Watch the tail.
- 120timeout budgetThe user gave you one second. Every hop spends from that second. Do not give each hop its own one second.
- 121graceful degradationA dependency is down and the product still does the core job, minus the ornament.
- 122bulkheadSeparate pools so one noisy feature cannot sink the rest. Ships use them so one leak does not flood every compartment.
- 123quorumA majority must agree before a write is real. Two nodes out of three is enough. One node must not be.
- 124backend for frontendA thin API shaped for one client. The mobile app does not assemble five microservice calls on a flaky radio.
frontend
Hydration, SSR, hooks, keys, specificity, focus. Browser words. The model will ship a div with a click handler if you do not say them.
- 46debounceWait until the action pauses, then run it. Search boxes, not every keystroke.
- 47optimistic UIPaint the success first. If the server refuses, roll back. Do not make the user wait on a like.
- 55SSR / SSG / SPAWhere the HTML is born: server on request, at build time, or only in the browser. Search, first paint, and auth all change.
- 125hydrationThe server HTML is already there. Hydration attaches events without redrawing a different tree.
- 126code splittingThe first screen does not download the admin editor. Load a route when the user opens it.
- 127tree shakingDead exports are dropped from the bundle. A side-effect import keeps the whole module.
- 128controlled inputReact state owns the value, or the DOM does. Mixing them makes the cursor jump and the submit lie.
- 129reflow and repaintReading layout in a loop forces the browser to recalculate. Write styles, then read once.
- 130progressive enhancementThe basic action works as HTML. Script makes it better. Script must not be the only way.
- 131focus managementWhen a dialog opens, focus goes inside it. When it closes, focus returns. Tab does not escape to the page underneath.
- 132client state vs server stateServer state is cached data from someone else. Client state is the draft, the tab, the open menu. Do not put both in one store.
- 133critical rendering pathWhat the browser must have before it can paint. Everything else waits.
- 134islands architectureThe page is static HTML. Small interactive regions hydrate. The article is not a client app.
- 246rules of hooksCall hooks at the top level, in the same order every render. The order is their identity.
- 247effect dependenciesThe dependency array is the list of values the effect reads. An empty array means mount and unmount only.
- 248list keyThe key is the item’s identity. The index is the slot, and the slot moves.
- 249stale closureThe callback still sees the state from the render that created it.
- 250CSS specificityWhen two rules match, specificity and order decide. Adding !important is not a decision.
- 251stacking contextz-index only compares elements inside the same stacking context.
- 252server componentsA server component ships no client JavaScript. It cannot use state or effects.
- 253suspenseA suspense boundary shows a fallback while a child waits. It is not a try/catch.
- 254event delegationOne listener on a parent handles events from the children. stopPropagation cuts that off.
- 255service workerA worker that can answer fetches. A bad cache serves yesterday’s app to today’s user.
- 256web storagelocalStorage is a synchronous string bucket. It is not a session and not a database.
- 257structural typingTypeScript checks the shape, not the name. A type assertion throws that check away.
- 258shadow DOMA shadow root keeps page CSS out and component CSS in. The global sheet does not cross it.
- 259container queryStyle the component from the size of its parent, not the size of the window.
- 260reactivityA signal updates the computations that read it. Assigning state in React does not do that mid-render.
security
XSS, CSRF, prompt injection, broken access control, hashing, OAuth. The holes a model writes while the demo still looks fine.
- 41row-level securityNot “are you logged in,” but “is this row yours.” Hide the button and refuse the query.
- 135cross-site scriptingUntrusted text becomes HTML or script. Escape by default. `dangerouslySetInnerHTML` is a decision, not a convenience.
- 136cross-site request forgeryAnother site submits your logged-in user’s cookie. State-changing requests need a token the other site cannot read.
- 137SQL injectionUser input becomes part of the query string. Bind parameters. Do not concatenate.
- 138server-side request forgeryThe server fetches a URL the user supplied. That URL can be your metadata service or localhost.
- 139insecure direct object referenceThe id in the URL is a guess. Authorization is per object, not “any logged-in user.”
- 140password hashingStore a slow hash, not the password, not SHA-256, not encryption you can undo.
- 141OAuth and OIDCOAuth delegates access. OIDC is login on top of it. The id token is not the access token.
- 142content security policyThe browser only runs script from places you named. Inline script is how XSS survives.
- 143CORSThe browser asks your server whether another origin may read the response. `*` plus cookies is not a configuration.
- 144least privilegeThe token, the database user, and the process can do only the one job. Admin is not the default.
- 145threat modelWho attacks, what they want, what they already have. Controls come after that, not before.
- 146supply-chain attackThe code you did not write runs with your privileges. Pin it. Review the install script.
- 147session cookieHttpOnly, Secure, SameSite. The script does not need to read the session token.
- 217prompt injectionUntrusted text is obeyed as an instruction. A page, a ticket, or a tool result can retask the model.
data
OLTP versus OLAP, ETL, partitions, CDC, backfills. An analytics path is not “another table.”
- 148OLTP vs OLAPOLTP is the app’s transactions. OLAP is the scan that answers a question. Do not run the question on the checkout database.
- 149ETL and ELTExtract, then transform, then load — or load raw and transform in the warehouse. Do not transform in a notebook you cannot rerun.
- 150columnar storageStore a column together so a scan of one field does not read the whole row. Wrong tool for “fetch this order.”
- 151table partitioningPhysically split a table by a key, usually time, so a day can be dropped or scanned alone.
- 152change data captureRead the database log of changes instead of polling tables. The log is the stream.
- 153backfillRecompute history after the rule changes. Do it in slices. Do not lock the live table to rewrite the past.
- 154watermarkThe time you believe the stream is complete up to. Late events after that need a rule.
- 155star schemaFacts in the middle, dimensions around them. The fact row is a measurement. The dimension is a noun you filter on.
- 156data lineageWhich inputs produced this number. If you cannot say, you cannot fix the dashboard.
- 157denormalizationCopy a value to avoid a join. You now have two writers. Say who updates the copy.
- 158schema evolutionOld files and new code must both still read. Adding a field is easy. Changing a meaning is not.
- 159idempotent pipelineRunning yesterday’s job again replaces yesterday. It does not add yesterday twice.
- 160batch vs streamBatch has a bounded input and a finish. A stream does not finish. Do not use a stream because it sounds alive.
machine learning
Overfitting, leakage, retrieval, fine-tuning, drift. Training and serving a model, not prompting one.
- 161overfittingThe model memorized the training rows. It looks brilliant on them and wrong on the next ones.
- 162data leakageThe features contain the answer, or the future. The offline score is fiction.
- 163train-serve skewThe feature in training is not the feature in production. Same name, different code.
- 164embeddingA vector that puts similar things near each other. It is not a summary you can read, and it is not search by itself.
- 165retrieval-augmented generationFetch passages, then let the model answer from those passages. The retrieve step is the product. The prompt is not.
- 166fine-tuningContinue training on your examples. It does not replace a missing fact, and it is not the first thing to try.
- 167holdout setData the model never trains on and you rarely look at. It is the only honest number.
- 168baselineThe dumb method you have to beat: predict the mean, the last value, or the rule you already run.
- 169driftThe world moved. The model did not. Inputs changed, or the meaning of the label changed.
- 170quantizationFewer bits per weight. Smaller and faster. Measure the quality drop. Do not assume it is free.
- 171inferenceRunning the trained model on new inputs. Training is the other, heavier loop. Do not do training inside the request.
cloud
Infrastructure as code, containers, cold starts, tenants, GitOps. How machines are built and replaced.
- 172infrastructure as codeThe servers are a reviewable diff. Clicking the console is how the next environment drifts.
- 173immutable infrastructureReplace the server. Do not SSH in and patch it. The next boot matches the build.
- 174containerA process with its filesystem pinned. It is not a VM, and “works on my machine” is the image, not the laptop.
- 175cold startThe first request pays for process start. After idle, it pays again. Do not put a 2-second boot on a user click.
- 176multi-tenancyMany customers share a system. A bug that forgets the tenant id is a data breach, not a glitch.
- 177object storageBlobs addressed by key. Not a filesystem, not a database, not something you append to in place.
- 178region and zoneA zone is a data center. A region is a group of them. Two instances in one zone are one fire.
- 179GitOpsGit is the source of what should be running. A controller makes the cluster match. A laptop deploy is drift.
- 180twelve-factor appConfig in the environment. State in a backing service. Processes are disposable. Logs go to stdout.
- 181blue-green deployTwo full environments. Traffic flips from old to new. Flip back if the new one is wrong.
- 182configuration driftWhat is running is not what is in git. Someone fixed production by hand.
- 183serverlessYou do not run the server. You still own cold starts, limits, and the bill per invocation.
concurrency
Races, deadlock, mutexes, async versus parallel, cancellation. Things that happen at the same time. Not a faster for-loop.
- 44race conditionThe later request finishes first. Search, double-submit, and “check then set” all hit this.
- 184deadlockTwo waiters each hold what the other needs. Nobody proceeds. Always take locks in one order.
- 185mutexOnly one holder enters. It is not a suggestion, and it does not work across processes unless you bought a distributed lock.
- 186async vs parallelAsync waits without blocking a thread. Parallel uses more than one core. They are not synonyms.
- 187thread poolA fixed set of workers. Extra work waits. Unbounded thread creation is how you run out of memory.
- 188actor modelEach actor has a mailbox and private state. Others send messages. They do not touch its memory.
- 189cancellationWhen the caller gives up, the work stops. A request that outlived the user still holds a database connection.
- 190memory leakThe process keeps memory it will never use again. Caches without a bound and listeners without an unsubscribe are the usual doors.
- 191lock contentionEveryone queues on one lock. The lock is correct and the throughput is gone.
- 192atomic operationThe update happens entirely or not at all, even when two threads do it. A read-modify-write of a normal variable is not atomic.
network
TCP, TLS, DNS, pools, head-of-line blocking. How bytes move. Timeout is not the only word.
- 193TCP vs UDPTCP is a reliable ordered stream. UDP is datagrams. You do not “just use UDP” for a file upload.
- 194TLSEncryption and identity on the wire. HTTPS is HTTP inside TLS. Turning off verification is not a dev mode to ship.
- 195DNSNames to addresses, cached longer than you think. A failover that depends on DNS is a failover with a TTL.
- 196connection poolReuse connections. A new TCP and TLS handshake per query will dominate the query.
- 197head-of-line blockingOne slow item at the front of a single queue stalls everything behind it. Split the queue or the connection.
- 198HTTP cachingCache-Control tells the browser and the CDN what they may reuse. A missing header is not “no cache.” It is “guess.”
- 199reverse proxyA server in front of your app that terminates clients and forwards inward. Your app is not exposed raw unless you mean it to be.
- 200bandwidth vs latencyBandwidth is how much per second. Latency is how long before the first byte. A fat pipe does not fix a chatty protocol.
- 201TLS terminationWhere the encrypted session ends. After that hop, know whether the rest of the path is still trusted.
- 202HTTP/2Many requests on one connection. It removes a class of blocking and does not make a slow server fast.
- 203packet lossSome packets never arrive. TCP hides it by waiting. A timeout that is shorter than retransmission makes a slow network look “down.”
- 204keep-aliveReuse the TCP connection for the next request. Closing it every time repeats the handshake.
ux
Empty states, accessibility, undo, destructive actions, skeletons. How the interface behaves when it is empty or wrong.
- 54accessibilityKeyboard, names, contrast, motion. If you cannot tab to it, it is not a button.
- 205empty stateThe first time there is nothing, the screen explains why and what to do. A blank table is not a design.
- 206progressive disclosureShow the next decision when it becomes relevant. Do not show every setting on the first screen.
- 207affordanceThe control looks like what it does. A button looks pressable. A non-button does not.
- 208mental modelWhat the user thinks the system is doing. If the model is wrong, the UI taught the wrong story.
- 209destructive actionDelete, discard, revoke. It is not the primary color. Confirm if it cannot be undone. Offer undo if it can.
- 210undoThe action can be reversed from the UI. A soft delete nobody can restore is not undo.
- 211skeleton screenA placeholder shaped like the content, shown while loading. Not a spinner in a void, and not a fake version of the data.
- 212error copySay what happened and what to do next, in the user’s nouns. `ECONNRESET` is not copy.
- 213onboardingThe shortest path to the first success. Not a tour of every button.
- 214information architectureWhat the things are called and where they live. Navigation is that decision made visible.
- 215perceived performanceHow fast it feels. A slow task that shows progress feels faster than a fast task that freezes.
- 216modal vs pageA modal interrupts. A page is a place you can link to. If the user might refresh or share it, it is a page.