Bret likes making authoring and maintaining C++ codebases simpler and more intuitive by treating projects more like cattle and less like pets. He is especially interested in the software development lifecycle, development automation, modern build systems, packaging, code transformation, software governance, and code analysis.
Bret is currently an engineer in Bloomberg's developer experience department. He has worked in embedded C++ and safety critical C++ for previous employers.
There is growing excitement around Reflection in C++26 and the promise of language-integrated code generation. While these features will be valuable, it often takes nearly a decade for new C++ standards to see widespread, production-grade adoption. But what can we do now? Many of us need robust solutions between now and 2036. That is why C and C++ projects already rely heavily on code generation today. At Bloomberg, we routinely integrate code generation into C++ systems for use cases such as feature flag APIs, schema-driven transport layers, cross-language interop layers, and embedding data directly into applications. These systems are large, […]
CMake headaches? Modern CMake has been around for about a decade now, but in practice CMake use tends to be uneven and overcomplicated. This causes frustration among maintainers and steep learning curves among developers. It also results in overly complicated C++ projects. Even first-class open-source C++ projects often have CMake snarls and snags. Is there a basic CMake approach that just works? In this talk, hear from a CMake veteran about how to keep it simple with CMake. We’ll cover modern CMake principles to keep in mind while maintaining projects built with CMake. We’ll talk about up-to-date CMake basics you’ll […]
When considering interfaces in the context of C++, software engineers typically think about C++ language constructs: namespaces, base classes, function prototypes, and other entities defined by the C++ standard. However, the challenge for C++ library authors is to provide not just carefully-crafted code, but also well-considered projects that deliver functionality to users. Providing useful and reusable libraries means stepping outside the C++ syntax to consider other kinds of interfaces provided by our C++ projects. This talk goes beyond the C++ syntax to fill in these gaps through an exploration of the other kinds of interfaces and contracts that are implicitly […]
2022 was the year of the C++ successor language! It seems everyone has been talking about what the Next Big Thing is and how to get there. However, while there has been much focus on language design and features, relatively little attention has been paid to how C and C++ codebases worldwide could practically embrace a major change in the ecosystem. This talk will approach the broad problem of how to consider the feasibility and velocity in converting existing C++ projects to the Next Big Thing. The talk will share and discuss some of the pain points and lessons learned […]