Uses
An honest list of tools and services that produced the work on this site. Updated when something changes, not on a schedule.
Languages & runtimes
I work mostly in two stacks. Swift and SwiftUI for native macOS, with AppKit where SwiftUI still has gaps. Background work talks to SQLite directly. TypeScript on Node.js for everything web and CLI. Both stacks share a preference for keeping things compiled, typed, and small.
For ParkMoto specifically the front-end is plain JavaScript with Leaflet for the map, the Geolocation API for "where am I", and a Service Worker so the whole thing runs as a PWA when you add it to your home screen.
Editor & AI
Cursor for most code work. Xcode for native macOS, because the alternative is fighting the toolchain. I use Claude as the primary thinking partner: planning, drafting, debugging, the occasional rubber-duck session at 2am.
What I don't do: I don't let an AI agent push code without me reading it. I don't auto-accept suggestions in long files. The boundary I keep is that the commit message has to make sense to me when I read it back six months later.
Hosting & services
Static sites on GitHub Pages when there's no backend (this site, ParkMoto's marketing pages). Vercel when there is. Source on GitHub, mirrored where useful to my projects organisation.
Maps come from OpenStreetMap. Payments through Lemon Squeezy for digital products (Bastion Pro). Domains through Namecheap. Email on Gmail because it works.
By project
The actual stack pills lifted from each project page, so this stays accurate when the project pages do.
N° 01 · NotchWise
N° 02 · Bastion
N° 03 · ParkMoto
N° 04 · Lovable-Eject
This site
Hand-written HTML, no build step, no framework. Fraunces by Undercase Type for display, JetBrains Mono for code and metadata, both via Google Fonts. SVG cover plates per project, drawn in Figma. Click-to-copy on CLI boxes is about thirty lines of vanilla JavaScript. The whole thing is in one repo if you want to look at how it's put together.