This document discusses code instrumentation techniques. It begins by introducing the speaker and defining instrumentation as adding extra code to a program or environment for monitoring or changing program behavior. It then covers various uses of instrumentation including debugging, testing, profiling, and security applications like malware analysis. The document categorizes instrumentation approaches as static, load-time, or dynamic depending on when the instrumentation is applied. It provides examples of instrumentation for different programming languages and environments like Java, .NET, and ActionScript.