A personal programming challenge.