Exercises, problems, brain-teasers, benchmarks, and other bits to become a better programmer