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
client
LB
svr-0
svr-1
svr-2
svr-3
Back-end
Load balancer
Spreads requests across healthy servers; reroutes around a failure.
pub
orders ·topic·
sub a
sub b
sub c
Back-end
Pub / sub
One publish, many subscribers - decoupled by a topic. Exclusive and loose coupling between services.
polling
repeat requests - most return nothing
req
res
websocket
one connection - server pushes when ready
conn
push
Back-end
Polling vs WebSockets
Polling asks ‘anything yet?’ on a loop. A socket stays open and pushes when ready.
retry · no key
✗ charged 2×
c
POST $10
retry $10
balance · $100balance · $90balance · $80
retry · with key
✓ dedup’d
c
POST $10 · k:abc
retry · k:abc
(cached)
balance · $100balance · $90
Back-end
Idempotency
A retried request with the same key shouldn’t be applied twice.
headereyJhbGc…
.
payloadeyJzdWI…
.
signature- - -a3f5d2c…
HMAC-SHA256+secret
Back-end
JWT signing
Header + payload are hashed with a secret. The signature proves it wasn’t tampered with.
scan O(n)
index O(log n)
Back-end
Database indexing
An index points straight at the row. Without one, the engine reads every row.
cold
each subscribe = its own run
sub a
1
2
3
sub b
1
2
3
hot
shared stream - late subs miss earlier values
stream
1
2
3
4
sub a
1
2
3
4
sub b
subscribes
3
4
Front-end
Hot vs cold observables
Cold: each subscribe starts its own run. Hot: subscribers share one live stream.
stream
1
2
3
4
.map(×2)
2
4
6
8
.filter(>4)
×
×
6
8
sub
6
8
Front-end
Observable streams
Values flow through operators that transform and filter the stream.
count0
doubled0
isEventrue
<View x={0}/>
<Tag on={Y}/>
Front-end
Signal store
A signal updates. Computed values recompute. Only what depends on it re-renders.
container
state ={ count: 0 }
props={ count: 0 }
view · pure
Count: 0
Front-end
View-only components
State lives in the container. The view is a pure function of its props.
search"appl""apple"
req A
"appl" · slow
req B
"apple"
…apple-pie · app storeapple · apricot
stale ⚠
Front-end
Race conditions
A slower, older request finishes last - and overwrites fresher results.
sequential
total · 3.0s
fetch A
fetch B
fetch C
parallel · Promise.all
total · 1.0s
fetch A
fetch B
fetch C
Front-end
Sequential vs parallel await
Awaiting one at a time stacks the wait. Promise.all runs them concurrently.
happy path
1213
syncing…saved ✓
rollback
1213
syncing…failed · revert
Design / UX
Optimistic UI
Update the UI immediately. Reconcile when the server replies - or roll back.
Ada Lovelace
2h · public
Shipped the caching layer - p95 dropped from 220 ms to 38 ms.
Design / UX
Skeleton loading
Show the shape before the data arrives. The page feels alive. Spinners say wait; skeletons say almost there.
nametabindex="0"
emailtabindex="0"
messagetabindex="0"
send →tabindex="0"
Tab ↹
Design / UX
Tab index
Tab walks focus through the DOM. Order matters - every interactive node gets a turn.
say hi
Taking something from 0 to 1, or making an early system feel clearer and more reliable?
UX research, technical consulting, and product engineering in EMEA. Get in touch.
ai researcher·technical consultant·EU/EMEA based·0 → 1·design engineering··ai implementation·product engineering·
ai researcher·technical consultant·EU/EMEA based·0 → 1·design engineering··ai implementation·product engineering·