Sign In

Communications of the ACM

Blogroll



Science and Technology links (May 15th 2021)
From Daniel Lemire's Blog

Science and Technology links (May 15th 2021)

There were rainforests near the south pole 90 million years ago. Though commercial exchanges are typically win-win for both the buyer and the seller, people tend...

Constructing arrays of Boolean values in Java
From Daniel Lemire's Blog

Constructing arrays of Boolean values in Java

It is not uncommon that we need to represent an array of Boolean (true or false) values. There are multiple ways to do it. The most natural way could be to construct...

The benefits of locality in random access
From Daniel Lemire's Blog

The benefits of locality in random access

Modern computers have several layers of memory, from fast cache (sometimes called L1) all the way to main memory (RAM). A lot of performance-critical code relies...

Science and Technology links (May 1st 2021)
From Daniel Lemire's Blog

Science and Technology links (May 1st 2021)

Growing your own food could lower your carbon footprint by 3-5%. In recent years, we have acquired the ability to measure biological age: your chronological age...

Ideal divisors: when a division compiles down to just a multiplication
From Daniel Lemire's Blog

Ideal divisors: when a division compiles down to just a multiplication

The division instruction is one of the most expensive instruction in your CPU. Thus optimizing compilers often compile divisions by known constants down to a multiplication...

Some useful regular expressions for programmers
From Daniel Lemire's Blog

Some useful regular expressions for programmers

In my blog post, My programming setup, I stressed how important regular expressions are to my programming activities. Regular expressions can look intimidatingContinue...

A trichotomy of intellectual activity
From Daniel Lemire's Blog

A trichotomy of intellectual activity

I like to separate intellectual work among three categories: Emulation: the reproduction or direct application of existing ideas. Most academic work and maybe most...

Science and Technology links (April 17th 2021)
From Daniel Lemire's Blog

Science and Technology links (April 17th 2021)

Moderna built their COVID 19 vaccine without having the virus on site. They viewed it as a software problem. Human and mice with red hair have elevated pain thresholds...

How fast can you sort arrays of integers in Java?
From Daniel Lemire's Blog

How fast can you sort arrays of integers in Java?

Programming languages come with sorting functions by default. We can often do much better. For example, Downs has showed that radix sort can greatly surpass default...

My programming setup
From Daniel Lemire's Blog

My programming setup

As my GitHub profile indicates, I program almost every single working day of the year. I program in C++, C, Go, Java, JavaScript, Python, R, Swift, Rust, C#; even...

Science and Technology links (March 27th 2021)
From Daniel Lemire's Blog

Science and Technology links (March 27th 2021)

Scientists, including climate-science researchers, often travel to faraway places for conferences. Attending a live conference is time consuming and expensive.Continue...

Counting cycles and instructions on the Apple M1 processor
From Daniel Lemire's Blog

Counting cycles and instructions on the Apple M1 processor

When benchmarking software, we often start by measuring the time elapsed. If you are benchmarking data bandwidth or latency, it is right measure. However, if you...

Apple’s M1 processor and the full 128-bit integer product
From Daniel Lemire's Blog

Apple’s M1 processor and the full 128-bit integer product

If I multiply two 64-bit integers (having values in [0, 264)), the product requires 128 bits. Intel and AMD processors (x64) can compute the full (128-bit) product...

Science and Technology links (March 6th 2021)
From Daniel Lemire's Blog

Science and Technology links (March 6th 2021)

Increasing schooling does not improve social outcomes at a population level. Venitian glass was made near Venice as early as 450 BC. It spread worldwide through...

How does your programming language handle “minus zero” (-0.0)?
From Daniel Lemire's Blog

How does your programming language handle “minus zero” (-0.0)?

The ubiquitous IEEE floating-point standard defines two numbers to represent zero, the positive and the negative zeros. You also have the positive and negativeContinue...

Parsing Floating-point Numbers Really Fast in C#
From Daniel Lemire's Blog

Parsing Floating-point Numbers Really Fast in C#

Programmers often write out numbers as strings (e.g., 3.1416) and they want to read back the numbers from the string. If you read and write JSON or CSV files, you...

Science and Technology links (February 13th 2021)
From Daniel Lemire's Blog

Science and Technology links (February 13th 2021)

Researchers make inexpensive transparent wood. Our cells produce energy using their mitochondria. Researchers show that you can efficiently enrich cells with mitochondria...

On the cost of converting ASCII to UTF-16
From Daniel Lemire's Blog

On the cost of converting ASCII to UTF-16

Many programming languages like Java, JavaScript and C# represent strings using UTF-16 by default. In UTF-16, each ‘character’ uses 16 bits. To represent all 1Continue...

Science and Technology links (February 6th 2021)
From Daniel Lemire's Blog

Science and Technology links (February 6th 2021)

You can use artificial intelligence and satellite images to count the number of elphants found in the wild. It appears that a billion people on Earth now use an...

Number Parsing at a Gigabyte per Second
From Daniel Lemire's Blog

Number Parsing at a Gigabyte per Second

Computers typically rely on binary floating-point numbers. Most often they span 64 bits or 32 bits. Many programming languages call them double and float. JavaScript...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account