Articles

From .proto to a typed TypeScript client: generating our whole stack from one contract

A step by step walkthrough of how one set of .proto files generates our C# services, REST API, OpenAPI document, TypeScript SDK and Node gRPC clients.

October 17, 2026

One AGENTS.md for Claude Code, Codex and Copilot: keeping AI instructions in one place

Why I build with two AI models, and how one AGENTS.md keeps Claude Code, Codex and Copilot working from the same rules, plus how we audit it.

October 13, 2026

Antigua, Lake Atitlán and El Paredon: our Guatemala itinerary

Our Guatemala route from Antigua to Lake Atitlán to El Paredon, how we got between stops, and what I'd change, including whether the beach is worth it.

October 8, 2026

San Pedro, San Juan, or San Marcos: which Lake Atitlán town?

We slept in San Pedro, shopped in San Juan and ate our way through San Marcos. Here's which Lake Atitlán town I'd pick as a couple next time.

October 8, 2026

Mount Washington vs Mount Ellinor: which Olympic peak near Hoodsport?

Mount Washington and Mount Ellinor share a road above Hoodsport and almost nothing else. Distance, gain, scrambling, passes and goats, compared.

October 8, 2026

Why I avoid third-party packages, and how AI helps

Why I write or vendor small pieces of code instead of adding third-party packages, how AI makes that practical, and when a package is worth it.

October 7, 2026

Contract-driven development: How we keep Taproot’s frontend and backend in sync

How Taproot uses protobuf contracts, generated clients, and drift checks to keep its frontend and backend in sync while building with AI.

October 6, 2026

Why documentation-first development helped us build with AI

How documentation-first development helped us build Taproot with AI, using working examples, shared language, and checks that keep docs connected to code.

September 29, 2026

How we enforce coding standards

How lint rules, architecture tests, and contract checks keep AI-written code consistent with our standards, and which decisions still need a person.

September 22, 2026

Why moving to a monorepo made AI-assisted development easier

How a monorepo made AI-assisted development easier on Taproot: fewer package releases, coordinated changes, migration costs, and the boundaries we kept.

September 15, 2026

From Y2K to AI: 26 years of figuring things out

From Y2K fixes and Visual Studio to mapping systems and Taproot: how 26 years of full-stack engineering shapes my approach to building software with AI.

September 11, 2026

We put our backlog in Git. Was that a good idea?

Why I keep Taproot’s backlog in Git, how it compares with GitHub Issues for AI-assisted development, and what we’re learning as we build Trellis.

September 11, 2026

Building Taproot I/O

I started building Taproot I/O because I wanted the coolest web platform on the planet, and WordPress's bloated ecosystem wasn't it.

September 1, 2026

A stop in Walla Walla: wine tasting and downtown wandering

Euri and I detoured through Walla Walla on the way to Spokane to wander downtown, taste wine at Saviah Cellars, and have dinner with friends.

July 3, 2026

El Paredon

Our hot, humid stop in El Paredon on Guatemala's Pacific coast: a van with a roped-on muffler, lots of pool time, black sand, and a great sunset.

April 28, 2026

San Marcos la Laguna

A boat ride from San Pedro to San Marcos la Laguna on Lake Atitlán: hippie footpaths, high prices, lunch at Lush, and a steep climb to Eagle's Nest.

April 26, 2026

San Juan la Laguna: color and craft

Our walk through San Juan la Laguna on Lake Atitlán: umbrella-covered streets, murals down the alleys, handmade textiles, and two shirts I brought home.

April 24, 2026

5 Days in Antigua, Guatemala: Volcanoes, Chocolate, and a Surprisingly Good Hobbit Village

A 5-day Antigua, Guatemala itinerary: colonial ruins, a Pacaya Volcano sunset hike with lava-roasted marshmallows, Hobbitenango, and chocolate tastings.

April 18, 2026

Jacob and Emma's wedding at the Wedding Bowl in La Jolla

My cousin Jacob married Emma at the Wedding Bowl in La Jolla. Aunt June took over the dance floor, the seals were out, and the houses cost a fortune.

December 12, 2025

A gray, drizzly day in Astoria, Oregon: sea lions, the Megler Bridge and The Goonies

A day in Astoria, Oregon, on the drive between Tacoma and the coast: a pile of sea lions, the Astoria-Megler Bridge, and lots of drizzle. Very Astoria.

November 10, 2025

Palm Springs for Euri's birthday: the tramway, Forever Marilyn and a lot of pool time

Euri's birthday trip to Palm Springs: the Aerial Tramway to the top of the mountain, Forever Marilyn, angel wings downtown, brunch and a lot of pool time.

October 20, 2025

A day on San Juan Island: the ferry, Friday Harbor, wine and Roche Harbor

Our day on San Juan Island: the ferry from Anacortes, lunch at San Juan Island Brewing, a tasting at San Juan Vineyard, and the old lime kilns at Roche Harbor.

August 30, 2025

Grand Park via Lake Eleanor: a big meadow with Mount Rainier at the end

Hiking to Grand Park via Lake Eleanor in Mount Rainier National Park: a quiet lake, a miles-long meadow, and Rainier filling the sky at the far end.

August 23, 2025