Uses A practical colophon

What I work with.

The actual tools, stack, and workflow behind the work on this site. Updated when something changes, not on a schedule.

5
VS Code
Daily driver. JetBrains keymap, no theme overrides.
Cursor
When the work is local iteration on a tight loop.
Claude Code
When the work needs to think across more than one file.
iTerm2 + zsh
Tabbed sessions, per-project profiles.
GitHub Desktop
For diffs and quick commits. Branching and rebasing in CLI.
3
Figma
Precision design, component-system maintenance, handoff fidelity.
Claude Design
Visual exploration when a frame is faster to think in than markup.
iA Writer
Writing-first for long-form content and case study drafts.
7
TypeScript
Default for everything I author from scratch.
Astro
This site. Static-first, content collections, MDX, view transitions.
React + React Native (Expo)
VINly and ChatOBD2 mobile + web surfaces.
ASP.NET MVC + Razor
MagTek platform. Razor partial library past 100 typed components.
Hand-written CSS
Tokens, layout primitives. No utility-class framework on this site.
Tailwind
On projects where the team is already on it.
Supabase
Database, auth, edge functions for VINly and ChatOBD2.
4
Prompt modules in source
Typed, versioned, reviewed in PRs like any other code.
Schema-bound outputs
Model output is constrained at the boundary, not at the UI layer.
Deterministic layers in front
Six reasoning layers before every model call in ChatOBD2; in VINly a VIN is check-digit validated on-device before anything is looked up, and no model runs at all.
Token budgets as resource budgets
38,000-token system prompt assembled per scan, P0 sections always make the cut.
3
MacBook Pro 14"
M3 Pro, 36 GB. Daily.
Studio Display
Single screen, no second monitor. Forces tab discipline.
iPhone 15 Pro
Always nearby, mostly for VINly and ChatOBD2 field testing.
6
Astro 4
Static-first, content collections for case studies, MDX.
Hand-written CSS
No CSS framework. ~12 KB of design tokens carry the system.
Inter, Fraunces, JetBrains Mono
Loaded from Google Fonts via preconnect.
Plausible analytics
Privacy-respecting. No cookies, no fingerprinting.
Web3Forms
Static contact form, no backend required.
Cloudflare Pages
Static deploy, edge caching.