Editor & terminal

Cursor / Claude Code

Primary editor. Claude Code for agentic work, Cursor when I want hands-on edits.

Ghostty

Default terminal. Fast, GPU-rendered, no nonsense.

zsh + starship

Default shell. Minimal prompt with git status.

Neovim

Quick edits over SSH and config files.

Languages I reach for

TypeScript

Default for anything that talks to a browser or runs on Node.

Rust

Anything CPU-bound, native, or where predictable latency matters. Powers Kite + Coin.

Python

Scripts, data work, ML experiments.

Go

Network services where I want a small binary and no GC tuning.

Frameworks & runtimes

Astro 6

Every content/marketing site I run (Fittour, HonestMoney, this site, the product landings).

React 19 + Vite

Inside Tauri shells. Pure rendering — Rust does the actual work.

Tauri 2

Default for desktop products. Rust backend + web frontend, signed cross-platform releases.

NestJS

Backends with structure. Powers No-Brainer.

Express + Mongoose

When I want minimal ceremony. Powers the shared waitlist service + Kite backend.

Data & infra

MongoDB Atlas

One shared cluster across the polyrepo. Schemaless wins for fast iteration.

PostgreSQL

When relationships matter more than speed-to-ship.

Redis

Caching, queues, rate limits. Lives next to the NestJS apps.

Railway

Hosts almost everything. Docker-based deploys, zero infrastructure overhead.

AWS S3

Object storage. BYOK pattern in No-Brainer.

Cloudflare

DNS, CDN, edge cache for the content sites.

Tooling

pnpm

Default package manager across the polyrepo.

Docker + Docker Compose

Local-stack reproducibility, especially for No-Brainer's full pipeline.

GitHub Actions

Kite's signed cross-platform release pipeline runs here.

Kite

I dogfood my own API client. If a request can't be hand-crafted in Kite, that's a bug for me to fix.

Hardware

MacBook Pro (M-series)

Primary machine. Everything builds here.

External 4K display

Vertical scroll real estate matters more than horizontal.

Wired keyboard + trackpad

Plain Apple peripherals. Tools, not jewelry.

Reading & writing

Medium

Where the back catalogue lives. New essays land here.

Linear (occasionally)

For client work. Personal projects live in plain markdown plans.

Plain markdown

Strategy docs, plans, growth-plan — everything lives in flat .md files versioned in git.