Describing fault domains.

August 17, 2019. Filed under infrastructure 34architecture 26

Fault domains are one of the most useful concepts I've found in arhcitecting reliable systems, and don't get enough attention. If you want to make your software predictably reliable, including measuring your reliability risk, then it's an extremely useful concept ot spend some time with.

Distributed systems vocabulary.

August 11, 2019. Filed under infrastructure 34architecture 26

One of the challenges of having a discussion about distributed systems is agreeing on vocabulary. I've written up some of the vocabulary I've found most useful for having such discussions.

Reclaim unreasonable software.

July 28, 2019. Filed under architecture 26

Big Ball of Mud was published twenty years ago, and rings just as true today: the most prominent architecture in successful, growth-stage companies is non-architecture. Crisp patterns are slowly overgrown by the chaotic tendrils of quick fixes, and productivity creeps towards zero.

What's the inverse of literate programming.

July 14, 2019. Filed under literal 1rust 1

One of my favorite ideas in programing that hasn't ever quite worked is literate programing. Literate programming explores how the act of writing and reading software might work if we blended code and documentation--the how and the why--much more closely, usually in the same file.

Head in the clouds.

July 7, 2019. Filed under infrastructure 34cloud 3

When I wrote about the public cloud expansion forcing infrastructure engineers to evolve their role, I sort of imagined that the precursor question--should we run our infrastructure on the public cloud?--was already quite settled, but it's a discussion that I find myself having more rather than less frequently each year, so I've taken some time to structure and document my thinking.