acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Accelerating PHP hashing by “unoptimizing” it
From Daniel Lemire's Blog

Accelerating PHP hashing by “unoptimizing” it

Hashing is a software trick that can map strings to fixed-length integers, such as 32-bit integers. It is ubiquitous in modern software. Languages like Java and...

Augmented reality becomes mainstream
From Daniel Lemire's Blog

Augmented reality becomes mainstream

My go-to reference lately about the near future has been the 2006 novel Rainbows End by Vernor Vinge. The novel is set in 2025 and the author depicts a world where...

Virtual Reality: First impressions with the HTC Vive
From Daniel Lemire's Blog

Virtual Reality: First impressions with the HTC Vive

I just got my hands on some virtual-reality (VR) goggles. Specifically, we have an “HTC Vive“. We are still in the early days of VR and given that these goggles...

Fast random shuffling
From Daniel Lemire's Blog

Fast random shuffling

In a random shuffle, you want to take the elements of a list and reorder them randomly. In a “fair” random shuffle, all possible permutations must be equally likely...

A fast alternative to the modulo reduction
From Daniel Lemire's Blog

A fast alternative to the modulo reduction

Suppose you want to pick an integer at random in a set of N elements. Your computer has functions to generate random 32-bit integers, how do you transform suchContinue...

I do not use a debugger
From Daniel Lemire's Blog

I do not use a debugger

I learned to program with BASIC back when I was twelve. I would write elaborate programs and run them. Invariably, they would surprise me by failing to do whatContinue...

How fast is tabulation-based hashing? The downsides of  Zobrist…
From Daniel Lemire's Blog

How fast is tabulation-based hashing? The downsides of Zobrist…

In practice, hashing is the process of taking an input, such as a string, and turning it into an integer value. It is a fundamental tool in programming, as most...

The strange case of the copyright of open-source software
From Daniel Lemire's Blog

The strange case of the copyright of open-source software

Economists make a grave mistake when they fail to mention open-source software as one of the critical innovation of our era. Open-source software offers a great...

To be smart, work on problems you care about
From Daniel Lemire's Blog

To be smart, work on problems you care about

Never do anything that bores you. My experience in science is that someone is always telling to do something that leaves you flat. Bad idea. I’m not good enough...

Enough with the bogus medical studies!
From Daniel Lemire's Blog

Enough with the bogus medical studies!

Every week, we hear about how eating such and such food gives cancer, or how working out can save you from a heart attack. If you have been reading these studies...

The surprising cleverness of modern compilers
From Daniel Lemire's Blog

The surprising cleverness of modern compilers

I wanted to know how a modern C compiler like clang would process the following C code: #include <stdint.h> int count(uint64_t x) { int v = 0; while(x != 0) { x...

We are passing the Turing test right on schedule
From Daniel Lemire's Blog

We are passing the Turing test right on schedule

In 1950, the brilliant computing pioneer Alan Turing made the following prediction in his paper Computing Machinery and Intelligence: I believe that in about fifty...

Professors intentionally slow down science to make themselves look better
From Daniel Lemire's Blog

Professors intentionally slow down science to make themselves look better

Recently, the president of the United States announced a big anti-cancer initiative, to be headed by his vice-president Joe Biden. Will it be fruitful? Maybe. But...

Email: how to be polite and efficient
From Daniel Lemire's Blog

Email: how to be polite and efficient

Email is an old platform, but it still represents the cornerstone of most of our work online. Surprisingly, many people seem to be using email poorly. Here areContinue...

Is software a neutral agent?
From Daniel Lemire's Blog

Is software a neutral agent?

We face an embarrassing amount of information but when we feel overwhelmed, as Clay Shirky said, “It’s not information overload. It’s filter failure.” Unavoidably...

We know a lot less than we think, especially about the future.
From Daniel Lemire's Blog

We know a lot less than we think, especially about the future.

The inventors of the airplane, the Wright brothers, had little formal education (3 and 4 years of high school respectively). They were not engineers. They wereContinue...

How will you die? Cancer, Alzheimer’s, Stroke?
From Daniel Lemire's Blog

How will you die? Cancer, Alzheimer’s, Stroke?

Before the 1950s, many of us suffered from poliomyelitis and too many ended up crippled. Then we developed a vaccine and eradicated the disease. Before the second...

The powerful hacker culture
From Daniel Lemire's Blog

The powerful hacker culture

In my post the hacker culture is winning, I observed that the subculture developed in the software industry is infecting the wider world. One such visible culture...

No more leaks with sanitize flags in gcc and clang
From Daniel Lemire's Blog

No more leaks with sanitize flags in gcc and clang

If you are programming in C and C++, you are probably wasting at least some of your time hunting down memory problems. Maybe you allocated memory and forgot toContinue...

How close are AI systems to human-level intelligence? The Allen AI challenge.
From Daniel Lemire's Blog

How close are AI systems to human-level intelligence? The Allen AI challenge.

With respect to artificial intelligence, some people are squarely in the “optimist” camp, believing that we are “nearly there” as far as producing human-level intelligence...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account