01 Uses
What I work with.
The actual tools, stack, and workflow behind the work on this site. Updated when something changes, not on a schedule.
Editor & code
05- 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.
Design
03- 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.
Stack
07- TypeScript
- Default for everything I author from scratch.
- Astro
- This site. Static-first, content collections, MDX, view transitions.
- React + React Native (Expo)
- 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 ChatOBD2.
AI workflow
04- 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 run before every model call in ChatOBD2.
- Token budgets as resource budgets
- 38,000-token system prompt assembled per scan, P0 sections always make the cut.
Hardware
03- MacBook Pro 14"
- M3 Pro, 36 GB. Daily.
- Studio Display
- Single screen, no second monitor. Forces tab discipline.
- iPhone 15 Pro
- Always nearby, mostly because of ChatOBD2 testing.
This site
06- 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, Instrument Serif, 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.