From Schneier on Security
Artificial intelligence (AI) has been billed as the next frontier of humanity: the newly available expanse whose exploration
…
B. Schneier| February 29, 2024
A reader (Richard Ebeling) invited me to revisit an older blog post: Parsing floats in C++: benchmarking strtod vs. from_chars. Back then I reported that switching...Daniel Lemire From Daniel Lemire's Blog | July 27, 2022 at 02:43 PM
Modern game controllers can point in a wide range of directions. Game designers sometimes want to convert the joystick direction to get 8-directional movement.Continue...Daniel Lemire From Daniel Lemire's Blog | July 24, 2022 at 04:34 PM
Compared to 1800, we eat less saturated fat and much more processed food and vegetable oils and it does not seem to be good for us: Saturated fats from animal sources...Daniel Lemire From Daniel Lemire's Blog | July 21, 2022 at 12:19 PM
In the first half of the XXth century, there were relatively few scientists, and these scientists were generally not lavishly funded. Yet it has been convincingly...Daniel Lemire From Daniel Lemire's Blog | July 21, 2022 at 12:10 PM
Many programming languages have two binary floating-point types: float (32-bit) and double (64-bit). It reflects the fact that most general-purpose processors supports...Daniel Lemire From Daniel Lemire's Blog | July 20, 2022 at 12:56 PM
Processors come, roughly, in two large families x64 processors from Intel and AMD, and ARM processors from Apple, Samsung, and many other vendors. For a long time...Daniel Lemire From Daniel Lemire's Blog | July 14, 2022 at 11:04 AM
When programming, we often need to write ‘generic’ functions where the exact data type is not important. For example, you might want to write a simple functionContinue...Daniel Lemire From Daniel Lemire's Blog | July 8, 2022 at 03:54 PM
Most of us write code using higher level languages (Go, C++), but if you want to understand the code that matters to your processor, you need to look at the ‘assembly...Daniel Lemire From Daniel Lemire's Blog | June 28, 2022 at 02:07 PM
I have had access to Amazon’s latest ARM processors (graviton 3) for a few weeks. To my knowledge, these are the first widely available processors supporting Scalable...Daniel Lemire From Daniel Lemire's Blog | June 23, 2022 at 02:02 PM
One of the most expensive operation in a processor and memory system is a random memory access. If you try to read a value in memory, it can take tens of nanosecond...Daniel Lemire From Daniel Lemire's Blog | June 7, 2022 at 05:21 PM
On many systems, memory is accessed in fixed blocks called “cache lines”. On Intel systems, the cache line spans 64 bytes. That is, if you access memory at byte...Daniel Lemire From Daniel Lemire's Blog | June 6, 2022 at 04:19 PM
Many recent Intel processors benefit from a new family of instructions called AVX-512. These instructions operate over wide registers (up to 512 bits) and follow...Daniel Lemire From Daniel Lemire's Blog | May 25, 2022 at 05:27 PM
There are various ways in software to handle error conditions. In C or Go, one returns error code. Other programming languages like C++ or Java prefer to throwContinue...Daniel Lemire From Daniel Lemire's Blog | May 13, 2022 at 11:58 AM
I refer to “bitset decoding” as the action of finding the positions of the 1s in a stream of bits. For example, given the integer value 0b11011 (or 27 in decimal)...Daniel Lemire From Daniel Lemire's Blog | May 10, 2022 at 05:38 PM
In software, we often use ‘bitsets’: you work with arrays of bits to represent sets of small integers. It is a concise and fast data structure. Sometimes you want...Daniel Lemire From Daniel Lemire's Blog | May 6, 2022 at 04:45 PM
In software, it is a common problem to want to remove specific characters from a string. To make the problem precise, let us consider the removal of all ASCII control...Daniel Lemire From Daniel Lemire's Blog | April 28, 2022 at 12:53 PM
In practice, computer code is constantly being transformed. At the beginning of a project, the computer code often takes the form of sketches that are gradually...Daniel Lemire From Daniel Lemire's Blog | April 21, 2022 at 01:55 PM
In programming languages like JavaScript or Python, numbers are typically represented using 64-bit IEEE number types (binary64). For these numbers, we have 15 digits...Daniel Lemire From Daniel Lemire's Blog | April 13, 2022 at 01:31 PM
Most strings in software today are represented using the unicode standard. The unicode standard can represent most human readable strings. Unicode works by representing...Daniel Lemire From Daniel Lemire's Blog | April 5, 2022 at 11:50 AM
In most systems, integers are stored using a fixed binary representation. It is common to store integers using 32-bit or 64-bit words. You sometimes need to convert...Daniel Lemire From Daniel Lemire's Blog | March 28, 2022 at 05:50 PM