Live
Demos
Nothing here is a screenshot. Open one and use it — including the parts designed to fail.
Live demos

Three games from the tea house — algorithm sample
Domino, Okey and Konkan — the games actually played over tea in Erbil, with opponents that really play. Built around the search that decides whether fourteen tiles split into sets and runs, which the obvious greedy version gets wrong.

A hundred thousand rows — performance sample
The same 100,000-row table rendered two ways with the DOM node count live on screen: every row in the document, versus only the twenty you can actually see.

Form validation timing — interaction sample
The most common interface there is, ruined most often by one undocumented decision: when the error appears. The same form runs under three timing strategies so the difference is something you feel.

Bilingual RTL interface — design sample
One interface, three languages, one stylesheet. Kurdish, Arabic and English from the same markup — plus the parts that are never automatic: what must not mirror, and what numbers do inside a right-to-left sentence.

Appointment booking — system design sample
A clinic booking screen built around the bug you cannot find by clicking carefully: two patients tapping the same slot in the same instant. Run the race with and without a unique constraint and watch one version put two people in one chair.

Invoice builder — document design sample
The only thing here designed for paper rather than a screen. An invoice editor with a true-A4 preview and a print stylesheet that holds up: repeating table headers, no split line items, and a total that can never be orphaned onto its own page.

Offline-first courier app — application design sample
A delivery app built for no signal. Turn the network off and keep working: every action lands on the device and queues, every queued action carries a key so a resend cannot double-deliver, and the app never claims the server agreed when it has not.

Six small games — interaction and algorithm sample
Six games, each built around one problem that is easy to get subtly wrong: a guess-free minefield, a 2048 that cannot double-merge, duplicate-letter scoring, the Tetris bag, a Sudoku with exactly one solution, and the sliding-puzzle parity trap.

Restaurant till and kitchen display — system design sample
A working till and the kitchen screen it feeds: menu, modifiers that split a line, service and tax, and tickets that age in front of the chef. Every amount is an integer, never a float — and the page proves the difference live.

Pharmacy dispensing console — system design sample
A working dispensing screen: prescription queue, an allergy check that blocks rather than warns, first-expiry-first-out batch picking, a controlled-drugs register that cannot be edited, and live shelf stock.

Fuel forecourt console — system design sample
A live simulation of a station back-counter screen: eight pumps on a real clock, authorise and settle, drive-offs that actually happen, tank levels that fall by exactly what was dispensed, and the shift reconciliation behind it.

Property search — application design sample
An estate agency search that behaves: filters that read back as a sentence, a result count that cannot disagree with the list, a detail drawer that keeps your search, and a mortgage calculator that does the real amortising sum.

Car showroom — web design sample
A showroom page for an invented marque: a configurator that repaints the car, a spec strip that counts up as it comes into view, and a finance calculator running the real amortising sum.

Twelve launch animations — motion design sample
Twelve app and website splash screens, each replayable on demand: mark assembly, liquid fill, stagger, mask reveal, orbit, typewriter, morph, shutter, zoom portal, skeleton, spring settle and a progress ring. Every one under a second.

Marketing site — design sample
A complete landing page design: hero, feature sections, a pricing table with a working billing toggle, an accordion FAQ and a footer. Light, serif, generous — deliberately nothing like this portfolio.

Admin interface — design sample
A working product UI: hoverable area chart, sortable and filterable table, detail drawer, toasts. Dense where the marketing sample is airy, because the two jobs are not the same job.

System design — an order system for one bad afternoon
A full design walkthrough: capacity estimate, topology, data model, the write path and why sending it twice is harmless, cache layers, and what breaks first.

REST API & console
A working JSON API — token auth, pagination, ETag caching, rate limiting — with a console for firing real requests at it and reading what comes back.

Task board
A complete front-end app in a single file: drag and drop, fully keyboard-operable, undo, and state that survives a refresh.

Developer toolkit
The small tools you end up pasting into a stranger’s website at 2am — JSON, JWT, regex, hashing, cron — rebuilt to run entirely in your own browser.
Why these exist
A portfolio should be checkable.
Anyone can write “experienced with REST APIs” on a page. It costs nothing to type and it tells a reader nothing, because they have no way to test it. So the claims on this site come with the thing itself attached: the API is running, the board saves your cards, the tools work with the network unplugged.
Each one has a write-up on the work page covering the architecture and the decisions behind it — including the ones I would make differently now.
Contact
Need something like this, but real?
Tell me what it has to do and who has to use it.