Veteran full-stack developer. Agent architect. Professional nerd.
Twenty-five years writing code that ships, breaks, gets fixed, and ships again. These days I spend most of my time pair-programming with Claude Code agents and running my own LLM stack on hardware I built — because it's fun, because clients pay for it, and because the thing I love most about this work hasn't changed since 2001: solving the puzzle nobody else wants to open.
What stays the same when everything changes.
PHP grew up. .NET went cross-platform. JavaScript ate the world. The stack list never stops rotating — and underneath all of it, the actual job hasn't really changed: find the real problem, build the simple version, ship before it's perfect, watch what breaks, fix that. Repeat for twenty-five years.
What I'm running right now.
Three things drive most of my work this year: agentic CLI tooling, self-hosted LLM infrastructure, and automation that stitches the rest together. Side projects look like client work — same craft, same standards.
Claude Code, all the way down.
Claude Code CLI agents are how I ship now. Custom skills I wrote myself. Slash commands for the things I do every day. Hooks that catch mistakes before they hit main. Subagents running research and review in parallel. The most workflow-changing tool I've adopted since version control.
Local stack. Offline by design.
For privacy-sensitive or air-gapped work, I run open-source LLMs on my own server stack. Custom skill packs. Custom orchestration. No data leaves the box. Same agent ergonomics — on hardware I own and audit.
Automate or perish.
Automation is the through-line of my whole career. Scripting, cron, queues, pipelines, agents wired into workflows. Side projects look exactly like client work. Hobby code, professional code — same craft.
Professional nerd. Twenty-five years deep.
I love this stuff. Building, breaking, fixing, shipping. If you've got a problem that needs figuring out, that's the part I find fun.
I started writing code before the dot-com bust and never stopped. The languages have rotated three times since then; the work hasn't really. The undocumented bug. The legacy codebase nobody wants to open. The agent that "should be simple" but became a tar pit in week three. The puzzle. The chase. The "aha" at 2 a.m. that you can't share with anyone because they wouldn't get it.
Yes, I'm a professional nerd. Veteran full-stack engineer who games on weekends, builds custom Claude Code skills on weeknights, and has strong opinions about which Linux distro is "home." I run my own offline LLM stack because I like the idea of agents that don't phone home. I write production code that runs for a decade. I find this fun.
If you've got something that needs figuring out — a build, a rescue, a gnarly migration, an AI agent that's supposed to be easy — let's talk.
Tell me what you're building.
Contract engagements, agent design, the rescue mission for the codebase nobody wants to open. A brief, an idea on a napkin, or a problem that's been in the backlog for a year — send any of it. I read everything. I reply within a day.