This article describes in detail an implementation of John von Neumann's self-reproducing machine. Self-reproduction is achieved as a special case of construction by a universal constructor. The theoretical proof of the existence of such machines was given by John von Neumann in the early 1950s , but was first implemented in 1994, by the author in collaboration with R. Nobili. Our implementation relies on an extension of the state-transition rule of von Neumann's original cellular automaton. This extension was introduced to simplify the design of the constructor. The main operations in our constructor can be mapped into operations of von Neumann's machine.