Bio
Dave is a semi-retired software development consultant (writing code and giving advice about it), with 39 years of professional experience in a wide variety of languages, systems, frameworks, techniques, domains, etc. He is the T. Rex of Codosaurus, LLC (his one-person consulting firm, which explains how he can get such a cool title, at https://www.Codosaur.us/) near Washington, DC, USA. His main focus in software is to spread the gospel of software quality, including defining what that even means, and talking about techniques to achieve it. In his spare time, he makes mead, teaches others how, and speaks at conferences.
My Talks
ACRUMEN: What IS Software Quality Anyway?!
Without a good definition of software quality, you'll have a tough time achieving it! ACRUMEN is my definition, based on six one-word aspects. I’ll explain why we need a definition, what this one...
Bug Magnets: Booby-Traps in your Code
Have you ever inherited code, made a simple change, and had it completely fail to work how you thought it would? It might not be entirely your fault! The previous developer may have laid a trap f...
Drink Like a Chinese Egyptian Eritrian/Ethiopian Filipino Finnish Greek Indian Lithuanian Mayan Nepalese Polish Welsh Xhosa Viking: the History and Making of MEAD!
Mead is enjoying a resurgence, thanks in part to online games. People have heard of it, and want to know more. They would be entertained to know where it came from (not what most think!), some v...
Drink Like a Geeky Viking: the Nitty-Gritty of Brewing MEAD!
This talk is about details that the short version of my main mead talk omits, such as more on equipment (though still homebrew level, not commercial), calculations, how to fix problematic batches, ...
From Audience to Authority: Breaking Into Conference Speaking
Many of the audience would love to come up on stage and give a talk of their own -- but they don't know how to find openings, submit a talk, and give a speech, or they're scared, or they don't know...
From Examples to Exhaustive: Intro to Property-Based Testing
This talk teaches a powerful technique to test exhaustively by simply describing the relation of the output to the input, rather than tediously selecting many inputs and outputs. So, the audience w...
Hire Mutants to Build your Test Suite!
Many of us inherit code with no tests. (Or even write it!) That makes changes difficult. But adding tests is also difficult! This talk explains how to use Mutation Testing to make writing a tes...
Kill All Mutants! (Intro to Mutation Testing)
Is all your code meaningful, or is some redundant or unreachable? Are your tests strict, or do they let code get away with undesired behavior? Mutation Testing helps root out these problems. This t...
Multi-Talking (no, that's not a typo) with Genaver!
Ever want to easily generate new versions of a talk, to fit in a new time length, rephrase things for a different country, and so on? Genaver to the rescue! This talk covers the need, history, wo...
OOP: You Keep Using That Word . . .
Do you know what OOP is? Really? Most devs have it all wrong. Come find out the truth -- and find out about another very useful development approach.
Ruby Gotchas!
One reason we love Ruby is the "Principle of Least Surprise". But there are still many ways Ruby can surprise us. Some are good, some not so much. This talk warns you about Ruby's lurking "gotch...
Tame Two Tedious Tasks Together, with Doctests
Do the examples in your documentation get out of date? Are the examples in your tests hard to understand? Do you wish you could combine them? In some languages, you can! This talk is about doct...
TDD like a Viking: Brewing Mead with JavaScript!
You’ve probably heard of TDD (Test Driven Development), but do you do it? Do you know how? This talk will explain TDD and show you how to do it in JavaScript, as I make some mead-brewing calculator...
Tight Genes: Intro to Genetic Algorithms
Genetic algorithms are a way to "evolve" solutions to a problem, similar to biological evolution. This often reveals solutions that humans would never have thought of, like NASA's ST5 spacecraft a...
TWO Weird Tricks: Mutation Testing and Property-Based Testing
This talk introduces two powerful testing techniques: property-based testing, to easily generate a thorough test, and mutation testing, to check whether a test suite is strict (and also check for d...
Whose Line of Code Is It Anyway?
This talk is a hands-on demo of Ping-Pong Pair Programming, a technique that combines TDD and pairing, in a fun way. The audience has some opportunities to participate, but the shy ones don't need...
Why We Prepend
Did you switch from an object-oriented or imperative language, to a functional one, and find it hard to adjust to prepending to lists instead of appending? And wonder why? It all makes sense when...