Understanding Software, 29 March 2024 A slightly sanitized version of a company presentation I made today.
Accepting Work, 19 December 2023 In which I drop some anvils from the sky about agile methodologies, when you should accept work on your task list, and when you shouldn’t.
A systems analysis rubric, 10 December 2023 A very fancy name for “how to write a useful design document”.
Multi-factor panacea, 10 October 2022 Multi-factor auth does not save you from having to vet your dependencies.
Goodbye Cloudflare; hello Fastly!, 27 August 2022 How I moved my blog from Cloudflare to Fastly, and why.
Reduce Friction, 23 July 2022 Why a relentless focus on reducing developer friction pays off in team productivity, and some ways to do this.
One year for a one-line fix, 24 May 2022 Why it took me a year to arrive at a one-line fix for a massive performance problem, and how I hope to shorten that time should I encounter a similar situation again.
Legacy you hate, 24 May 2022 What to do with a legacy monolith implemented with a language and framework you don’t know and/or dislike.
Why Rust’s postfix await syntax is good, 13 May 2022 This is a blog post for non-Rustaceans about why Rust’s await syntax is good.
Programming as Theory-Building, 12 May 2022 How reading “Programming as Theory-Building” changed my priorities as a technical leader and a programmer.
Dysfunction junction, 10 May 2022 The connection between technical dysfunction and organizational dysfunction, and why you have to deal with the organization first.
Problem statement, 8 May 2022 It’s good to start with a clear statement of the problem you’re trying to solve. Here’s the problem statement for this blog.