1. On Writing Late

    An argument for letting opinions finish forming before publishing them, and a partial explanation for a ten-year gap.

  2. DRY (Don't Repeat Yourself) is a Fallacy

    DRY is about knowledge, not code. Duplication that represents different concepts is fine.

  3. Makefile Variables

    The full mess of Make variable flavours, and which ones you actually want.

  4. What Makes a Password Strong - Calculating Password Entropy

    Why password entropy matters more than which characters you're allowed to use.

  5. Introduction to Make

    A practical introduction to writing useful Makefiles for modern projects.

  6. Spies, Integrations, and Contracts

    When a spy is actually the right call, and when you reach for a contract test instead.

  7. Test Smells: Counting on Spies

    Over-specified tests and the tell-tale smell of spies in places stubs would do.

  8. Understanding Test Doubles (Mock vs Stub)

    Dummy, stub, fake, mock, spy - the different kinds of test doubles and when to use each.

  9. Service Locator vs Dependency Injection Container (or Tell, Don't Ask Part 2)

    Service locators look like dependency injection. They aren't.

  10. Tell, Don't Ask

    One of the most common legacy-code mistakes, and how to avoid it.

  11. Function vs Method vs Procedure

    The difference between functions, methods, and procedures - and why the distinction matters for clean code.

  12. Interface-Segregation Principle in the Context of Mappers and Gateways

    Applying the Interface Segregation Principle to Mappers and Gateways so your persistence layer stays honest.

  13. The lorem ipsum

    My original first blog post, preserved for the archive.