Writing
Notes & essays
- Who Pays for the Pressure
Bad API design is rarely bad taste. It is pressure correctly identified and incorrectly located — real forces from inside the implementation escaping into the contract, where every caller pays for them forever. Read through Google Cloud IoT Core, Datadog monitors, and the designs that got the same problems right.
- The Lookup That Saves the Handshake
RFC 9146 adds a connection identifier to DTLS 1.2, usually summarised as NAT rebinding support. That summary hides the design: what the CID really does is move where the protocol anchors its state, from an address it never chose to an identifier it owns. Nine bytes, and a case study in deep modules and interface ownership.
- Risk, Complexity, and Pressure
Architecture Must Follow Pressure sits between George Fairbanks's risk-driven architecture and John Ousterhout's philosophy of software design.
- Two Kilobytes and No Operating System
Part one of a series writing Rust on an Arduino Uno R3. Before any code: what the machine actually is, why compiling for it needs two separate toolchains, and which of its failure modes the type system can catch — because on a chip with no MMU and no guard page, every safety property is either in the types or in your head.
- Architecture Must Follow Pressure
Not fashion, not diagrams, not whatever book the team read last quarter. Architecture should emerge as a response to real constraints — and the sharpest of those constraints is failure. A failure-mode-driven view of software design.