Debugging reinvented

Debugging reinvented: Asking and answering why and why-not questions about program behavior - Ko and Myers 2008 Today's choice is another great example of the value of constantly challenging the status quo and asking if there might be a better way. In more than half a century of research on debuggers, there have been countless ... Continue Reading

Patience is a virtue

Patience is a virtue: revisiting merge and sort on modern processors - Chandramouli and Goldstein 2014 This is a wonderful story. The seeds of an algorithm laid down over 50 years ago, rediscovered, brought up to date, and found to be highly relevant. Our investigation has resulted in some surprising discoveries about a mostly ignored ... Continue Reading

Software Aging

Software Aging - Parnas 1994 This paper contains one of my all-time favourite passages, and is a timeless discussion on why software ages, and what we can do to slow the aging process. Programs, like people, get old. We can't prevent aging, but we can understand its causes, take steps to limit its effects, temporarily ... Continue Reading

Consistency, Availability, and Convergence

Consistency, Availability, and Convergence - Mahajan, Alvisi, and Dahlin, 2014 We've seen in earlier papers that the classic definition of eventual consistency allows some unhelpful models such as all nodes becoming consistent due to returning a constant value. Mahajan et al. close these loopholes with a definition of convergence that matches our commonsense expectations. Then ... Continue Reading

Certificate Transparency

Certificate Transparency Laurie 2014 This is a paper about DNS, certificates, and how to build trust in Certificate Authorities. But beyond that application, it's also a paper about how to build a publicly verifiable append-only log (without using a blockchain) - and that's an idea that could have lots of potential applications. The core idea ... Continue Reading