01Work 02Impact 03About 04Experience 05Stack 06Contact 07Lab
CRSR 0.000 · 0.000
SCRL 0.00 %
07 / Lab — WHERE THINGS ARE ALLOWED TO BREAK

Lab.

Side quests and half-built ideas I poke at when nobody's paying me to. Production is downstairs and stays boring on purpose — this is where I'm allowed to break things. Some ship. Some become cautionary tales I tell in interviews.

LIVE

Morphism, three ways

Skeuomorphism, neumorphism and glassmorphism — the same music-player card morphing live between all three, each shown in the environment its effects actually need. A small study in how a flat screen fakes depth.

CSS only backdrop-filter blur box-shadow ×2
OPEN →
PLAYABLE

Game Corner

A small arcade of hand-built browser games — tic-tac-toe with an unbeatable minimax AI, minesweeper, tetris, 2048 and updating — each one a single self-contained file of vanilla JS. No engine, no build step. Lives in its own gaming world; open and check out.

vanilla JS canvas 8 games
OPEN →
PLAYABLE

Playground

A draggable image cloud of photographs and visual experiments — pan around on desktop, hover to focus, click to open in a lightbox; a calm masonry grid on mobile. Vanilla JS, manifest-driven. Lives in its own "free" world; explore for yourself.

drag & inertia masonry lightbox
OPEN →
IN PROGRESS

Smart POS system

A point-of-sale that stays fast when the shop Wi-Fi doesn't. Offline-first: every sale queues locally and reconciles when the network wanders back — because a till that freezes mid-transaction is how you lose a customer and a Saturday.

offline-first IndexedDB queue sync eventual
COOKING
LIVE

Multi-tenant SaaS

One codebase serving many tenants with zero data bleeding between them. An interactive study: a live row-level-security leak demo, the pool/bridge/silo isolation models, tenant routing, and the noisy-neighbour problem.

row-level security Postgres tenancy
OPEN →
QUEUED

Multi-cloud on Kubernetes

The same workload running across two providers, because keeping all your pods in one cloud's basket is an excellent way to end up featured on its status page. Terraform for the plumbing, k8s for the workload, failover for the 3am I'd rather sleep through.

k8s Terraform failover
QUEUED
EOF — for now

More experiments are still compiling. This is the part where I'd show a roadmap… if I trusted roadmaps as far as I trust DNS.

$ tail -f /lab  —  check back; the list grows when the coffee holds.

Seen the paid work?
That one's documented.