acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

The memory usage of STL containers can be surprising
From Daniel Lemire's Blog

The memory usage of STL containers can be surprising

C++ remains one of the most popular languages today. One of the benefits of C++ is the built-in STL containers offering the standard data structures like vector...

The new C standards are worth it
From Daniel Lemire's Blog

The new C standards are worth it

The C language is one of the oldest among the popular languages in use today. C is a conservative language. The good news is that the language is aging well and...

Starting high school in 2016
From Daniel Lemire's Blog

Starting high school in 2016

My oldest boy started high school this year. He goes to an accessible private school nearby. We went to a parent’s meeting last night. Personal electronics is banned...

Function signature: how do you order parameters?
From Daniel Lemire's Blog

Function signature: how do you order parameters?

Most programming languages force you to order your function parameters. Getting them wrong might break your code. What is the most natural way to order the parameters...

Are there too many people?
From Daniel Lemire's Blog

Are there too many people?

Without immigration, most developed countries would face massive depopulation. In fact, half the population of the Earth lives in countries with sub-replacement...

The rate-of-living theory is wrong
From Daniel Lemire's Blog

The rate-of-living theory is wrong

The rate-of-living theory is popular on the Internet. The intuition is that all animals are born with some “budget” that they burn out over time according to their...

Innovation as a Fringe Activity
From Daniel Lemire's Blog

Innovation as a Fringe Activity

What do these people have in common: Marconi, Alexander Graham Bell, and the Steves Wozniak and Jobs? At least one commonality is that approximately nobody listened...

Faster dictionary decoding with SIMD instructions
From Daniel Lemire's Blog

Faster dictionary decoding with SIMD instructions

A particularly fast and effective compression technique is dictionary coding. Intuitively, it works as follow. Suppose you are given a long document made of millions...

How many reversible integer operations do you know?
From Daniel Lemire's Blog

How many reversible integer operations do you know?

Most operations on a computer are not reversible… meaning that once done, you can never go back. For example, if you divide integers by 2 to get a new integer,Continue...

Let us talk about the Luddite problem…
From Daniel Lemire's Blog

Let us talk about the Luddite problem…

This morning I woke up to an interview on the radio (yes, I still have a radio somehow) with pharmacists who decided (gulp!) to try to fulfill prescriptions byContinue...

Combine smart people with crazily hard projects
From Daniel Lemire's Blog

Combine smart people with crazily hard projects

Back in college, professors assigned crazily hard problems… and I was forced to talk with my peers to figure out how they fared… and eventually teaming up withContinue...

Common sense in  artificial intelligence… by 2026?
From Daniel Lemire's Blog

Common sense in artificial intelligence… by 2026?

Lots of people want to judge machine intelligence based on human intelligence. It dates back to Turing who proposed his eponymous Turing test: can machines “pass”...

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...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account