Richard Hamming developed Hamming codes in the late 1940s to enable error correction in computing. Hamming codes are perfect 1-error correcting codes that use parity checks to detect and correct single bit errors in binary data. The codes work by encoding k message bits into an n-bit codeword with additional parity check bits such that the minimum distance between any two codewords is 3, allowing correction of single bit errors. Hamming codes see widespread use and can be generalized to non-binary alphabets. Extended Hamming codes provide both single-error correction and double-error detection.