Computers are great fun, but they can also be very frustrating.

Imagine if every time the power supply fluctuated your computer crashed, or if every time someone bumped your CD player it returned to track one, and who would watch satellite TV if cosmic dust continually distorted the transmission? Thanks to the mathematician Richard Hamming, these problems rarely occur.

After working with Von Neumann at Los Alamos, Richard began work at Bell Laboratories where he was testing the power of a state of the art relay computer.

The programs he wrote consisted of instructions encoded as strings of 0's or 1's (for example 001100...10). If Hamming wanted to enter a 1 he punched a hole in a tape and no hole represented a 0. The tape was 2 cm wide and each line of the tape contained at most six holes. The process of entering complicated programs was very tedious and it was easy to make a mistake. If the computer detected an error, the job was halted and the computer moved to the next program. At the weekend this meant that the job could not be rerun until Monday.

Hamming was only allowed to run his programs on the weekend and is quoted as saying:

``Two weekends in a row I came in and found that all my stuff had been dumped and nothing was done. I was really ... annoyed because I wanted those answers .... And so I said, `Damn it, if the machine can detect an error, why can't it locate the position of the error and correct it?''

So Hamming set out to design procedures to correct errors in transmission. (Details of Hamming's codes are given in the next article.)

Hamming Codes also contain many interesting designs, some of which were found by Ken Gray; a recent University of Queensland Ph.D. graduate. Who knows, maybe some of these designs will lead to better codes and CD and satellite technology in the future.