Writing

Articles

Things I've built, problems I've worked through, and a few opinions about software. Writing them down helps me figure out whether I actually understand them.

10

Articles

2

Topics

2026

Last published or updated

Close-up of a glass revolving door showing its central spindle, angled panels, and circular floor track

Optimize for Reversibility

We don't always know the right decision when we make it. Good engineering leaves room to learn, change direction, and recover without rebuilding everything around us.

Process - Oct 2026

  • software
  • development
  • design
  • architecture
A winding mountain road bordered by a metal guardrail and speed limit sign

Make the Wrong Thing Hard to Do

Tribal knowledge asks engineers to remember the rules. Good system design can make many of those rules difficult to break in the first place.

Process - Sep 2026

  • software
  • development
  • design
  • architecture
Tattooed hands pruning a bonsai tree with small scissors

The Best Code Is Sometimes the Code You Don't Write

Code has a cost long after it's written. Good engineering includes knowing how to build a solution and when not to build one.

Process - Sep 2026

  • software
  • development
  • design
  • simplicity
Colorful source code shown in a shallow-focus close-up

Did You Fix the Bug or Just Move It?

A passing test proves the symptom is gone, not that the work is done. Isolate the change that mattered before adding it to the system.

Process - Aug 2026

  • software
  • development
  • debugging
Railway tracks converging and separating across a rural junction

Duplication Is Cheaper Than the Wrong Abstraction

DRY reduces repetition, but the wrong abstraction couples concepts that should be free to change independently.

Process - Aug 2026

  • software
  • development
  • design
  • refactoring
Close-up of syntax-highlighted Python code on a dark screen

How to use Git effectively

A 2019 overview of how GitFlow uses master, develop, feature, and release branches to move changes toward production.

Process - May 2019

  • software
  • development
  • git
Two people reviewing a laptop screen, with one pointing at the display

Code Reviews

Practical guidance for preparing changes, reviewing correctness and risk, and giving constructive code-review feedback.

Process - Oct 2018

  • software
  • development
  • code
  • review
Laptop displaying source code on a white desk beside a monitor

Algorithm Detection in Assembly

Using IDA Pro plugins, instruction signatures, and small-prime products to recognize known algorithms in binaries.

Projects - May 2013

  • assembly
  • algorithm
  • nsa
Close-up of a circuit board and its electronic components

Learning Racetrack

Rebuilding a classroom racetrack with Raspberry Pi and Android devices so students advance cars by answering questions.

Projects - Apr 2013

  • community service
  • raspberry pi
Server racks with bundled yellow network cables and illuminated status lights

TCP Keep-Alive

Testing how TCP keep-alive handles disconnected cables and silent failures across operating systems.

Projects - Nov 2012

  • networking
  • tcp
  • research