Full-stack engineer — Shopify apps, Node.js/TypeScript services, and native macOS utilities.
I like knowing why the machine does what it does.
I build Shopify apps end to end — the merchant admin (React Router v7, Polaris, App Bridge), the storefront widgets that have to stay small enough to load on every theme page, the Shopify Functions underneath, and the NestJS services, queues and BigQuery pipelines behind all of it.
I tend to get handed the parts that are hard to get right rather than hard to write: multi-tenant data correctness, race conditions in cart mutations, carrier API integrations, and analytics that a business actually makes decisions from. I also build the AI tooling my team runs on — agent skill suites for a spec-to-code workflow, and LLM analyst agents that answer business questions straight from the event warehouse.
Operating systems, and what happens when you stop accepting the defaults.
Most of my side work starts the same way: something on my machine behaves worse than it should, I go find out why, and the answer turns into a tool. That curiosity is where the low-level half of my skill set comes from — event taps, IOKit, display services, privileged writes you only make after staging a recovery path. Optimising a system is just the polite word for refusing to leave it alone.
Unix is home. Linux and macOS are where I think, work and tinker — a real shell, composable tools, and a system that lets you look inside it.
Windows lives on a second drive purely so games run. It is, as far as I'm concerned, a games console that happens to have a Start menu. 🎮
This is where I put some of the source I write — mostly native macOS utilities I built because I wanted them to exist, then released because someone else probably wants them too.
|
Smooth scrolling, button remapping and a drag-to-switch-Spaces gesture for ordinary mice. Single process, no background helper, negligible idle CPU, and it survives sleep/wake and display changes.
|
Adds the HiDPI resolutions macOS won't offer you, plus brightness control for external displays. Every privileged write is preceded by a recovery package and verified by hash afterwards.
|
| Languages | TypeScript · JavaScript · SQL · Swift · PHP |
| Backend | NestJS · Express · Prisma · PostgreSQL · MongoDB · Redis · BullMQ · AWS SQS |
| Frontend | React 19 · React Router v7 · Preact · TanStack Query · Tailwind · Vite |
| Shopify | Admin GraphQL · Functions · theme app & checkout UI extensions · webhooks · Polaris · App Bridge |
| Data & AI | BigQuery · GA4 modelling · Claude Code agent/skill design · MCP tooling · LLM evals |
| Infra | Docker · AWS · GitHub Actions · pnpm workspaces · Jest |
Vietnamese (native) · English (professional working proficiency)


