Software Design by Introspection

Over the years, a few programming paradigms have been successful enough to enter the casual vocabulary of software engineers: procedural, imperative, object-oriented, functional, generic, declarative. There’s a B-list, too, that includes paradigms such as logic, constraint-oriented, and symbolic. The point is, there aren’t very many of them altogether. Easy to …

Inheriting a Large Code Base

This is a talk about solving the most difficult problem a software engineer ever faces: converting a large inherited codebase with antiquated designs and spotty quality into a state-of-the-art, modern system. This presentation covers clang-based refactoring, mnemonic reasoning methods, safe rewrites, coding standards, and migration paths. If you have ever …