acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Science and Technology links (June 11 2023)
From Daniel Lemire's Blog

Science and Technology links (June 11 2023)

Similar species can have vastly different lifespan. Researchers have been looking for the limiting factors that explain these differences. As we age, our genesContinue...

Parsing IP addresses crazily fast
From Daniel Lemire's Blog

Parsing IP addresses crazily fast

Most of us are familiar with IP addresses: they are strings of the form “ddd.ddd.ddd.ddd” where ddd is a decimal number of up to three digits in the range 0 toContinue...

Science and Technogy links (June 3 2023)
From Daniel Lemire's Blog

Science and Technogy links (June 3 2023)

There are fewer serial killers these days. Some suggests it is due to better forensic techniques: we catch the killers faster and more efficiently. Between theContinue...

Peak credentialism
From Daniel Lemire's Blog

Peak credentialism

How much is a degree from a prestigious university worth? The answer is a bit difficult to answer because there are many cofounding factors: people from the connected...

Expected performance of a Bloom filter
From Daniel Lemire's Blog

Expected performance of a Bloom filter

A hash function is a function that maps a value (such as a string) to an integer value. Typically, we want random-looking values. A Bloom filter is a standard data...

The absurd cost of finalizers in Go
From Daniel Lemire's Blog

The absurd cost of finalizers in Go

The Go programming language makes it easy to call C code. Suppose you have the following C functions: char* allocate() { return (char*)malloc(100); } void free_allocated...

Computing the UTF-8 size of a Latin 1 string quickly (ARM NEON edition)
From Daniel Lemire's Blog

Computing the UTF-8 size of a Latin 1 string quickly (ARM NEON edition)

While most of our software relies on Unicode strings, we often still encounter legacy encodings such as Latin 1. Before we convert Latin 1 strings to Unicode (e...

ARM instructions do “less work”?
From Daniel Lemire's Blog

ARM instructions do “less work”?

Modern processors can execute several instructions per cycle. Because processors cannot easily run faster (in terms of clock speed), vendors try to get their processors...

Science and Technology links (May 6 2023)
From Daniel Lemire's Blog

Science and Technology links (May 6 2023)

Artificial intelligence (ChatGPT) can provide better answers to patients than physicians. Eating chocolate might affect your brain and cognitive functions. It may...

Graviton 3, Apple M2 and Qualcomm 8cx 3rd gen: a URL parsing benchmark
From Daniel Lemire's Blog

Graviton 3, Apple M2 and Qualcomm 8cx 3rd gen: a URL parsing benchmark

Whenever you enter a URL into a system, it must be parsed and validated. It is a surprisingly challenging task: it may require hundreds of nanoseconds and possibly...

Under Linux, libSegFault and addr2line are underrated
From Daniel Lemire's Blog

Under Linux, libSegFault and addr2line are underrated

Many modern programming languages like Java produce useful error messages when they fail. Some indicate where in the program (e.g., down to the line of source code)...

Science and Technology links (April 29 2023)
From Daniel Lemire's Blog

Science and Technology links (April 29 2023)

Ovaries age quickly in women. By the age of 40, most ovaries are poorly functional. However, there is an ongoing clinical trial to check whether the drug rapamycin...

Hotspot performance engineering fails
From Daniel Lemire's Blog

Hotspot performance engineering fails

Developers often believe that software performance follows a Pareto distribution: 80% of the running time is spent in 20% of the code. Using this model, you can...

Vectorized trimming of line comments
From Daniel Lemire's Blog

Vectorized trimming of line comments

A French graduate student reached out by email yesterday with the following problem. Consider a format such as TOML which has line comments: when a ‘#’ character...

Science and Technology links (April 22 2023)
From Daniel Lemire's Blog

Science and Technology links (April 22 2023)

There are many theories regarding what biological aging. Animals can differ by up to six orders of magnitude (100000x) in longevity. Some animal species like the...

Will emerging artificial intelligence boost research productivity?
From Daniel Lemire's Blog

Will emerging artificial intelligence boost research productivity?

Bryan Caplan, an economist, raised an interesting question on Twitter: why aren’t people celebrating the fact that tools like GPT might soon allow us to produce...

Defining interfaces in C++: concepts versus inheritance
From Daniel Lemire's Blog

Defining interfaces in C++: concepts versus inheritance

In a previous blog post, I showed how you could define ‘an interface’ in C++ using concepts. For example, I can specify that a type should have the methods has_next...

Science and Technology links (April 15 2023)
From Daniel Lemire's Blog

Science and Technology links (April 15 2023)

Some university professor include ‘trigger warnings’ in their course material, to warn students that potentially disturbing content may be encountered. According...

Interfaces are not free in Go
From Daniel Lemire's Blog

Interfaces are not free in Go

We are all familiar with the concept even if we are not aware of it: when you learn about arithmetic in school, you use the same mathematical symbols whether you...

19 random digits is not enough to uniquely identify all human beings
From Daniel Lemire's Blog

19 random digits is not enough to uniquely identify all human beings

Suppose that you assigned everyone an 19 digit number. What is the probability that two human beings would have the same number? It is an instance of the Birthday...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account