Garrett Martin is a programmer in Berkeley, CA.

He works at Column Tax as a software engineer. Before that, he was a staff engineer at Wrapbook, building better payroll software for the entertainment industry. From 2019 to 2021, he was a software engineer at Truss, improving how the government builds software. From 2015 to 2019, he served as the technology lead at Sturdy, a small digital agency. At Sturdy, he built software for businesses across many different industries. During his time there, the team created Dockhound, the best tool for managing dry-storage marinas. Boulevard is where Garrett lives on the internet, and it's named after the street where he grew up.

Writing

Ubik Devlog #4

This devlog covers new features in Ubik: issue labels with filtering capabilities and distributed shortcodes for referencing issues. It explores collision probability for shortcodes using the birthday problem.

Ubik Devlog #3

A deep dive into the technical implementation of Ubik's Checks feature, exploring how the Bubbletea library enables multiple concurrent checks per commit with detailed logging. The post explains background processing through Git archives while keeping the UI responsive.

Ubik Devlog #2

This devlog introduces Ubik's 'Checks' feature for local continuous integration, challenging the conventional wisdom of running tests on remote servers rather than developer machines. The post also reflects on building purposefully for individuals and small teams.

Ubik Devlog #1

Introducing Ubik, a terminal-based issue tracker and code review tool that stores data in Git repositories. This first devlog explores the motivation for creating a tool that provides version control for development communication without relying on third-party services.

What Kinds of Tests Should I Be Writing?

Integration tests provide more value than unit tests for web applications by enabling easier code changes, better onboarding, and empowering junior developers to contribute. Unit tests become valuable when you need precise experimental control over code behavior.

Overusing Service Objects

Service objects are often overused in web applications when simpler resource-based designs would be better. By sticking to RESTful resource-oriented patterns backed by integration tests, teams can build more predictable systems and make faster progress.