Imperfect C++ by Matthew Wilson