a small field guide

Development concepts for system design.

A small library of short animations exploring concepts I’ve encountered across the stack - from load balancers and observables to signals, race conditions, optimistic UI, and more.

success · hit · synced
miss · pending · stale
error · blocked · failed
data · event · write
Back-end
Load balancer
Spreads requests across healthy servers; reroutes around a failure.
Back-end
Pub / sub
One publish, many subscribers - decoupled by a topic. Exclusive and loose coupling between services.
Back-end
Polling vs WebSockets
Polling asks ‘anything yet?’ on a loop. A socket stays open and pushes when ready.
Back-end
Idempotency
A retried request with the same key shouldn’t be applied twice.
Back-end
JWT signing
Header + payload are hashed with a secret. The signature proves it wasn’t tampered with.
Back-end
Database indexing
An index points straight at the row. Without one, the engine reads every row.
Front-end
Hot vs cold observables
Cold: each subscribe starts its own run. Hot: subscribers share one live stream.
Front-end
Observable streams
Values flow through operators that transform and filter the stream.
Front-end
Signal store
A signal updates. Computed values recompute. Only what depends on it re-renders.
Front-end
View-only components
State lives in the container. The view is a pure function of its props.
Front-end
Race conditions
A slower, older request finishes last - and overwrites fresher results.
Front-end
Sequential vs parallel await
Awaiting one at a time stacks the wait. Promise.all runs them concurrently.
Design / UX
Optimistic UI
Update the UI immediately. Reconcile when the server replies - or roll back.
Design / UX
Skeleton loading
Show the shape before the data arrives. The page feels alive. Spinners say wait; skeletons say almost there.
Design / UX
Tab index
Tab walks focus through the DOM. Order matters - every interactive node gets a turn.