Work Experience

  • Maintain an aviation information system on Cloudflare Workers for 200 operators, migrated from Remix to React Router 7
  • Replaced 45 legacy scopes with a 73-scope permission model across 30 modules at view, manage, and admin levels
  • Built durable offline CRUD for flights with a service-worker app shell, an ordered outbox, and an IndexedDB query cache
  • Added a critical-path bundle budget that fails the build, after @react-pdf (1.4 MB) leaked onto every route
  • Built the MRO module for work orders, parts and stock, tools, defects, airworthiness, and timesheets
  • #typescript
  • #react
  • #react-router
  • #tailwind

Open Source Contributions

Merged pull requests in other people’s projects.

foldkit/foldkitA UI framework for TypeScript, which Nook and Lutra are built on.3
  • #1295feat!Pointer-driven swipe to dismiss toasts, with gesture state kept per entry. Toasts that don't opt in keep native touch behaviour. A breaking change.
  • #1294featHeadless, accessible Meter and Progress views, sharing range and labelling helpers with Slider.
  • #1293featVertical sliders, plus an opt-in mode that keeps the thumb inside the track.
RooCodeInc/Roo-CodeAI coding assistant for VS Code. 21 merged PRs, April to October 2025.6
  • #8509fixTruncates `list_code_definition_names` output to the number of lines the agent can actually read.
  • #8499fixCustom modes vanished after setting a custom storage path, because the global storage path was hardcoded.
  • #7318fixThe auto approve menu's trigger now stays put instead of moving, so there is less mouse travel.
  • #4684refactorPicked up a stale PR and rebuilt the history UI: styles moved to Tailwind, one filter dropdown, tests updated.
  • #4306fixShows the model id error next to the input that is wrong, and resets invalid values when the provider changes.
  • #3343fixPrompt settings synced on every change, so a slow backend reset the input. They now sync on blur.
zen-browser/desktopA Firefox-based browser.1
  • #968fixThe tabs-on-the-right setting had no effect in compact mode.

Personal Projects

Mostly made them just for fun and to learn new things.

Blog

Even though I don't write often, I try to share my thoughts and experiences from time to time. Hope you find them useful!

Git Activity

2,176contributions · past 6 months

longest streak · 26d

MayJunJulAugSep
less
more