Writing & talks
What I've learned
Posts and talks from across my career.
6 articles · 7 talks
2026
A lightning talk on what I've built since agents made building cheap: small tools for my own problems, Cloudamp, and a few projects that aren't software at all.
Use Git worktrees as a few persistent roles rather than one directory per branch, and stop paying the setup tax on every checkout.
2024
Serve a Rails app over SSL locally with your own certificate authority, and no external tools.
Why hand-editing a large OpenAPI spec doesn't hold up, a look at code-first and spec-first tools in Ruby, and a tour of TypeSpec as a saner way to write the spec.
2021
Wrap external services behind Nest.js dependency injection so the rest of the app never knows about them, and swap in fakes for end-to-end tests.
Make sure an Express app has its database and cache connections ready before it starts taking requests.
2020
The three flavors of git rebase I use every day: catching up with a branch, cleaning up history, and moving work onto a new base.
2017
Keep Git hooks in the repository so everyone on the team runs the same pre-commit checks, set up two ways.
2009
An introduction to test-driven development: why to test first, the red-green-refactor cycle, and the pitfalls that make tests hard to trust.
- Effective Testing for Rails ProjectsTalk
Turning a user story into an automated browser test, from manual checks to Selenium to Cucumber scenarios anyone on the team can read.
2007
Test-driven development with Test::Unit, building a small Google results parser one failing test at a time.
FlexMock and Mocha compared over five rounds of mocking HTTP calls. It ends in a tie: both are good, so pick the syntax you like.