Skip to content

About

I've written PHP since 1999 and Laravel since the version 4 beta. I've watched several generations of confident best practice turn into legacy code, including some I wrote. It left me less interested in certainty and more interested in the judgment behind a decision.

I've had a strange career. I wrote district operations software at UPS, worked as a corporate PHP developer, built virtual-world projects, ran teams of writers, shipped digital work for national political campaigns, and led engineers in Pune serving Adobe and Livefyre. None of those moves were part of a plan. Each job put me inside a messy operational problem. I had to understand how the people inside it worked, then build something they could use.

At Life Happens, I joined as a Laravel developer and left nearly six years later as CTO. In between, I led engineering and customer success at the same time, ran a technology organization across three continents, and directed a ground-up rewrite of an insurance platform around an event-sourced architecture. The CTO job turned out to be less about architecture diagrams than translation: the same facts had to make sense to a board, a carrier's CIO, a support team, and engineers working many time zones away.

Back to the keyboard

I returned to hands-on engineering because producing code got cheap while evaluating it did not. I do not think that judgment survives years away from the material.

Most of my development work now runs through AI coding agents. I write my own MCP servers and build orchestration and retrieval tools. I also run scheduled agents for research, publishing, monitoring, and personal operations. I use several models because no single vendor stays best at every kind of work for long.

I did not expect the earlier management work to prepare me for this as well as it did. Leading a team I could not interrupt meant writing the whole specification before the day began, defining done in advance, and treating a misunderstanding as my defect. Directing an agent depends on many of the same habits. The analogy stops there, but the discipline carries over.

I write here about what those experiences taught me: about thirty years of software mistakes, a few hard deadlines that could not move, and time in both the editor and the executive room. I am still working out how to use agents without surrendering judgment to them.

This site

The site is made from Markdown files in a git repository and rendered by Laravel. There is no database, CMS, or admin interface.

Because everything is a file, the site can read all of itself. That is where the graph comes from. Mentions of defined topics become links, and every page lists what links back to it. I do not maintain those relationships by hand.

Elsewhere

My current work also lives at ContextStack, where I publish the architecture and research behind bounded software-agent autonomy. At Dark Factory Dev, I track autonomous software development. Agency Intentional is my Laravel engineering practice.

Posts are available over RSS and JSON Feed. The graph is public as JSON. Everywhere else I turn up is linked at the bottom of every page.