Notes on A Philosophy of Software Design.