Vol. 11 No. 4 – April 2013

Download full issue PDF

There's Just No Getting around It: You're Building a Distributed System

Building a distributed system requires a methodical approach to requirements.

Distributed systems are difficult to understand, design, build, and operate. They introduce exponentially more variables into a design than a single machine does, making the root cause of an application problem much harder to discover. It should be said that if an application does not have meaningful SLAs (service-level agreements) and can tolerate extended downtime and/or performance degradation, then the barrier to entry is greatly reduced. Most modern applications, however, have an expectation of resiliency from their users, and SLAs are typically measured by "the number of nines" (e.g., 99.9 or 99.99 percent availability per month). Each additional 9 becomes harder and harder to achieve.

by Mark Cavage

Cherry-picking and the Scientific Method

Software is supposed be a part of computer science, and science demands proof.

So while haggling with the cherry seller, it became obvious that buying a whole flat of cherries would be a better deal than buying a single basket, even though that was all we really wanted. Not wanting to pass up a deal, however, my friend bought the entire flat and off we went, eating and talking. It took another 45 minutes to get home, and during that time we had eaten more than half the flat of cherries. I couldn't look at anything even remotely cherry-flavored for months; and today, when someone says cherry-picking, that doesn't conjure up happy images of privileged kids playing farmer on Saturday mornings along the California coast, I just feel ill.

by George Neville-Neil

Realtime GPU Audio

Finite difference-based sound synthesis using graphics processors

Today's CPUs are capable of supporting realtime audio for many popular applications, but some compute-intensive audio applications require hardware acceleration. This article looks at some realtime sound-synthesis applications and shares the authors' experiences implementing them on GPUs (graphics processing units).

by Bill Hsu, Marc Sosnick-Pérez

Resolved: the Internet Is No Place for Critical Infrastructure

Risk is a necessary consequence of dependence

What is critical? To what degree is critical defined as a matter of principle, and to what degree is it defined operationally? I am distinguishing what we say from what we do.

by Dan Geer