This document contains a presentation on writing flexible and scalable Puppet modules. The presentation discusses common issues that arise when modules are not designed to be flexible, such as unexpected changes in operating systems or use cases. It provides guidance on how to design modules to be more modular, parameterized, and able to handle unexpected changes over time through techniques like using Hiera for configuration, separating logic into submodules, and favoring composition over inheritance. The goal is to create modules that can be easily adapted and improved by both their original authors and other users.