blog
The essential design concepts I use when developing an evolvable, distributed system.
Read MoreContinuous Delivery with ATDD and Feature Flags
January 26, 2024
How can we continuously integrate small changes while practicing acceptance test-driven development?
Read MoreTDD and Testing Behavior
January 24, 2024
The importance of testing behavior when using test-driven development
Read MoreOrchestrate or Choreograph?
January 16, 2021
When is it appropriate to use centralized orchestration versus event-driven choreography?
Read MoreDomain vs Application Logic
December 6, 2020
When defining a business problem and planning its solution, keep the two conversations separate...
Read MoreCommands and Queries with a Message Broker
November 15, 2020
Modern message brokers provide many important benefits to a distributed system...
Read MoreClean Architecture and SOLID Cheat Sheets
November 1, 2020
Printable cheat sheets to help remember some of Uncle Bob's valuable contributions to the industry
Read MoreWhy Terraform?
December 25, 2019
Next.js with TypeScript, Material UI, and Jest
August 22, 2019
Setting Up Cypress for Svelte's Sapper
June 21, 2019
System Design Principles
March 31, 2019
After years of consulting, I find myself continually coming back to three basic principles of system design...
Read MoreGo Middleware - Part 5
March 17, 2019
Go Middleware - Part 4
February 24, 2019
Go Middleware - Part 3
February 15, 2019
Go Middleware - Part 2
February 9, 2019
Go Middleware - Part 1
February 6, 2019
Cloud Services and Architectural Complexity
January 26, 2019
How do we manage the architectural complexity that inevitably arises from using cloud services?
Read MoreThis Old Blog
January 20, 2019
Drupal 6 Theme Info Error
September 14, 2011
Google Bookmarks Bookmarklet
September 24, 2010