Tools & stack
What I Use
Tools, stack, and workflows behind what I build. Updated as things change.
Development
- Claude Code + Claude: My primary development environment. I run agentic workflows where Claude handles implementation from specs while I focus on architecture and review. Most of this site was built this way.
- Codex (OpenAI): Another agentic coding tool in the rotation. I run it alongside Claude Code for parallel workstreams and to compare approaches across models.
- Cursor: My code editor. Great for quick edits, visual diffing, and the inline AI features complement the agentic workflows nicely.
- Astro: What this site runs on. Static output, zero runtime JS by default, and the content collections API is excellent for blog and project pages.
- Python: All ML/AI work. PyTorch for the RL trading research, plus backend scripting and data processing.
- JavaScript / TypeScript: Full-stack production work at NCI and personal projects. TypeScript everywhere I can.
- Flutter / Dart: How I built Racquet Rivalry. Cross-platform mobile development from a single codebase, shipped to both iOS and Android.
- Git + GitHub: Version control and CI. All personal projects are here.
AI & ML
- Claude MAX (Anthropic): Powers the agentic development system and most of my AI-augmented workflows. MAX gives me the throughput I need for running multiple agents across codebases throughout the day.
- Codex (OpenAI): Running alongside Claude for multi-model agentic workflows. Useful for getting a different perspective on the same problem and actor/critic interactions.
- Stable Baselines 3 + PyTorch: The RL stack for the trading environment research. SB3 for standard algorithms, PyTorch for the custom cross-attention model.
- TensorFlow: Used for earlier ML work including a chatbot and financial ML models during the Master's program. Still in the toolbox for specific use cases.
Infrastructure
- Firebase / GCP + BigQuery: Backend for Racquet Rivalry and several NCI systems. Firestore, Cloud Functions, Authentication. BigQuery for large-scale data analysis.
- Cloudflare Pages: Hosting for this site. Push to GitHub, it deploys. Global CDN included. Hard to beat for static sites.
- Buttondown: Newsletter platform. Minimal, respects subscribers, no tracking bloat. Exactly what I wanted.
Workflow
- Agentic development system: A spec-driven, test-first workflow I built for shipping features with AI agents. The agent gets a spec and writes tests before touching implementation. Still refining it.
- Multi-agent coding: Running multiple Claude Code and Codex sessions on different parts of a codebase simultaneously. Works well for independent modules, less well for tightly coupled code.
- Voice and content system: I built a reusable skill that enforces my writing voice across all content. Blog posts, project descriptions, and this site's copy all run through it for consistency.
- Build-in-public: I write about what I'm building as I build it, including the parts that break. The blog and newsletter are the output.