acm-header
Sign In

Communications of the ACM

Latest Practice



Fighting Physics: A Tough Battle
From Communications of the ACM

Fighting Physics: A Tough Battle

The laws of physics and the Internet's routing infrastructure affect performance in a big way.

The Five-Minute Rule 20 Years Later
From Communications of the ACM

The Five-Minute Rule 20 Years Later

Revisiting Gray and Putzolu's famous rule in the age of Flash.

Whither Sockets?
From Communications of the ACM

Whither Sockets?

The pervasive and long-lasting sockets API has remained largely unchanged since 1982. How have developers worked around its inherent limitations and what is the...

Network Front-End Processors, Yet Again
From Communications of the ACM

Network Front-End Processors, Yet Again

The history of NFE processors sheds light on the trade-offs involved in designing network stack software.

Hard-Disk Drives: The Good, the Bad, and the Ugly
From Communications of the ACM

Hard-Disk Drives: The Good, the Bad, and the Ugly

New drive technologies and increased capacities create new categories of failure modes that will influence system designs.

Debugging AJAX in Production
From Communications of the ACM

Debugging AJAX in Production

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

Security in the Browser
From Communications of the ACM

Security in the Browser

Users with no security training download Web browsers from the Internet without precaution, and demand that they be fast and easy to use. What can be done to make ...

ORM in Dynamic Languages
From Communications of the ACM

ORM in Dynamic Languages

Dynamic languages offer a taste of object-relational mapping that eases application code.

Cybercrime 2.0
From Communications of the ACM

Cybercrime 2.0: When the Cloud Turns Dark

Web-based malware attacks are more insidious than ever. What can be done to stem the tide?

Erlang For Concurrent Programming
From Communications of the ACM

Erlang For Concurrent Programming

Designed for concurrency from the ground up, the Erlang language can be a valuable tool to help solve concurrent problems.

Better Scripts, Better Games
From Communications of the ACM

Better Scripts, Better Games

Smarter, more powerful scripting languages will improve game performance while making gameplay development more efficient.

Improving Performance on the Internet
From Communications of the ACM

Improving Performance on the Internet

Given the Internet's bottlenecks, how can we build fast, scalable, content-delivery systems?

The Long Road to 64 Bits
From Communications of the ACM

The Long Road to 64 Bits

The sometimes contentious development of 64-bit systems shows how technology decisions can have unexpected, enduring consequences.

Eventually Consistent
From Communications of the ACM

Eventually Consistent

Building reliable distributed systems at a worldwide scale demands trade-offs between consistency and availability.

High-Performance Web Sites
From Communications of the ACM

High-Performance Web Sites

Want to make your Web site fly? Focus on frontend performance.

CTO Virtualization Roundtable
From Communications of the ACM

CTO Virtualization Roundtable: Part II

When it comes to virtualization platforms, experts say focus first on the services to be delivered.

Real-World Concurrency
From Communications of the ACM

Real-World Concurrency

What does the proliferation of concurrency mean for the software you develop?

CTO Roundtable on Virtualization
From Communications of the ACM

CTO Roundtable on Virtualization: Part I

Virtualization technology is hot again, but for the right reasons?

Code Spelunking Redux
From Communications of the ACM

Code Spelunking Redux

Is it getting any easier to understand other people's code?

A Closer Look at GPUs
From Communications of the ACM

A Closer Look at GPUs

As the line between GPUs and CPUs begins to blur, it's important to understand what makes GPUs tick.
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account