Unless you've been locked in a dungeon writing Fortran code for the last several years, you've undoubtedly heard about the Microsoft Component Object Model (COM). COM is arguably the most significant and promising personal computer software development technology to emerge since the release of the Microsoft Windows application programming interface (API). Unfortunately, although COM offers developers many benefits (which we'll review in Chapter 2), it has historically been difficult to master. In fact, some developers have maligned COM as the most difficult and nonintuitive programming model of our era. Although that characterization is certainly not entirely fair, many a developer has spent a late night or two (or two hundred!) pulling out his or her hair trying to understand the nuances of object linking and embedding (OLE), a powerful but wildly complicated set of services built on top of COM.