Error correcting codes are essential to computing and communications. At first they seem a bit like magic - how can you possibly not only detect an error but correct ...