// uses · the stack

Uses — My Stack & Setup

The /uses tradition: what I actually reach for, honestly. Not the aspirational stack — the one that ships. Every pick comes with one line of opinion, because a tool you can't have a take on is a tool you haven't used.

I build agents and AI systems on a foundation of classic data science and first-principles ML. This is the toolbox, roughly in the order I reach for it.

// a living document — updated as the stack drifts

01

AI & Agents

LangGraph agent orchestration

Explicit graphs beat implicit chains — when the flow is a graph, you can see it, test it, and fix it, instead of trusting a loop you can't inspect.

Function-calling + structured outputs tool interface

The model should return a schema I can validate, not prose I have to parse — I trust a typed contract over a natural-language promise every time.

MCP tool integration

A single protocol beats a pile of bespoke adapters — the whole point is that tools plug in without my agent knowing their internals.

Evaluation harnesses verification

Environment-grounded verifiers over LLM-judge theater — check the side effect actually happened, because a model will narrate work it never did.

02

Languages

Python primary

Primary, unapologetically — the ecosystem and the ecosystem's momentum are worth more than any language's elegance, and I'm fluent enough to see inside the math.

TypeScript occasional

Occasional, and only where the front-end forces my hand — the types are welcome, the ecosystem sprawl is not.

03

Data Science

Jupyter exploration

The best thinking environment ever built for interrogating data — a notebook is a conversation, and conversations are where insight lives.

scikit-learn modeling

Boring in the best way — reliable, documented, and it refuses to hide the model's assumptions behind a shiny API.

PyTorch deep learning

Tensors you can grab and inspect beat a black box — I can see every gradient, and seeing is how I trust a model at all.

pandas data wrangling

Nobody loves it, everybody needs it — and the moment you fight it instead of using it, your data is wrong anyway.

04

Infrastructure

Docker packaging

It works on my machine is an excuse, and containers are the polite way to retire that excuse forever.

Kubernetes orchestration

Overkill until the day it isn't — I reach for it when the system gets big enough that manual babysitting costs more than the learning curve.

Ray distributed compute

Parallelism without the ceremony — it turns a single-machine prototype into a distributed job without rewriting the logic I already trust.

05

Hardware & Workspace

M-series Mac silicon

Fast, quiet, and it sips power while a GPU box screams — for everything short of heavy training, it's simply enough.

Mechanical keyboard input

A genuinely shallow vanity pick — I keep one because the tactile feedback makes long writing sessions feel physical instead of abstract.

Dark IDE theme environment

Less glare, more focus — and honestly, it's the closest thing to a uniform that software work has.

Yours is probably different. Good.

The stack is a means to an end, not a personality. This list changes as I learn — it's a living document by design. If something here looks wrong to you, it probably is, and I'd like to hear why.