Do you like coffee? This episode is all about coffee. Or, rather, it's all about making coffee.

This episode introduces our series on the SOLID principles of component design. In this episode Uncle Bob will tell you just what components are, and how they came to be. We'll learn how loaders evolved into linkers that evolved into linking loaders. We'll learn how object files evolved from absolute, to relocatable, to linkable, to dynamically-linked components.

Then we'll do a deep investigation of the Coffee Maker case study. We'll learn the requirements and the API. We'll see how not to design it, and then we'll see a good SOLID component-ized design. We'll see how boundaries are created and crossed with the Dependency Inversion Principle. We'll see how high level modules are identified with the Single Responsibility Principle. And we'll watch yo-yos go up and down as we traverse up and down the layers of abstraction. By the time we're done, we'll have laid the foundation for the next episodes on the principles of component design.

So, grab a nice, hot, steaming cup of really strong coffee, sit back, relax, and enjoy the buzz, because we're about to spend the next hour brewing component principles.