What is error correction? Hamming codes in hardware