This is one of the hardest web dev problems and a great interview question