I'm a frontend engineer pivoting to full-stack. I started with Vue in college, then spent three years shipping React frontends and a component library at AntStack. At Seezo the work kept going down the stack: Django APIs, LLM pipelines, Kubernetes manifests. Some features needed all of it.
These days I'm employee #4 at Seezo, where LLMs review software designs for security flaws before anyone writes the code. My job is making that hold up when a real customer is watching.
Roughly 4 in 5 of my 5,000+ contributions live in private repos, so most of my graph is anonymous green squares. Here's what's behind them, frontend first.
| At Seezo | |
|---|---|
| UI systems | A shared DataTable kit with filtering, sorting and column visibility built in, a Linear-style filter menu, view state deep-linked through the URL, and a data flow diagram editor with PDF export |
| Migrations | The React rewrite of the core product screens, a Tailwind v4 migration, and codemods that removed forwardRef across the codebase |
| Speed | Fixed an assessment page that froze when switching tabs, and moved PDF export into the browser and off the server workers |
| Testing | The Playwright E2E suite and its CI, built from nothing and kept green through the rewrite and the Tailwind migration |
| At Seezo | |
|---|---|
| LLM plumbing | Structured outputs that survive AWS Bedrock, prompt caching through LiteLLM, and concurrency caps that ride out proxy timeout storms |
| Backend performance | Per-tenant LLM config behind an LRU cache of frozen, structurally shared dataclasses. Also deleted a per-row correlated subquery from the main dashboard |
| Security | Immutable audit logging with a SIEM pull endpoint, error sanitising so secrets never reach the logs, OIDC redirect state kept out of query strings |
| Range | One Slack feature across four repos: Django code, a self-supervising listener, an ECS service and a Kubernetes deployment |
This year I've reviewed more pull requests than I've opened: 263 against 216, as of October 2026. Somewhere along the way I became the person the code goes through.
Public, built on weekends, usually because something was annoying me.
| Repo | What it does | Built with |
|---|---|---|
| strata | See what's actually eating your disk. WinDirStat for macOS that reads metadata in bulk: 3.3× faster than readdir + lstat, a 3.7M-file boot disk in 28.7s |
Rust, Tauri |
| presenta | Slides as React components on a fixed 1920×1080 canvas, so the TV and the Meet share see the same slide. Your phone is the clicker | Next.js, SSE |
| pdf-unlock | Bank statements arrive password-locked and break every automation. This writes a plain copy and keeps passwords in the OS keyring | Python |
| hover-design | A React component library a bunch of us built at AntStack. I led it | React, vanilla-extract |
| png-to-webp | PNG to WebP from the terminal, for frontend folks with heavy asset folders | TypeScript |
The archaeology layer (2019 to 2023)
| Repo | What it was |
|---|---|
| tedxjnec2019website | My first real commit, August 2019. 59 commits of plain HTML |
| covued | A live COVID-19 case tracker in Vue, built during the 2020 lockdown |
| use-debounce | A tiny React hook that debounces things |
| Polymorph | My FOSSHack 2023 entry |
| DSADOD | Competitive programming, in Rust and Python |
On the LLM side: LiteLLM, AWS Bedrock, structured outputs and prompt caching. Vue was the first framework I really thought in, so it stays on the list.
A GitHub Action redraws this every night. The snake counts the private squares too, which makes it better informed than my profile.
- Leaving an org makes GitHub forget your private work. About 200 of my PRs vanished that way, so I rebuilt the record from GitHub's notification emails in my inbox.
- My first real commit was a TEDx website in 2019. Two years later I led engineering for the 2021 edition: 287 commits and 44 reviews in one repo.
- I've judged a hackathon: Hack3, 375+ high schoolers from 54 countries.
- My Hacktoberfest 2020 PR was written in Rust. It got merged.
- My notes, workouts and budget live in an Obsidian vault that Claude helps me run. This README was drafted in there.
- On weekends I'm a cinephile, with anime and games in between. The rest of my free time goes into configuring my home server.



