Dealing with hardware interface footguns. I tried to be clever using a non-blocking alternative to one of the calls while forgetting that some initialization steps only take effect if performed after everything the blocking version does takes effect. Getting this wrong does not provide any clue that the hardware will ignore your instructions. It'll just produce garbage data that looks plausible until it blows up when you try to use it for real. Not a hard fix, just hard to remember.
Author of Typica software for coffee roasters.