Effective C++ : 55 specific ways

Effective C++ : 55 specific ways to improve your programs and designs / Scott Meyers, Addison-Wesley, 2005

Some very useful idioms in C++ are not obvious. For example, making a class non-copyable. Maybe you know of the idiom but don’t know the simplest or cleanest way to apply it. Maybe you have never encountered it. This book discusses some of the most useful ones.

Linux debugging

book coverLinux debugging and performance tuning : tips and techniques / Steve Best, Prentice Hall,  2006

This book is for programmers developing Linux applications, particularly if you have multiple processes or threads.  It has been useful in my current work.  In the open source world there is a profusion of tools available, to the point that it is hard to know which ones to use.  This book reduces your search to the top runners.

Linux device drivers

book coverLinux device drivers / Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, O’Reilly, 2005

If you are doing some kernel programming, this book is one of your most important resources. They joke that this book is easier to read than the code, implying that the book is almost as hard to read as the code. But you will want to read the code, because the rules for driver design change often. The authors are in the kernel inner circle.

Read it online here. Or here.

Professional rootkits

book coverProfessional rootkits / Ric Vieler. Wiley, 2007.

A programmer’s book on writing root kits for Windows. Here are lots of details on how to hack someone’s machine, though minimal discussion of virtualization. Written by an ‘Ethical Hacker’, this book will be useful to security pro’s who need to harden systems, or reverse engineer malware. Unfortunately, it might be quite useful to blackhats.