Back to profile

    Tools & workflow

    What I reach for to build, ship, and maintain software.

    Development

    Codex

    My first choice since June 2026 for day-to-day development, from exploring a codebase to implementing features and reviewing changes.

    Claude Code

    A very close second, used in parallel with Codex. Still a regular part of my workflow for features and debugging. I also led its rollout across 200 engineers at LegalZoom.

    Parallel worktrees

    A first-class part of every project. Isolated Git worktrees let AI agents tackle separate tasks at the same time, each with its own branch and development environment.

    Cloud maintenance agents

    Cloud-based AI agents investigate issues and handle routine software maintenance, triggered by Logfire alerts or scheduled runs.

    AI & agents

    OpenRouter

    My API inference layer for frontier and open-source models. It makes it easy to choose the right model for each job and balance quality with cost, with governance and guardrails for agent spending, model access, and data privacy.

    PydanticAI

    My usual starting point for Python agents: structured outputs, dependency injection, tool calling, and graphs for workflows that need multiple agents.

    FastMCP

    For exposing tools, resources, and prompts through the Model Context Protocol. I use it for MCP servers at LegalZoom and in my own projects.

    Frameworks

    FastAPI

    Python APIs with async support, Pydantic validation, and generated documentation. A straightforward fit for the backends I build.

    React Router v8

    Loaders, actions, and nested routes keep data fetching close to the UI. Vite keeps the local development loop fast.

    Infrastructure

    Railway

    Hosting for my apps and services, with monorepo support and PR preview environments. The CLI and MCP tools fit into my development workflow.

    Logfire

    Traces and logs for Python and AI workloads, including PydanticAI. I use its MCP server to investigate production issues and its alerts to trigger maintenance agents.

    Neon Postgres

    Postgres with database branching. Each PR preview gets an isolated database, with setup and cleanup automated.