Dave Ackley challenges conventional software engineering by advocating for a balance between correctness and efficiency. The episode explores robustness in computing, prioritizing resilient solutions over peak performance. Examples range from RAID to Byzantine fault tolerance, highlighting the importance of handling unpredictable situations in software development.
01:44:07
forum Ask episode
web_stories AI Snips
view_agenda Chapters
auto_awesome Transcript
info_circle Episode notes
insights INSIGHT
Robustness Over CEO
David Ackley argues that modern software optimizes for correctness and efficiency only (CEO) at the expense of robustness.
He proposes prioritizing robustness (resilience to errors) before correctness and efficiency to handle real-world failures.
question_answer ANECDOTE
Sorting Example Shows Robustness Tradeoff
Ackley uses bubble sort versus quick/merge sort to illustrate robustness trade-offs under faulty comparators.
Bubble sort produced far fewer positional errors when comparators failed intermittently, despite being much slower.
insights INSIGHT
Assume Unreliable Primitives
Ackley suggests building systems assuming unreliable primitives rather than patching reliability onto deterministic hardware.
This reframing could enable new scalable architectures of many small cooperating unreliable components.
Get the Snipd Podcast app to discover more snips from this episode
Dave Ackley's paper Beyond Efficiency is three pages long. With just these three pages, he mounts a compelling argument against the conventional way we engineer software. Instead of inflexibly insisting upon correctness, maybe allow a lil slop? Instead of chasing peak performance with cache and clever tricks, maybe measure many times before you cut. So in this episode, we're putting every CEO in the guillotine… (oh, that stands for "correctness and efficiency only", don't put us on a list)… and considering when, where, and how to do the robust thing.
Links
$ patreon.com/futureofcoding — The most recent bonus episode is a discussion with Stefan Lesser about new "laws of physics" we can invent inside the computer.
Don't destroy the earth, then make sure your thing can't be destroyed, then don't destroy your data, and finally, do your damn job, AAAAAAAAAAAAAAAAAAAAAAAAAAA.
Jepsen is a rough, rugged, deeply thoughtful and fantastically cool approach to distributed systems testing, by Kyle Kingsbury. Also, we didn't talk about it, but his reversing / hexing / typing / rewriting / unifying technical interview series is essential reading.
Datamosh is a creative misuse of the lack of robustness that comes from storing diffs instead of full state snapshots. Here's a lovely gallery of examples.
"It is difficult", says Upton Sinclair when asked about Jimmy Miller being Jimmy Miller, and how we all ought to approach our own sense of Jimmy Miller.