This document discusses secure programming patterns to harden code against side channel attacks. It describes several patterns such as using random offsets when accessing arrays instead of sequential access, verifying full data before authentication instead of early failure, using non-trivial constants, verifying loop and data integrity with checksums, and choosing constants with maximum hamming distance for fault resistance. Implementing these patterns makes reverse engineering and attacks like fault injection more difficult.