What's in my bag
2026
What I am actually using this year.
The honest version, not the aspirational one. Pulled from the things I have actually shipped to in the last twelve months. Updated annually — anything older lives in the archive.
Languages
- TypeScript — the default for almost everything I build. Strict mode, no exceptions. If a type is not derived from a DB schema or inferred from a source of truth I control, it does not belong in my stack. tRPC and GraphQL have both filled this role on past projects; Outstatic is built on the same premise and is what backs this site.
- Go — when I want a single binary, predictable concurrency, and no runtime to babysit. Togglez is in Go.
- Zig — picked it up in 2025 to write velk. Painful in the best way; it's the language I think about most when I'm not writing it.
- Swift, Kotlin, Obj-C — when an Expo module needs to drop into the platform layer or I have to debug something the JS side can't see.
- Lua — only because Neovim config.
Editor and tools
- Neovim — LazyVim base, my own plugin set on top. Tracked in a private dotfiles-style repo so I can roll forward across machines.
- cmux — primary terminal day-to-day. Tuned around agentic coding patterns with Claude Code — notifications when an agent finishes, parallel sessions, the things plain terminals make awkward.
- Helium — browser of choice, with Chrome's vertical tabs.
- Zsh + Oh My Zsh — fzf, nvm auto-use, jenv. Boring on purpose.
- Claude Code — pair-programming agent in the terminal. Most of my non-trivial work in 2026 has involved it somewhere in the loop.
- Bun — runtime, package manager, and script runner. Bun all the things — replaces Node + npm + ts-node + a lot of shell scripts.
- gh CLI — git from the terminal, gh for issues and PRs, Lazygit when I want a TUI for staging hunks and rewriting history.
- Obsidian — notes app of record. Leaning hard on the CLI plus Claude this year — capture, search, and summarize without leaving the terminal.
- Figma — design surface for everything visual before it becomes code.
Mobile
- Expo — the only way I start a React Native project now. Caliburr, Pod Haven, Stash Note, Equipless, and Cue all run on it.
- React Native 0.83+ — new architecture, default.
- NativeWind — Tailwind on native. Same vocabulary as the web side, no styled-components drift.
- Expo server components — used in Equipless before they were a stable bet. Worth it.
Web
- Next.js — App Router, Server Components, Turbopack. Portfolio site and Northeast Bridal both ride this.
- Tailwind CSS v4 — the `@theme` / `@utility` direction is an upgrade over v3 config files.
- Radix UI — unstyled accessibility primitives.
- class-variance-authority — variant management for the Tailwind class strings on top.
Data layer
- PostgreSQL — default whenever I need a real database. Togglez runs on it.
- SQLite — default whenever I do not. Pod Haven and Nyra keep everything on-device.
- Drizzle ORM — typed SQL, no leaky generated client. Drizzle Kit for migrations.
- Supabase — Postgres + auth + storage when I want a backend without being a backend engineer for the weekend.
- GORM — what togglez uses on the Go side. Ships with Postgres, SQLite, and MySQL drivers.
- Legend State — local-first sync engine. Stash Note uses it on top of Supabase so edits land instantly and reconcile in the background.
Auth
- Keycloak — when I need self-hosted, multi-tenant, and a UI someone else maintains.
- Apple + Google sign-in — every mobile app gets these and nothing else if I can help it.
State and forms
- Zustand — small global state. No reducers, no providers.
- TanStack Form — typed, headless, plays nicely with Zod.
- Zod — schemas for forms and API boundaries.
AI
- Anthropic API — what velk talks to first.
- OpenAI API — second backend in velk for parity testing.
- MCP — both as a velk feature and as the way I extend Claude Code locally.
Deploy and infra
- Vercel — Next.js deploys. Where this site, Northeast Bridal, and most of my web work lives.
- Railway — Postgres + side-services when I want one-click hosting that doesn't make me write a Dockerfile to start.
- EAS Hosting — preview and production hosting for Expo apps and their server routes.
- Cloudflare — DNS + CDN + edge sanity. Most domains point here first.
- Namecheap — registrar of choice for everything that doesn't already live on Cloudflare.
- Docker + Docker Compose — local infra for the parts that aren't a single binary, and the shipping format for anything that needs to land on someone else's machine.
- Togglez — self-hosted wherever it needs to be. That's the entire point of building it.
Hardware
- MacBook Pro — daily driver
- Custom mechanical keyboard — I have sunk too many hours into it
- A second screen — non-negotiable