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 been tasked with making a […]

How to Perform a Rapid Assessment of Any Software Architecture

As a software architect for your organization, you may be required to efficiently and effectively evaluate the validity, quality, health, or maturity of a proposed, new, or legacy software architecture. This presentation describes a simple process you can follow to perform a rapid assessment of any software architecture effort, regardless of its size, complexity, or […]

Programming Across Paradigms

What’s in a programming paradigm? How did the major paradigms come to be, and why? Once we’ve sworn our love to one paradigm, does a program written under any other still smell as sweet? Can functional programmers learn anything from the object-oriented paradigm, or vice versa?

Finally Crossing the IoT Chasm?

I gave my first Internet of things (IoT) presentation over a decade ago. The response was overwhelming, and I have been waiting for the IoT tidal wave to land ever since. Strangely, it has not. Why not? Fast-forward through those ten years, and I have learned countless lessons. This presentation reviews the strengths and weakness […]

Toward Evolutionary Software Design and Architecture

Projects that don’t change are the ones that get canceled. Any relevant and useful software has to continuously evolve. Agile development greatly emphasizes an evolutionary approach to software design and software architecture. That’s because big up-front design and architecture are risky. But the evolutionary approach also has risks. This session starts with a quick discussion […]