Quirky
Live · opens in a new tab
A hub of browser games and tools — eleven daily puzzles plus quizzes and calculators. No build step, no backend, no account, no downloads: open it and it runs.
- Vanilla JS
- PWA
- Cloudflare Pages
Ryan Xu
Cloud infrastructure, production AI systems, and identity tooling for regulated environments.
12 projects. The live ones open in a new tab; the rest show a preview, depending on what each one touches.

A hub of browser games and tools — eleven daily puzzles plus quizzes and calculators. No build step, no backend, no account, no downloads: open it and it runs.

A live map of every bus in Metro Vancouver, shaped by one constraint: TransLink allows 1,000 API requests per day per key. No browser ever calls TransLink — a single Durable Object owns every request, and a test fails the build if a change would overspend the cap. Between polls each bus is projected forward along its real route at its own measured speed, and its marker fades as that prediction ages, so the map never presents a guess as a fact.

A free rotation generator for racquet sports — badminton, pickleball, tennis, padel, table tennis. Paste a player list and it builds fair rounds: everyone plays, partners change, and the pairings you want kept apart stay apart. Every player opens the schedule on their own phone from one link, rather than crowding round the organiser's. It began as a tool for my own group.

A free, private tool for finding Canadian government benefits you might be missing. Answer a short questionnaire once, then see every federal and provincial benefit you may qualify for — ranked by estimated dollar value, each with plain-language reasons and how to apply. Trilingual in English, Traditional Chinese, and Simplified Chinese, with no signup and no tracking: your answers stay in the browser.

A neon-themed browser arcade with two minigames. A snarky gargoyle guards a vault in a riddle game where you may only ask oblique yes/no questions, never for the password itself. A one-hit-point survival game has you dodge or parry attacks that telegraph their direction, with the timing window shrinking every wave. No build step, no backend, no account.

A four-letter test that tells you which second type is living in your result. Thirty-six questions, a seven-point scale, and no running tally on screen while you answer. No account, nothing saved, nothing sent anywhere.

Market analysis console: an analyst and screener service behind a Cloudflare Worker API, with a deployed React frontend for research and service health.
Captures AI-related posts as they appear and turns each one into a short summary plus a why-it-matters note, so a feed becomes a reviewable reading queue.
Job search that checks eligibility before relevance — hard gates run before any similarity scoring. Every result carries its evidence, gaps, and provenance, plus an honest note on what the run did not cover.
Balance-sheet-first personal finance, built around one question: what should I do now? It leads with what is owned and owed rather than a scrolling transaction feed.
Read-only portfolio review. It turns a point-in-time snapshot into a deterministic after-close report, requesting outside research only when a position warrants it. There is no order endpoint, by design.
Drafting, scheduling, and publishing for Threads. Built to be exercisable before real credentials exist: publishing runs dry by default, and copy generation falls back to deterministic placeholders when no API key is set.
Three years at an identity-verification company, from co-op to Software Engineer II, plus a term teaching the systems course that explains why any of it works.
Vancouver, Canada
Feb 2025 – Present
Backend for AI-assisted business-entity and beneficial-ownership discovery: provider-backed APIs, grounded search, and the deterministic regression coverage that now gates every merge.
Apr 2023 – Jan 2025
A customer-facing verification microfrontend, and the event-driven persistence behind it — retries, sequencing, duplicate events, and eventual consistency.
May – Dec 2022
Full-stack business-verification work across 88 tickets. Owned one feature end to end — web UI, microfrontend, SDK, and configuration — then filed the follow-on refactor unprompted. Closed the term prototyping a graph database that mapped company-ownership relationships from public registry data.
Vancouver, Canada
Jan – Apr 2023
Introduction to Computer Systems: the course that takes students from high-level code down to assembly, memory layout, I/O devices, virtual processors, and concurrency. Supported roughly 470 students across three lecture sections — ran labs, held office hours, answered the course forum, graded, and invigilated.
Vancouver, Canada
Sep 2021 – Apr 2022
Internal web applications for regional government clients, backend and frontend. Reviewed teammates' pull requests, supported client requests directly, and shipped a full-stack feature spanning a jQuery form and a code-first migration that moved a foreign key between tables.
The parts of the job a bullet list tends to flatten: what got measured before it got built, what got reported when it didn't work, and what got left quieter for everyone after.