acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Why we make up jobs out of thin air
From Daniel Lemire's Blog

Why we make up jobs out of thin air

“We prefer to invent new jobs rather than trying harder and inventing a new system that wouldn’t require everybody to have a job.” (Philippe Beaudoin) In the XXIst...

Facts about global warming that you should keep for yourself
From Daniel Lemire's Blog

Facts about global warming that you should keep for yourself

I don’t get invited to parties very often. That is, in part, because I cultivate aggressively critical thinking. My wife will testify that I am doubter, an annoying...

Bytes or octets?
From Daniel Lemire's Blog

Bytes or octets?

Quick: what is the definition of a byte (as in two kilobytes)? If you said it is a unit of 8 bits, you failed. Correct answer (according to IEEE 1541): A byte is...

Which is fastest: read, fread, ifstream or mmap?
From Daniel Lemire's Blog

Which is fastest: read, fread, ifstream or mmap?

If you program in C/C++, you have many options to read files: The standard C library offers a low-level read function. It is as simple as it gets. The standard...

Do not waste time with STL vectors
From Daniel Lemire's Blog

Do not waste time with STL vectors

I spend a lot of time with the C++ Standard Template Library. It is available on diverse platforms, it is fast and it is (relatively) easy to learn. It has been...

On the quality of academic software
From Daniel Lemire's Blog

On the quality of academic software

Software is eating the world. Despite a poor year, Facebook has a market capitalization of $65 billion. This little company with barely 2000 developers is worth...

Data alignment for speed: myth or reality?
From Daniel Lemire's Blog

Data alignment for speed: myth or reality?

Compilers align data structures so that if you read an object using 4 bytes, its memory address is divisible by 4. There are two reasons for data alignment: Some...

Creating incentives for better science
From Daniel Lemire's Blog

Creating incentives for better science

Popper argued that science should be falsifiable. To determine truth, we simply try to disprove an hypothesis until we are exhausted. It is a nice theory, but actual...

Fast bitmap decoding
From Daniel Lemire's Blog

Fast bitmap decoding

An old programming trick is to represent sets of integers as bitmaps. For example, the sequence of integers 1, 4, 6 becomes the number 0b1010010 in binary (or 82...

Summer reading recommendations
From Daniel Lemire's Blog

Summer reading recommendations

What came after by Sam Winston is an intriguing scifi novel. It describes a near-future dystopia where a handful of large corporations have taken over the USA....

Punk money: how you can print your own currency
From Daniel Lemire's Blog

Punk money: how you can print your own currency

We all want and need money. However, for many services, paying actual dollars is inefficient. The transaction costs are too high. So we need a system whereas perfect...

Computer scientists need to learn about significant digits
From Daniel Lemire's Blog

Computer scientists need to learn about significant digits

I probably spend too much time reviewing research papers. It makes me cranky. Nevertheless, one thing that has become absolutely clear to me is that computer scientists...

Let us abolish page limits in scientific publications
From Daniel Lemire's Blog

Let us abolish page limits in scientific publications

As scientists, we are often subjected to strict page limits. These limits made sense when articles were printed on expensive paper. They are now obsolete. But we...

How to manipulate the masses by language alone
From Daniel Lemire's Blog

How to manipulate the masses by language alone

George Orwell with novel 1984 popularized the idea that by changing the language, you could change the minds. It is easy to forget that we are routinely victims...

Bit packing is fast, but integer logarithm is slow
From Daniel Lemire's Blog

Bit packing is fast, but integer logarithm is slow

In How fast is bit packing?, we saw how to store non-negative integers smaller than 2N using N bits per integer by a technique called bit packing. A careful C++...

It is what you do, not what you own
From Daniel Lemire's Blog

It is what you do, not what you own

Over 20 years ago, back when I was in high school, I went on a sailboat trip. I was so impressed that I decided to own a sailboat one day. I realized that a sailboat...

Publicly available large data sets for database research
From Daniel Lemire's Blog

Publicly available large data sets for database research

Most database research papers use synthetic data sets. That is, they use random-number generators to create their data on the fly. A popular generator is dbgen...

Do we need copyright?
From Daniel Lemire's Blog

Do we need copyright?

The concept of property is a social construction. Animals, such as cats, can own a piece of food, or a territory, but only as long as they are able to personally...

From counting citations to measuring usage (help needed!)
From Daniel Lemire's Blog

From counting citations to measuring usage (help needed!)

We sometimes measure the caliber of a researcher by how many research papers he wrote. This is silly. While there is some correlation between quantity and quality...

How fast is bit packing?
From Daniel Lemire's Blog

How fast is bit packing?

Integers values are typically stored using 32 bits. Yet if you are given an array of integers between 0 and 131 072, you could store these numbers using as little...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account