July/August 2020 issue of acmqueue The July/August 2020 issue of acmqueue is out now

Subscribers and ACM Professional members login here

ACM Case Studies

Lessons learned from the solutions to interesting problems

Unlike most of the content served up by ACM Queue, case studies look retrospectively at challenges and problems already addressed, while attempting to draw out some of the lessons learned in the course of those endeavors (so readers needn't learn those lessons for themselves the hard way).

Which is to say we look not only to expose what was done, but also how it was done and what was discovered along the way.

And we work to achieve this by staging conversations between engineers — led by recognized domain experts who focus on drilling down into what it was that made the challenges at the heart of the effort worth undertaking in the first place, the aspects of those challenges that proved to be especially daunting, the tradeoffs that were hard to make, and the reasoning that led people to choose one path over the alternatives.

Wherever possible, the implications of those decisions are also considered, both with respect to the outcomes that were actually achieved and the opportunities that were potentially lost.

(Check out the most downloaded case studies)


To Catch a Failure: The Record-and-Replay Approach to Debugging

A discussion with Robert O'Callahan, Kyle Huey, Devon O'Dell, and Terry Coatta

Mar 28, 2020



DAML: The Contract Language of Distributed Ledgers

A discussion between Shaul Kfir and Camille Fournier

Aug 19, 2019


Health Care Records

Access Controls and Health Care Records: Who Owns the Data?

A discussion with David Evans, Richard McDonald, and Terry Coatta

Code Review

CodeFlow: Improving the Code Review Process at Microsoft

A discussion with Jacek Czerwonka, Michaela Greiler, Christian Bird, Lucas Panjer, and Terry Coatta

Nov 13, 2018

Quality Assurance


Hootsuite: In Pursuit of Reactive Systems

A discussion with Edward Steel, Yanik Berube, Jonas Bonér, Ken Britton, and Terry Coatta

JavaScript Frameworks

React: Facebook's Functional Turn on Writing JavaScript

A discussion with Pete Hunt, Paul O'Shannessy, Dave Smith and Terry Coatta

Software-defined Networks

A Purpose-built Global Network:
Google's Move to SDN

A discussion with Amin Vahdat, David Clark, and Jennifer Rexford

Dec 11, 2015


The Road to SDN

An intellectual history of programmable networks

Nick Feamster, Jennifer Rexford, and Ellen Zegura | Dec 30, 2013


OpenFlow: A Radical New Idea in Networking

An open standard that enables software-defined networking

Tom Limoncelli | June 20, 2012


Quality Assurance Testing

Automated QA Testing at EA:
Driven by Events

A discussion with Michael Donat, Jafar Husain, and Terry Coatta

May 19, 2014

Quality Assurance

Testing a Distributed System

Testing a distributed system can be trying even under the best of circumstances.

Adopting DevOps Practices in Quality Assurance

Merging the art and science of software development

James Roche | October 30, 2013

Quality Assurance

JavaScript on the Server

Node at LinkedIn:
The Pursuit of Thinner, Lighter, Faster

A discussion with with Kiran Prasad, Kelly Norton, and Terry Coatta

January 15, 2014

Web Services

JavaScript and the Netflix User Interface

Conditional dependency resolution

Alex Liu | October 14, 2014

Web Services

Browser Security

Browser Security Case Study:
Appearances Can Be Deceiving

A discussion with Jeremiah Grossman, Ben Livshits, Rebecca Bace,
and George Neville-Neil

November 20, 2012

Web Security

The Web Won't Be Safe or Secure until We Break It

Unless you've taken very particular precautions, assume every Web site you visit knows exactly who you are.

Jeremiah Grossman | November 6, 2012

Web Security

Resolved: the Internet Is No Place for Critical Infrastructure

Risk is a necessary consequence of dependence.

April 2, 2013


Resilience Testing

Resilience Engineering: Learning to Embrace Failure

A discussion with Jesse Robbins, Kripa Krishnan, John Allspaw, and Tom Limoncelli

September 12, 2012

Quality Assurance

Fault Injection in Production

Making the case for resilience testing

John Allspaw | August 24, 2012

Quality Assurance

Weathering the Unexpected

Failures happen, and resilience drills help organizations prepare for them.

Kripa Krishnan | September 16, 2012

Quality Assurance

The Antifragile Organization

Embracing Failure to Improve Resilience and Maximize Availability

Ariel Tseitlin, June 8, 2013

Quality Assurance

Network Congestion Management

BufferBloat: What's Wrong with the Internet?

A discussion with Vint Cerf, Van Jacobson, Nick Weaver, and Jim Gettys

December 7, 2011


BBR: Congestion-Based Congestion Control

Measuring bottleneck bandwidth and round-trip propagation time

Neal Cardwell, Yuchung Cheng, C. Stephen Gunn, Soheil Hassas Yeganeh, and Van Jacobson | December 1, 2016


Controlling Queue Delay

A modern AQM is just one piece of the solution to bufferbloat.

Kathleen Nichols, Van Jacobson | December 7, 2011


Bufferbloat: Dark Buffers in the Internet

Networks without effective AQM may again be vulnerable to congestion collapse.

Jim Gettys, Kathleen Nichols | November 29, 2011


Supplementary Materials: Bufferbloat Videos

Under common loads, your real Internet "speed" can easily drop by a factor of ten due to bufferbloat.

Jim Gettys | February 5, 2012

File Systems and Storage

GFS: Evolution on Fast-forward

A discussion between Kirk McKusick and Sean Quinlan about the origin and evolution of the Google File System

Marshall Kirk McKusick, Sean Quinlan | August 7, 2009

File Systems and Storage

How Will Astronomy Archives Survive the Data Tsunami?

Astronomers are collecting more data than ever. What practices can keep them ahead of the flood?

G. Bruce Berriman, Steven L. Groom | October 18, 2011

File Systems and Storage

Keeping Bits Safe: How Hard Can It Be?

As storage systems grow larger and larger, protecting their data for long-term storage is becoming more and more challenging.

David S. H. Rosenthal | October 1, 2010

File Systems and Storage

Interoperability Testing

Microsoft's Protocol Documentation Program: Interoperability Testing at Scale

A Discussion with Nico Kicillof, Wolfgang Grieskamp and Bob Binder

June 8, 2011

Quality Assurance

SAGE: Whitebox Fuzzing for Security Testing

SAGE has had a remarkable impact at Microsoft.

Patrice Godefroid, Michael Y. Levin, David Molnar | January 11, 2012


The Robustness Principle Reconsidered

Seeking a middle ground

Eric Allman | June 22, 2011


UX Design

UX Design and Agile:A Natural Fit?

A user experience designer and a software engineer from SAP discuss the challenges of collaborating on a business-intelligence query tool.

Terry Coatta, Julian Gosper | November 29, 2010


Finding Usability Bugs with Automated Tests

Automated usability tests can be valuable companions to in-person tests.

Julian Harty | January 12, 2011


Multicore Performance

Photoshop Scalability:Keeping It Simple

Clem Cole and Russell Williams discuss Photoshop's long history with parallelism, and what they now see as the main challenge.

Clem Cole, Russell Williams | September 9, 2010


Managing Contention for Shared Resources on Multicore Processors

Contention for Caches, Memory Controllers, and Interconnects Can Be Alleviated by Contention-Aware Scheduling Algorithms.

Alexandra Fedorova, Sergey Blagodurov, Sergey Zhuravlev | January 20, 2010


RIA Development

Case Study: Making the Move to AJAX

What a software-as-a-service provider learned from using an AJAX framework for RIA development

Jeff Norwalk | March 11, 2009

Web Development

Commentary: A Trip Without a Roadmap

Instead of simply imagining what your users want or need, it's always a good idea to first get their input.

Peter Christy | March 11, 2009

Topic: Networks

Web Services

Reveling in Constraints

The Google Web Toolkit is an end-run around Web development obstacles.

Bruce Johnson | July 21, 2009

CACM This article appears in print in Communications of the ACM, Volume 52 Issue 9

Web Development

Debugging AJAX in Production

Lacking proper browser support, what steps can we take to debug production AJAX code?

Eric Schrock | March 11, 2009

Topic: Management

CACM This article appears in print in Communications of the ACM, Volume 52 Issue 5

Web Development