acm-header
Sign In

Communications of the ACM

Latest Practice



Making the Mobile Web Faster
From Communications of the ACM

Making the Mobile Web Faster

Mobile performance issues? Fix the back end, not just the client.

The Essence of Software Engineering
From Communications of the ACM

The Essence of Software Engineering: The SEMAT Kernel

A thinking framework in the form of an actionable kernel.

Sender-Side Buffers and the Case For Multimedia Adaptation
From Communications of the ACM

Sender-Side Buffers and the Case For Multimedia Adaptation

A proposal to improve the performance and availability of streaming video and other time-sensitive media.

Anatomy of a Solid-State Drive
From Communications of the ACM

Anatomy of a Solid-State Drive

While the ubiquitous SSD shares many features with the hard-disk drive, under the surface they are completely different.

Disks from the Perspective of a File System
From Communications of the ACM

Disks from the Perspective of a File System

Disks lie. And the controllers that run them are partners in crime.

Fault Injection in Production
From Communications of the ACM

Fault Injection in Production

Making the case for resilience testing.

A Generation Lost in the Bazaar
From Communications of the ACM

A Generation Lost in the Bazaar

Quality happens only when someone is responsible for it.

A New Objective-C Runtime
From Communications of the ACM

A New Objective-C Runtime: From Research to Production

Backward compatibility always trumps new features.

Software Needs Seatbelts and Airbags
From Communications of the ACM

Software Needs Seatbelts and Airbags

Finding and fixing bugs in deployed software is difficult and time-consuming. Here are some alternatives.

All Your Database Are Belong To Us
From Communications of the ACM

All Your Database Are Belong To Us

In the big open world of the cloud, highly available distributed objects will rule.

Extending the Semantics of Scheduling Priorities
From Communications of the ACM

Extending the Semantics of Scheduling Priorities

Increasing parallelism demands new paradigms.

Multitier Programming in Hop
From Communications of the ACM

Multitier Programming in Hop

A first step toward programming 21st-century applications.

My Compiler Does Not Understand Me
From Communications of the ACM

My Compiler Does Not Understand Me

Until our programming languages catch up, code will be full of horrors.

Getting What You Measure
From Communications of the ACM

Getting What You Measure

There are four common pitfalls to avoid when using software metrics in a project management setting.

Managing Technical Debt
From Communications of the ACM

Managing Technical Debt

Shortcuts that save money and time today can cost you down the road.

Idempotence Is Not a Medical Condition
From Communications of the ACM

Idempotence Is Not a Medical Condition

Messages may be retried. Idempotence means that's OK.

Your Mouse Is a Database
From Communications of the ACM

Your Mouse Is a Database

Web and mobile applications are increasingly composed of asynchronous and real-time streaming services and push notifications.

Why LINQ Matters
From Communications of the ACM

Why LINQ Matters: Cloud Composability Guaranteed

The benefits of composability are becoming clear in software engineering.

Interactive Dynamics For Visual Analysis
From Communications of the ACM

Interactive Dynamics For Visual Analysis

A taxonomy of tools that support the fluent and flexible use of visualizations.

SAGE: Whitebox Fuzzing For Security Testing
From Communications of the ACM

SAGE: Whitebox Fuzzing For Security Testing

SAGE has had a remarkable impact at Microsoft.
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account