These are a collection of conference talks I’ve either given or have considered. Contact me if you’re interested in any of them.
Coping With Legacy Code
Sooner or later we all have to deal with legacy code. We’re thrust into a world from the ancient past, apparently before design patterns existed, where the code speaks a foreign language and our modern tools no longer exist.
How do you maintain, let alone improve, software in this dangerous world? Or worse, where do you begin when the right answer is to start porting the monolith?
Join us to discuss strategies and techniques for coping with legacy code. We’ll also discuss lessons learned while successfully porting overgrown legacy software with a small team. Some specific topics include:
- Porting a system, piece by piece
- Creating a sane development environment
- Getting a handle on change and source control
- Formalizing release and deployment processes
- Monitoring and containing what hasn’t yet been fixed
Disposable Databases for Development
For those of us who don’t test our code in production, conjuring up good data for development and debugging can be a major challenge. After all, problems wouldn’t make it to production if we were already testing against the right data.
Shared databases hold back development in non-obvious ways. We’ll explore the kind of workflows that truly disposable databases can enable. We’ll also cover some prerequisites you’ll need in order to make them work, and the process improvement feedback loop that follows. Notably, the need for complete version control, repeatable database migrations, and better testing capabilities.
Join us to discuss the journey that led to db_subsetter, an open source library built to solve these problems for difficult database schemas. We’ll also discuss some of the powerful capabilities it gives you for debugging production problems, such as scrubbing PII to allow extracted data to be safely copied to developer workstations.
Leveraging Production Data for Development and Quality
db_subsetter allows us to quickly pull a subset of production data, sanitize it, and then put it to work in another environment. It’s built with Ruby on Rails and supports every major RDBMS, but is a standalone tool that can be integrated with your workflow whether you use Ruby or not.
We’ll start with the use case that drove creation of db_subsetter: easily extracting a small subset of production data to seed development. From there, db_subsetter quickly and unexpectedly showed a tremendous amount of utility for other tasks. We’ll explore those and learn how to use it to reproduce production errors, audit sensitive or fragile data, process soft deletes, archive data, and more.
With a little luck, you’ll find new applications of your own to add to the list.
Solving Software Problems With Science
Too much effort in software development and operations is driven by emotion, feelings, and conjecture. All too often, this leads to suboptimal solutions and problems that never quite get solved. Not to mention all the bruised egos and conflict.
Instead, let’s apply the scientific method to technology problems and come up with real solutions. By thinking of our problems as invitations to experiment, we can learn about our systems and apply that to improve them. We gain real data to move forward more effectively. Done well, we can even use what we learn to build a case to management to, finally, address the technical debt that’s killing us.
We’ll explore a variety of tricky scenarios and talk about how to make a measurable hypothesis to help isolate the cause. We’ll also talk about what makes good telemetry data to help us along the way, as well as a lightweight stack to process it.