The Curious Engineer

Daniel Lemire's blog

2009–2026

1,416 posts

← 2004–2008

2026 77

October 2026

  1. Decoding base64 in Python at 10 gigabytes per second
  2. Redis now has compressed bitmaps (Roaring)
  3. Parsing JSON at tens of gigabytes per second… in Python
  4. WebSocket servers in JavaScript: Node.js, Bun and Deno in 2026
  5. Faster Python startup with lazy imports
  6. Mastering SIMD with Java Vector API
  7. Faster software linking with mold
  8. Ephemeral testing
  9. Research paper overload: submissions capped at two a month
  10. Google’s first orbital data center is in orbit
  11. Parsing compressed JSON at 40 GB/s

September 2026

  1. Transcoding UTF-8 to UTF-16 with replacement at gigabytes per second
  2. How do you deal with people who strongly disagree with your views?
  3. simdjson 5.0 is out
  4. How fast can you fix a UTF-16 string in C#?
  5. A thesis isn’t enough for a PhD
  6. How many strings can you create per second?
  7. If you don’t have the factories, you lose the expertise
  8. A summer of AI optimization
  9. More than a taken branch per cycle?
  10. The data does not show mass unemployment
  11. AI is breaking the academic sorting machine
  12. How did Apple Silicon get 50% faster in three years?
  13. Faster JSON parsing with SVE2 on ARM processors
  14. How did AMD Ryzen get 50% faster in two years?
  15. How fast is C++23’s std::flat_map?
  16. Subnormal floating-point numbers are expensive… on Intel processors
  17. The four-colour theorem was only the start
  18. Fear Is Not an Argument
  19. A quick overview of atomics in C
  20. AI programming: a layered model
  21. Python sets and dictionaries can have quadratic-time performance

August 2026

  1. The new Go JSON API: twice as fast, or 1.5x slower?
  2. Java’s String.indexOf can be slow (quadratic)
  3. Parsing IP addresses in C# at crazy speeds
  4. Go 1.27 will make some allocations cheaper
  5. AI programming : are you angry yet?
  6. Profile-guided optimization in Go
  7. How fast is C++26’s std::hive?

July 2026

  1. Memory-level parallelism: AMD is the king
  2. Does a PhD Pay Off?
  3. From Institutions to Individuals: the White House Report on Revitalizing U.S. Scientific Leadership
  4. Using AI to build your own software
  5. X just gave us an interface that AI agents can use. I pointed it at my own posts.

June 2026

  1. Chatting with an AI Won’t Make You a Top Programmer
  2. Parsing JSON at compile time with C++26 static reflection
  3. Sovereign
  4. How much do amd64 microarchitecture levels help in Go?

May 2026

  1. Embodied cognition and agentic AI
  2. Parsing IPv6 Addresses Crazily Fast with AVX-512
  3. Only 17% of all 64-bit Integers are products of two 32-bit integers
  4. SIMD-accelerated integer-to-string conversion
  5. Checking multiplication overflow
  6. Mapping Strings to Float Arrays in Go: How Fast Can We Go?

April 2026

  1. House prices and fertility
  2. You can beat the binary search
  3. The fastest way to match characters on ARM processors?
  4. A brief history of C/C++ programming languages
  5. Can your AI rewrite your code in assembly?

March 2026

  1. A Fast Immutable Map in Go
  2. JSON and C++26 compile-time reflection: a talk
  3. How many branches can your CPU predict?
  4. Prefix sums at tens of gigabytes per second with ARM NEON
  5. Text formats are everywhere. Why?

February 2026

  1. You can use newline characters in URLs
  2. How fast do browsers correct UTF-16 strings?
  3. How bad can Python stop-the-world pauses get?
  4. AI: Igniting the Spark to End Stagnation
  5. The cost of a function call
  6. Converting data to hexadecimal outputs quickly
  7. Converting floats to strings quickly

January 2026

  1. Optimizing Python scripts with AI
  2. A new way to call C from Java: how fast is it?
  3. How stagnant is CPU technology?
  4. What I Got Wrong About “Hard Work” in My 20s
  5. A bit of glass and freedom is all you need
  6. Technology is culture

2025 72

December 2025

  1. The culture war that we won
  2. By how much does your memory allocator overallocate?
  3. Freedom from incompetence
  4. Don’t be so eager to rewrite your code
  5. Parsing IP addresses quickly (portably, without SIMD magic)
  6. Performance trick : optimistic vs pessimistic checks
  7. JSON-complete data formats and programming languages
  8. Multiplying the Shuffle Speed in Go with Batched Shuffling
  9. Why speed matters
  10. We see something that works, and then we understand it
  11. Why don’t we get more scientific breakthroughs?

November 2025

  1. How fast can browsers process base64 data?
  2. Antifragile Programming and Why AI Won’t Steal Your Job
  3. How good are Chinese CPUs? Benchmarking the Loongson 3A6000
  4. AMD vs. Intel: a Unicode benchmark
  5. Automated Equality Checks in C++ with Reflection (C++26)

October 2025

  1. As smart as a PhD
  2. Flame Graphs in Go
  3. Thinking Clearly
  4. Speeding up C++ functions with a thread_local cache
  5. Research results are cultural artifacts, not public goods
  6. Speed of random number generators in Go
  7. Aesthetics matter
  8. std::ranges may not deliver the performance that you expect
  9. Beyond papers: rethinking science in the era of artificial intelligence

September 2025

  1. The smallest number that is infinite
  2. Hard work is a virtue
  3. Splitting a long string in lines efficiently
  4. Processors are getting wider

August 2025

  1. Debugging C++ with Visual Studio Code under macOS
  2. Predictable memory accesses are much faster
  3. Why do we even need SIMD instructions ?

July 2025

  1. Innovation starts with consumers, not academia
  2. Rebels on campus
  3. Dot product on misaligned data
  4. Why measuring productivity is hard
  5. Memory-level parallelism : Apple M2 vs Apple M4
  6. Just say no to broken JSON
  7. Base64 for compression

June 2025

  1. From code reuse to the impact of generative AI
  2. Discover C++26’s compile-time reflection
  3. Life expectancy of men in Canadian provinces
  4. Don’t argue: build
  5. Metcalfe’s Law against Brooks’ Law
  6. Let us bury the linear model of innovation
  7. Fast character classification with z3

May 2025

  1. Is the job market for software developers collapsing?
  2. Models and science
  3. Dividing an array into fair sized chunks
  4. Returning several values from a function in C++ (C++23 edition)
  5. Producing useful commands on the go using C++ and AI
  6. C++20 concepts for nicer compiler errors

April 2025

  1. Streamlined iteration: exploring keys and values in C++20
  2. Detect control characters, quotes and backslashes efficiently using ‘SWAR’
  3. How can really smart people appear totally incompetent?
  4. How helpful is AI?
  5. Faster shuffling in Go with batching

March 2025

  1. Mixing ARM NEON with SVE code for fun and profit
  2. Unsigned comparisons using signed types
  3. Speeding up C++ code with template lambdas
  4. An overview of parallel programming (Go edition)
  5. How fast can you open 1000 files?

February 2025

  1. AVX-512 gotcha: avoid compressing words to memory with AMD Zen 4 processors
  2. Thread-safe memory copy

January 2025

  1. Programmer time and the pitfalls of wasteful work
  2. Regular expressions can blow up!
  3. Checking whether an ARM NEON register is zero
  4. The ivory tower’s drift: how academia’s preference for theory over empiricism fuels scientific stagnation
  5. JavaScript hashing speed comparison: MD5 versus SHA-256
  6. Counting the digits of 64-bit integers
  7. Artificial Intelligence as the Expert’s Lever: Elevating Human Expertise in the Age of AI
  8. How does your URL parser handle Unicode?

2024 64

December 2024

  1. Efficient In-Place UTF-16 Unicode Correction with ARM NEON
  2. Simpler and faster parsing code with std::views::split
  3. Accessing the attributes of a struct in C++ as array elements?
  4. Data structures as jigs for programmers (Go edition)

November 2024

  1. Parsing floats at over a gigabyte per second in C#
  2. Graduate degrees are overrated
  3. Having fun with modern C++

October 2024

  1. How fast can you parse a CSV file in C#?
  2. Table lookups are efficient
  3. From software to reality?
  4. Geoffrey Hinton, the Godfather of Deep Learning, wins Nobel Prize in Physics!
  5. Iterating through matched characters in modern C++

September 2024

  1. It is never too late to write your own C/C++ command-line utilities
  2. The PhD Paradox: A Journey into Academia’s Upside-Down World
  3. Replace strings by views when you can
  4. Compressing floating-point numbers quickly by converting them to brain floats

August 2024

  1. Parsing tiny and very large floating-point values: a programming-language comparison
  2. Faster random integer generation with batching
  3. Reflection-based JSON in C++ at Gigabytes per Second
  4. Converting ASCII strings to lower case at crazy speeds with AVX-512

July 2024

  1. Evolution of iPhone storage capacity
  2. Storage costs are plummeting
  3. How big are your docker images?
  4. How much of your binary executable is just ASCII text?
  5. Safer code in C++ with lifetime bounds
  6. Does C++ allow template specialization by concepts?
  7. Scan HTML even faster with SIMD instructions (C++ and C#)
  8. Benchmarking ARM processors: Graviton 4, Graviton 3 and Apple M2
  9. Scan HTML faster with SIMD instructions: .NET/C# Edition

June 2024

  1. How much memory does a call to ‘malloc’ allocate?
  2. Performance tip: avoid unnecessary copies
  3. Validating gigabytes of Unicode strings per second… in C#?
  4. Rolling your own fast matrix multiplication: loop order and vectorization
  5. Scan HTML faster with SIMD instructions: Chrome edition

May 2024

  1. Quickly checking whether a string needs escaping
  2. Never reason from the results of a sampling profiler
  3. Science and Technology links (May 25 2024)
  4. Learning from the object-oriented mania
  5. Forwarding references in C++
  6. Peer review is not the gold standard in science
  7. How fast can you construct a small list of strings in C for Python?
  8. Should Node.js be built with ClangCL under Windows?

April 2024

  1. Careful with Pair-of-Registers instructions on Apple Silicon
  2. Large language models (e.g., ChatGPT) as research assistants
  3. How do you recognize an expert?
  4. How quickly can you break a long string into lines?
  5. Science and Technology links (April 13 2024)
  6. Greatest common divisor, the extended Euclidean algorithm, and speed!
  7. A simple algorithm to compute the square root of an integer, byte by byte
  8. C++ web app with Crow: early scalability results

March 2024

  1. Science and Technology links (March 31 2024)
  2. Fast and concise probabilistic filters in Python
  3. Passing recursive C++ lambdas as function pointers
  4. Measuring your system’s performance using software (Go edition)
  5. How to read files quickly in JavaScript
  6. How many political parties rule Canada? Fun with statistics

February 2024

  1. Book review: Theft of Fire by Devon Eriksen
  2. Measuring energy usage: regular code vs. SIMD code
  3. JSON Parsing: Intel Sapphire Rapids versus AMD Zen 4
  4. How fast is rolling Karp-Rabin hashing?

January 2024

  1. C23: a slightly better C
  2. How much memory bandwidth do large Amazon instances offer?
  3. Estimating your memory bandwidth
  4. Implementing the missing sign instruction in AVX-512

2023 82

December 2023

  1. Science and Technology links (December 30th 2023)
  2. Measuring the size of the cache line empirically
  3. Fast Buffer-to-String conversion in JavaScript with a Lookup Table
  4. How fast can you validate UTF-8 strings in JavaScript?

November 2023

  1. Parsing 8-bit integers quickly
  2. A simple WebSocket benchmark in Python
  3. A simple WebSocket benchmark in JavaScript: Node.js versus Bun
  4. Science and Technology links (November 12 2023)
  5. Generating arrays at compile-time in C++ with lambdas

October 2023

  1. Appending to an std::string character-by-character: how does the capacity grow?
  2. For processing strings, streams in C++ can be slow
  3. How many billions of transistors in your iPhone processor?
  4. Randomness in programming (with Go code)
  5. Web server ‘hello world’ benchmark : Go vs Node.js vs Nim vs Bun

September 2023

  1. Parsing integers quickly with AVX-512
  2. Transcoding Unicode strings at crazy speeds with AVX-512
  3. Locating ‘identifiers’ quickly (ARM NEON edition)
  4. Science and Technology links (September 2 2023)

August 2023

  1. Transcoding Latin 1 strings to UTF-8 strings at 18 GB/s using AVX-512
  2. How accurate is the birthday’s paradox formula?
  3. Transcoding UTF-8 strings to Latin 1 strings at 18 GB/s using AVX-512
  4. Coding of domain names to wire format at gigabytes per second
  5. Science and Technology links (August 6 2023)

July 2023

  1. Decoding base16 sequences quickly
  2. Science and Technology links (July 23 2023)
  3. Fast decoding of base32 strings
  4. Science and Technology links (July 16 2023)
  5. Recognizing string prefixes with SIMD instructions
  6. Stealth, not secrecy
  7. Packing a string of digits into an integer quickly
  8. Having fun with string literal suffixes in C++
  9. Parsing time stamps faster with SIMD instructions

June 2023

  1. Dynamic bit shuffle using AVX-512
  2. Science and Technology links (June 25 2023)
  3. Citogenesis in science and the importance of real problems
  4. Science and Technology links (June 11 2023)
  5. Parsing IP addresses crazily fast
  6. Science and Technogy links (June 3 2023)
  7. Peak credentialism

May 2023

  1. Expected performance of a Bloom filter
  2. The absurd cost of finalizers in Go
  3. Computing the UTF-8 size of a Latin 1 string quickly (ARM NEON edition)
  4. ARM instructions do “less work”?
  5. Science and Technology links (May 6 2023)
  6. Graviton 3, Apple M2 and Qualcomm 8cx 3rd gen: a URL parsing benchmark
  7. Under Linux, libSegFault and addr2line are underrated

April 2023

  1. Science and Technology links (April 29 2023)
  2. Hotspot performance engineering fails
  3. Vectorized trimming of line comments
  4. Science and Technology links (April 22 2023)
  5. Will emerging artificial intelligence boost research productivity?
  6. Defining interfaces in C++: concepts versus inheritance
  7. Defining interfaces in C++ with ‘concepts’ (C++20)
  8. Science and Technology links (April 15 2023)
  9. Interfaces are not free in Go
  10. 19 random digits is not enough to uniquely identify all human beings
  11. Consider using constexpr static function variables for performance in C++
  12. Science and Technology links (April 11 2023)
  13. Programming-language popularity by GitHub pull requests
  14. Are your memory-bound benchmarking timings normally distributed?
  15. What are we going to do about ChatGPT?

March 2023

  1. C++20: consteval and constexpr functions
  2. Can GPT pass my programming courses?
  3. Counting cycles and instructions on ARM-based Apple systems
  4. Runtime asserts are not free
  5. Precision, recall and why you shouldn’t crank up the warnings to 11
  6. Science and Technology links (March 11 2023)
  7. Trimming spaces from strings faster with SVE on an Amazon Graviton 3 processor
  8. Float-parsing benchmark: Regular Visual Studio, ClangCL and Linux GCC
  9. ARM vs Intel on Amazon’s cloud: A URL Parsing Benchmark

February 2023

  1. Regular Visual Studio versus ClangCL
  2. Computing the UTF-8 size of a Latin 1 string quickly (AVX edition)
  3. Science and Technology links (February 12 2023)
  4. Bit Hacking (with Go code)
  5. Serializing IPs quickly in C++

January 2023

  1. Move or copy your strings? Possible performance impacts
  2. International domain names: where does https://meßagefactory.ca lead you?
  3. Year 2022: Scientific progress
  4. Science and technology links (January 15 2023)
  5. Care is needed to use C++ std::optional with non-trivial objects
  6. Transcoding Unicode with AVX-512: AMD Zen 4 vs. Intel Ice Lake
  7. Emojis in domain names, punycode and performance

2022 58

December 2022

  1. Quickly checking that a string belongs to a small set
  2. Science and Technology links (December 25 2022)
  3. Fast base16 encoding
  4. The size of things in bytes
  5. Implementing ‘strlen’ using SVE
  6. Checking for the absence of a string, naive AVX-512 edition
  7. What is the memory usage of a small array in C++?
  8. Science and Technology links (December 11 2022)
  9. Fast midpoint between two integers without overflow
  10. Optimizing compilers reload vector constants needlessly

November 2022

  1. How big are your SVE registers ? (AWS Graviton)
  2. Generic number compression (zstd)
  3. Science and Technology links (November 26 2022)
  4. Making all your integers positive with zigzag encoding
  5. What is the size of a byte[] array in Java?
  6. Rounding modes: std::from_chars versus strtod/strtof
  7. A fast function to check your floating-point rounding mode
  8. Measuring the memory usage of your C++ program
  9. Modern vector programming with masked loads and stores

October 2022

  1. Book Review : Template Metaprogramming with C++
  2. Science and Technology links (October 16 2022)
  3. The number of comparisons needed to sort a shuffled array: qsort versus std::sort

September 2022

  1. A review of elementary data types : numbers and strings
  2. Optimizing compilers deduplicate strings and arrays
  3. Science and Technology links (September 16 2022)
  4. Escaping strings faster with AVX-512
  5. Science and Technology links (September 12 2022)

August 2022

  1. Catching sanitizer errors programmatically
  2. “Hello world” is slower in C++ than in C (Linux)
  3. Science and Technology links (August 7 2022)

July 2022

  1. Comparing strtod with from_chars (GCC 12)
  2. Round a direction vector to an 8-way compass
  3. Science and Technology links (July 23 2022)
  4. Negative incentives in academic research
  5. How quickly can you convert floats to doubles (and back)?
  6. Filtering numbers faster with SVE on Graviton 3 processors
  7. Go generics are not bad

June 2022

  1. Looking at assembly code with gdb
  2. Filtering numbers quickly with SVE on Amazon Graviton 3 processors
  3. Memory-level parallelism : Intel Ice Lake versus Amazon Graviton 3
  4. Data structure size and cache-line accesses

May 2022

  1. Parsing JSON faster with Intel AVX-512
  2. Avoid exception throwing in performance-sensitive code
  3. Faster bitset decoding using Intel AVX-512
  4. Fast bitset decoding using Intel AVX-512

April 2022

  1. Removing characters from strings faster with AVX-512
  2. An overview of version control in programming
  3. Floats have 15-digit accuracy in their normal range
  4. String representations are not unique: learn to normalize!

March 2022

  1. Converting integers to decimal strings faster with AVX-512
  2. Writing out large arrays in Go: binary.Write is inefficient for large arrays

February 2022

  1. Enforcement by software
  2. The Canadian Common CV and the captured academy
  3. How many digits in a product?
  4. The end of the monopolistic web?

January 2022

  1. SWAR explained: parsing eight digits
  2. What is the ‘range’ of a number type?
  3. How programmers make sure that their software is correct

2021 66

December 2021

  1. Science and Technology links (December 19th 2021)
  2. Science and Technology links (December 4th 2021)

November 2021

  1. Can you safely parse a double when you need a float?
  2. Science and Technology links (Novembre 28th 2021)
  3. Are tenured professors more likely to speak freely?
  4. Converting integers to fix-digit representations quickly
  5. Science and Technology links (Novembre 13rd 2021)
  6. Checking simple equations or inequalities with z3
  7. Stop spending so much time being trolled by billionaire corporations!

October 2021

  1. Science and Technology (October 31st 2021)
  2. In C, how do you know if the dynamic allocation succeeded?
  3. In C++, is empty() faster than comparing the size with zero?
  4. Science and Technology links (October 23rd 2021)
  5. Converting binary floating-point numbers to integers
  6. Science and Technology links (October 16th 2021)
  7. Calling a dynamically compiled function from Go
  8. Science and Technology links (October 10th 2021)
  9. For software performance, can you always trust inlining?
  10. Working in virtual reality
  11. Science and Technology links (October 3rd 2021)
  12. Word-aligned Bloom filters

September 2021

  1. Science and Technology links (September 26th 2021)
  2. New release of the simdjson library: version 1.0
  3. Science and Technology links (September 18th 2021)
  4. Random identifiers are poorly compressible
  5. How I debate

August 2021

  1. The big-load anti-pattern
  2. How fast can you pipe a large file to a C++ program?

July 2021

  1. Science and Technology links (July 31st 2021)
  2. Measuring memory usage: virtual versus real memory
  3. Faster sorted array unions by reducing branches
  4. Science and Technology links (July 10th 2021)

June 2021

  1. Compressing JSON: gzip vs zstd
  2. Science and Technology links (June 26th 2021)
  3. How long should you work on a problem ?
  4. Science and Technology links (June 12th 2021)
  5. Computing the number of digits of an integer even faster

May 2021

  1. Computing the number of digits of an integer quickly
  2. All models are wrong
  3. Science and Technology links (May 22nd 2021)
  4. Counting the number of matching characters in two ASCII strings
  5. Converting binary integers to ASCII characters: Apple M1 vs AMD Zen2
  6. Science and Technology links (May 15th 2021)
  7. Constructing arrays of Boolean values in Java
  8. Science and Technology links (May 1st 2021)

April 2021

  1. Ideal divisors: when a division compiles down to just a multiplication
  2. Some useful regular expressions for programmers
  3. A trichotomy of intellectual activity
  4. Science and Technology links (April 17th 2021)
  5. How fast can you sort arrays of integers in Java?
  6. My programming setup

March 2021

  1. Science and Technology links (March 27th 2021)
  2. Counting cycles and instructions on the Apple M1 processor
  3. Apple’s M1 processor and the full 128-bit integer product
  4. Science and Technology links (March 6th 2021)
  5. How does your programming language handle “minus zero” (-0.0)?

February 2021

  1. Parsing floating-point numbers really fast in C#
  2. Science and Technology links (February 13th 2021)
  3. On the cost of converting ASCII to UTF-16
  4. Science and Technology links (February 6th 2021)

January 2021

  1. Number Parsing at a Gigabyte per Second
  2. Science and Technology links (January 24th 2021)
  3. Science and Technology links (January 16th 2021)
  4. Science and Technology links (January 9th 2021)
  5. Memory access on the Apple M1 processor
  6. Peer-reviewed papers are getting increasingly boring

2020 85

December 2020

  1. My Science and Technology review for 2020
  2. Science and Technology links (December 26th 2020)
  3. In 2011, I predicted that the iPhone would have 1TB of storage in 2020
  4. Science and Technology links (December 19th 2020)
  5. Cognitive biases
  6. Virtual reality… millions but not tens of millions… yet
  7. Converting floating-point numbers to integers while preserving order
  8. ARM MacBook vs Intel MacBook: a SIMD benchmark
  9. ARM MacBook vs Intel MacBook
  10. Science and Technology (December 5th 2020)
  11. Interview by Adam Gordon Bell

November 2020

  1. Java Buffer types versus native arrays: which is faster?
  2. Science and Technology links (November 28th 2020)
  3. How fast does interpolation search converge?
  4. The disagreeable scientist conjecture
  5. Programming is social
  6. Double-blind peer review is a bad idea
  7. Science and Technology links (November 14th 2020)
  8. Xbox Series X and PlayStation 5: early impressions
  9. Benchmarking theorem provers for programming tasks: yices vs. z3
  10. How will the pandemic impact software programming jobs?

October 2020

  1. Science and Technology links (October 31st 2020)
  2. What the heck is the value of “-n % n” in programming languages?
  3. Ridiculously fast unicode (UTF-8) validation
  4. Science and Technology links (October 17th 2020)
  5. Why is 0.1 + 0.2 not equal to 0.3?
  6. Science and Technology links (October 3rd 2020)

September 2020

  1. How expensive is integer-overflow trapping in C++?
  2. Science and Technology links (September 19th 2020)
  3. Parsing floats in C++: benchmarking strtod vs. from_chars
  4. Good students find questions, not answers
  5. Science and Technology links (September 5th 2020)
  6. Sentinels can be faster

August 2020

  1. Science and Technology links (August 29th 2020)
  2. Science and Technology links (August 9th 2020)
  3. Performance tip: constructing many non-trivial objects is slow
  4. Science and Technology links (August 1st 2020)

July 2020

  1. Science and Technology links (July 25th 2020)
  2. Avoid character-by-character processing when performance matters
  3. Downloading files faster by tweaking headers
  4. The cost of runtime dispatch
  5. Science is the belief in the ignorance of experts
  6. Science and Technology links (July 11th 2020)

June 2020

  1. GNU GCC on x86 does not round floating-point divisions to the nearest value
  2. Science and Technology links (June 20th 2020)
  3. Computational overhead due to Docker under macOS
  4. Reusing a thread in C++ for better performance
  5. Science and Technology links (June 6th 2020)
  6. How Innovation Works (book review)
  7. The Go compiler needs to be smarter

May 2020

  1. Science and Technology links (May 30th 2020)
  2. Mapping an interval of integers to the whole 64-bit range, fairly?
  3. Programming inside a container
  4. Science and Technology links (May 16th 2020)
  5. Encoding binary in ASCII very fast
  6. Science and Technology links (May 2nd 2020)

April 2020

  1. For case-insensitive string comparisons, avoid char-by-char functions
  2. Sampling efficiently from groups
  3. Science and Technology links (April 25th 2020)
  4. Rounding integers to even, efficiently
  5. Science and Technology links (April 11th 2020)
  6. Multiplying backward for profit
  7. Science and Technology links (April 4th 2020)

March 2020

  1. We released simdjson 0.3: the fastest JSON parser in the world is even better!
  2. Science and Technology links (March 28th 2020)
  3. Avoiding cache line overlap by replacing one 256-bit store with two 128-bit stores
  4. Number of atoms in the universe versus floating-point values
  5. Science and Technology links (March 14th 2020)
  6. Fast float parsing in practice
  7. Science and Technology links (March 7th 2020)
  8. Will calling “free” or “delete” in C/C++ release the memory to the system?

February 2020

  1. Science and Technology links (February 29th 2020)
  2. Fast divisionless computation of binomial coefficients
  3. Science and Technology links (February 22nd 2020)
  4. My thoughts on how research funding is attributed in Canada to Computer Science
  5. Science and Technology links (February 8th 2020)
  6. Research should not stop with the research paper
  7. Science and Technology links (February 1st 2020)

January 2020

  1. Cost of a thread in C++ under Linux
  2. Science and Technology links (January 25th 2020)
  3. Filling large arrays with zeroes quickly in C++
  4. Allocating large blocks of memory: bare-metal C++ speeds
  5. How fast can you allocate a large block of memory in C++?
  6. Science and Technology links (January 11th 2020)
  7. How I teach database design

2019 112

December 2019

  1. My Science and Technology review for 2019
  2. Science and Technology links (December 21st 2019)
  3. Xor Filters: Faster and Smaller Than Bloom Filters
  4. A look back to my 2010 predictions for 2020
  5. Science and Technology links (December 14th 2019)
  6. Are 64-bit random identifiers free from collision?
  7. Amazon’s new ARM servers: Graviton 2
  8. Science and Technology links (December 7th 2019)
  9. AMD Zen 2 and branch mispredictions
  10. Instructions per cycle: AMD Zen 2 versus Intel

November 2019

  1. Better computational complexity does not imply better speed
  2. Memory parallelism: AMD Rome versus Intel
  3. Cloud computing: a story of incentives
  4. Science and Technology links (November 16th 2019)
  5. Unrolling your loops can improve branch prediction
  6. Adding a (predictable) branch to existing code can increase branch mispredictions

October 2019

  1. Parsing numbers in C++: streams, strtod, from_chars
  2. Science and Technology links (October 26th 2019)
  3. How expensive is it to parse numbers from a string in C++?
  4. Benchmarking is hard: processors learn to predict branches
  5. Mispredicted branches can multiply your running times
  6. Science and Technology (October 12th 2019)
  7. The price of a MacBook Air worldwide

September 2019

  1. Science and Technology links (September 28th 2019)
  2. Doubling the speed of std::uniform_int_distribution in the GNU C++ library (libstdc++)
  3. Science and Technology links (September 21st 2019)
  4. My kindergarten story
  5. How far can you scale interleaved binary searches?
  6. Science and Technology links (September 14th 2019)
  7. Speeding up independent binary searches by interleaving them
  8. Science and Technology links (September 7th 2019)
  9. Passing integers by reference can be expensive…

August 2019

  1. Science and Technology links (August 31st 2019)
  2. How fast can scancount be?
  3. Science and Technology links (August 24th 2019)
  4. Science and Technology links (August 17th 2019)
  5. Faster threshold queries with cache-sensitive scancount
  6. Science and Technology links (August 10th 2019
  7. Science and Technology links (August 3rd 2019)
  8. JSON parsing: simdjson vs. JSON for Modern C++
  9. A new release of simdjson: runtime dispatching, 64-bit ARM support and more

July 2019

  1. Science and Technology links (July 27th 2019)
  2. How fast can a BufferedReader read lines in Java?
  3. Programming competition with $1000 in prizes: make my code readable!
  4. Arbitrary byte-to-byte maps using ARM NEON?
  5. Science and Technology links (July 20th 2019)
  6. Science and Technology links (July 13th 2019)
  7. Parsing JSON quickly on tiny chips (ARM Cortex-A72 edition)
  8. Parsing JSON using SIMD instructions on the Apple A12 processor
  9. Science and Technology links (July 6th, 2019)
  10. A fast 16-bit random number generator?

June 2019

  1. Science and Technology links (June 29th 2019)
  2. Bounding the cost of the intersection between a small array and a large array
  3. Science and Technology links (June 22nd 2019)
  4. How fast is getline in C++?
  5. What should we do with “legacy” Java 8 applications?
  6. Science and Technology links (June 15th 2019)
  7. Science and Technology links (June 7th 2019)
  8. Nearly Divisionless Random Integer Generation On Various Systems
  9. Science and Technology links (June 1st 2019)

May 2019

  1. Science and Technology links (May 25th 2019)
  2. Measuring the system clock frequency using loops (Intel and ARM)
  3. Science and Technology links (May 18th 2019)
  4. Building better software with better tools: sanitizers versus valgrind
  5. Bitset decoding on Apple’s A12
  6. Setting up a ROCKPro64 (powerful single-card computer)
  7. Science and Technology links (May 11th 2019)
  8. Almost picking N distinct numbers at random
  9. Science and Technology links (May 4th 2019)
  10. Really fast bitset decoding for “average” densities

April 2019

  1. Science and Technology links (April 27th 2019)
  2. Speeding up a random-access function?
  3. The shopper’s dilemma: wait for new technology or buy now?
  4. Science and Technology links (April 20th 2019)
  5. Parsing short hexadecimal strings efficiently
  6. Science and Technology links (April 13th 2019)
  7. Why are unrolled loops faster?
  8. Science and Technology links (April 6th 2019)

March 2019

  1. Science and Technology links (March 30th 2019)
  2. Java is not a safe language
  3. Hasty comparison: Skylark (ARM) versus Skylake (Intel)
  4. Technological aging
  5. Science and Technology links (March 23rd 2019)
  6. ARM and Intel have different performance characteristics: a case study in random number generation
  7. The fastest conventional random number generator that can pass Big Crush?
  8. Don’t read your data from a straw
  9. Science and Technology links (March 16th 2019)
  10. Age and the productivity of professors
  11. Multiplying by the inverse is not the same as the division
  12. Science and Technology links (March 9th 2019)
  13. Should our kids use pencils or keyboards?
  14. Science and Technology links (March 2nd, 2019)
  15. Parsing JSON quickly: early comparisons in the wild

February 2019

  1. Science and Technology links (February 24th, 2019)
  2. More fun with fast remainders when the divisor is a constant
  3. Science and Technology links (February 16th, 2019)
  4. My iPad Pro experiment: almost two years later
  5. Science and Technology links (February 9th, 2019)
  6. Faster remainders when the divisor is a constant: beating compilers and libdivide
  7. Science and Technology links (February 3rd, 2019)
  8. New Web host
  9. Web caching: what is the right time-to-live for cached pages?

January 2019

  1. My blog can’t keep up: 500 errors all over
  2. What is the space overhead of Base64 encoding?
  3. Data scientists need to learn about significant digits
  4. Rethinking Hamming’s questions
  5. Science and Technology links (January 26th, 2019)
  6. Science and Technology links (January 19th, 2019)
  7. Faster intersections between sorted arrays with shotgun
  8. Science and Technology links (January 12th, 2019)
  9. Science and Technology links (January 5th, 2019)
  10. Memory-level parallelism: Intel Skylake versus Intel Cannonlake

2018 122

December 2018

  1. Important science and technology findings in 2018
  2. Science and Technology links (December 29th, 2018)
  3. Science and Technology links (December 22nd 2018)
  4. Fast Bounded Random Numbers on GPUs
  5. Sorting strings properly is stupidly hard
  6. Science and Technology links (December 15th 2018)
  7. Science and Technology links (December 8th 2018)
  8. Asking the right question is more important than getting the right answer
  9. Science and Technology links (December 1st 2018)

November 2018

  1. Quickly sampling from two arrays (C++ edition)
  2. Science and Technology links (November 24th 2018)
  3. Science and Technology links (November 18th 2018)
  4. Simple table size estimates and 128-bit numbers (Java Edition)
  5. Memory-level parallelism: Intel Skylake versus Apple A12/A12X
  6. Science and Technology links (November 10th, 2018)
  7. Measuring the memory-level parallelism of a system using a small C++ program?
  8. Science and Technology links (November 3rd, 2018)

October 2018

  1. Science and Technology links (October 28th, 2018)
  2. Is WebAssembly faster than JavaScript?
  3. Science and Technology links (October 20th, 2018)
  4. Validating UTF-8 bytes using only 0.45 cycles per byte (AVX edition)
  5. Validating UTF-8 bytes (Java edition)
  6. Nobel-prize winner Romer on innovation and higher education
  7. Science and Technology links (October 13th, 2018)
  8. Smart bracelet: my experience with the Mi Band 3
  9. Science and Technology links (October 6th, 2018)
  10. Quickly parsing eight digits

September 2018

  1. Quickly identifying a sequence of digits in a string of characters
  2. Science and Technology links (September 30th, 2018)
  3. Science and Technology links (September 22nd, 2018)
  4. On the state of virtual-reality gaming
  5. Science and Technology links (September 15th, 2018)
  6. Science and Technology links (September 8th, 2018)
  7. AVX-512: when and how to use these new instructions
  8. Per-core frequency scaling and AVX-512: an experiment
  9. Science and Technology links (September 1st, 2018)

August 2018

  1. AVX-512 throttling: heavy instructions are maybe not so dangerous
  2. Science and Technology links (August 24th, 2018)
  3. Trying harder to make AVX-512 look bad: my quantified and reproducible results
  4. Performance of ranged accesses into arrays: modulo, multiply-shift and masks
  5. Science and Technology links (August 19th, 2018)
  6. The dangers of AVX-512 throttling: a 3% impact on Xeon Gold processors?
  7. Fast strongly universal 64-bit hashing everywhere!
  8. Science and Technology links (August 10th, 2018)
  9. Science and Technology links (August 4th, 2018)

July 2018

  1. Getting 4 bytes or a full cache line: same speed or not?
  2. Science and Technology links (July 27th, 2018)
  3. Writing about software and building software are different jobs
  4. It is more complicated than I thought: -mtune, -march in GCC
  5. Are vectorized random number generators actually useful?
  6. Science and Technology links (July 21st, 2018)
  7. Accelerating Conway’s Game of Life with SIMD instructions
  8. Science and Technology links (July 15th, 2018)
  9. Science and Technology links (July 15th, 2018)
  10. Are fungi making us sick?
  11. Science and Technology links (July 6th, 2018)
  12. How quickly can you compute the dot product between two large vectors?
  13. Income, wealth, intelligence and the fall of the American empire
  14. Predicting the truncated xorshift32* random number generator

June 2018

  1. Science and Technology links (June 29th, 2018)
  2. Data processing on modern hardware
  3. Science and Technology links (June 24th, 2018)
  4. Roaring Bitmaps in JavaScript
  5. Science and Technology links (June 15th, 2018)
  6. Emojis, Java and Strings
  7. Science and Technology links (June 9th, 2018)
  8. Vectorizing random number generators for greater speed: PCG and xorshift128+ (AVX-512 edition)
  9. Science and Technology links (June 2nd, 2018)

May 2018

  1. Greater speed in memory-bound graph algorithms with just straight C code
  2. Science and Technology links (May 26th, 2018)
  3. Gender and peer review
  4. Graph algorithms and software prefetching
  5. Science and Technology links (May 18th, 2018)
  6. Validating UTF-8 strings using as little as 0.7 cycles per byte
  7. Is research sick?
  8. Science and Technology links (May 11th, 2018)
  9. How quickly can you check that a string is valid unicode (UTF-8)?
  10. Science and Technology links (May 5th, 2018)
  11. How fast can you parse JSON?

April 2018

  1. Is software prefetching (__builtin_prefetch) useful for performance?
  2. Science and Technology links (April 29th, 2018)
  3. Why a touch of secrecy can help creative work
  4. Enough with the intrusive updates!
  5. Science and Technology links (April 22nd, 2018)
  6. Iterating in batches over data structures can be much faster…
  7. Introducing GapminderVR: Data Visualization in Virtual Reality
  8. Science and Technology links (April 13th, 2018)
  9. For greater speed, try batching your out-of-cache data accesses
  10. Science and Technology links (April 7th, 2018)
  11. Caching hash values for speed (Swift-language edition)

March 2018

  1. Science and Technology links (March 30th, 2018)
  2. Should you cache hash values even for trivial classes?
  3. When accessing hash tables, how much time is spent computing the hash functions?
  4. When shuffling large arrays, how much time can be attributed to random number generation?
  5. Science and Technology links (March 23rd, 2018)
  6. Science and Technology links (March 16th, 2018)
  7. Iterating over hash sets quickly in Java
  8. Science and Technology links (March 9th, 2018)
  9. Iterating over set bits quickly (SIMD edition)
  10. Science and Technology links (March 2nd, 2018)

February 2018

  1. Vectorized shifts: are immediates faster?
  2. Science and Technology links (February 24th, 2018)
  3. Iterating over set bits quickly
  4. Science and Technology links (February 16th, 2018)
  5. Science and Technology links (February 9th, 2018)
  6. Don’t underestimate the nerds
  7. Science and Technology links (February 2nd, 2018)

January 2018

  1. Picking distinct numbers at random: benchmarking a brilliant algorithm (JavaScript edition)
  2. Science and Technology links (January 26th, 2018)
  3. Initializing arrays quickly in Swift: be wary of Sadun’s initializers
  4. Microbenchmarking is hard: virtual machine edition
  5. Science and Technology links (January 19th, 2018)
  6. Ridiculously fast base64 encoding and decoding
  7. Microbenchmarking calls for idealized conditions
  8. Science and Technology links (January 12th, 2018)
  9. How fast can you bit-interleave 32-bit integers? (SIMD edition)
  10. How fast can you bit-interleave 32-bit integers?
  11. Science and Technology links (January 5th, 2018)
  12. Can 32-byte alignment alleviate 4K aliasing?
  13. Don’t make it appear like you are reading your own recent writes
  14. Year 2017: technological highlights
  15. Multicore versus SIMD instructions: the “fasta” case study

2017 132

December 2017

  1. Science and Technology links (December 29th, 2017)
  2. Personal reflections on 2017
  3. Science and Technology links (December 22nd, 2017)
  4. Science and Technology links (December 15th, 2017)
  5. If all your attributes are independent two-by-two… are all your attributes independent?
  6. No, a supercomputer won’t make your code run faster
  7. Science and Technology links (December 8th, 2017)
  8. Simplistic programming is underrated
  9. Science and Technology links (December 1st, 2017)

November 2017

  1. Bit hacking versus memoization: a Stream VByte example
  2. Science and Technology links (November 24th, 2017)
  3. How often do superior alternatives fail to catch on?
  4. You are your tools
  5. Do relational databases evolve toward rigidity?
  6. Science and Technology links (November 17th, 2017)
  7. Fast exact integer divisions using floating-point operations (ARM edition)
  8. Fast exact integer divisions using floating-point operations
  9. Fast software is a discipline, not a purpose
  10. China is catching to the USA, while Japan is being left behind
  11. Science and Technology links (November 11th, 2017)
  12. How should you build a high-performance column store for the 2020s?
  13. Should computer scientists keep the Lena picture?
  14. Are universities an egalitarian force?
  15. Science and Technology links (November 3rd, 2017)
  16. The dual-shotgun theorem of software engineering

October 2017

  1. A decade of using text-mining for citation function classification
  2. Synthesized hash functions in Swift 4.1 (and why Java programmers should be envious)
  3. Science and Technology links (October 27th, 2017)
  4. Fast integer compression with Stream VByte on ARM Neon processors
  5. Science and Technology links (October 20th, 2017)
  6. Why virtual reality (VR) might matter more than you think….
  7. The Harvey-Weinstein scientific model
  8. Science and Technology links (October 13th, 2017)
  9. Bee-level intelligence
  10. Post-Blade-Runner trauma: From Deep Learning to SQL and back
  11. On Blade Runner 2049
  12. Science and Technology links (October 6th, 2017)
  13. My iPad Pro experiment

September 2017

  1. Stream VByte: first independent assessment
  2. How smart is Swift with abstraction? A trivial experiment with protocols
  3. Science and Technology links (September 29th, 2017)
  4. Stream VByte: breaking new speed records for integer compression
  5. Runtime constants: Swift
  6. Runtime constants: Go vs. C++
  7. Benchmarking algorithms to visit all values in an array in random order
  8. Science and Technology links (September 22th, 2017)
  9. Swift as a low-level programming language?
  10. Visiting all values in an array exactly once in “random order”
  11. Computing the inverse of odd integers
  12. The Xorshift1024* random number generator fails BigCrush
  13. How fast are malloc_size and malloc_usable_size in C?
  14. Science and Technology links (September 15th, 2017)
  15. Scholarship is conservative, tinkering is progressive
  16. The Xorshift128+ random number generator fails BigCrush
  17. Science and Technology links (September 8th, 2017)
  18. Go does not inline functions when it should
  19. Science and Technology links (September 1st, 2017)
  20. DeepL is as good as human translators?

August 2017

  1. Parsing comma-separated integers in Java
  2. Quantifying the performance benefits of Go 1.9 on bitsets
  3. Science and Technology links (August 25th, 2017)
  4. Testing non-cryptographic random number generators: my results
  5. “Cracking” random number generators (xoroshiro128+)
  6. Science and Technology links (August 18th, 2017)
  7. On Melissa O’Neill’s PCG random number generator
  8. Bubbling up is lowering empathy at a civilization scale
  9. Optimizing polynomial hash functions (Java vs. Swift)
  10. Science and Technology links (August 11th, 2017)
  11. Science and Technology links (August 4th, 2017)

July 2017

  1. Science and Technology links (July 27th, 2017)
  2. Science and Technology links (July 21st, 2017)
  3. What is “modern” programming?
  4. Science and Technology links (July 14th, 2017)
  5. Pruning spaces faster on ARM processors with Vector Table Lookups
  6. Science and Technology links (July 7th, 2017)
  7. Are your strings immutable?
  8. Pruning spaces from strings quickly on ARM processors

June 2017

  1. Science and Technology links (July 1st, 2017)
  2. Video game review… Nier: Automata
  3. Science and Technology links (June 23rd, 2017)
  4. Top speed for top-k queries
  5. Science and Technology links (June 16th, 2017)
  6. QuickSelect versus binary heap for top-k queries
  7. Science and Technology links (June 9th, 2017)
  8. Quickly returning the top-k elements: computer science vs. the real world
  9. Science and Technology links (June 2nd, 2017)

May 2017

  1. Unsigned vs. signed integer arithmetic
  2. Science and Technology links (May 26th, 2017)
  3. Counting exactly the number of distinct elements: sorted arrays vs. hash sets?
  4. Science and Technology links (May 18th, 2017)
  5. Educational backgrounds of the CEOs of the top corporations in the US
  6. Has the Internet killed real estate agents yet?
  7. My review of Change Agent: A Novel (by Daniel Suarez)
  8. Science and Technology links (May 12th, 2017)
  9. Signed integer division by a power of two can be expensive!
  10. Science and Technology links (May 5th, 2017)

April 2017

  1. Science and Technology links (April 28th, 2017)
  2. Quickly pruning elements in SIMD vectors using the simdprune library
  3. The real lesson of the human genome project
  4. Science and Technology links (April 21st, 2017)
  5. “I have read all of your papers”
  6. Science and Technology links (April 14th, 2017)
  7. Removing duplicates from lists quickly
  8. Robots have not yet stolen our jobs
  9. Science and Technology links (April 7th, 2017)
  10. How much are elite universities worth?
  11. My review of ‘Ghost in the Shell’ (2017)

March 2017

  1. Compressed bitset libraries in C and C++
  2. Science and Technology links (March 30, 2017)
  3. Never reason from averages
  4. The technology of Mass Effect Andromeda
  5. Science and Technology links (March 24, 2017)
  6. Does software performance still matter?
  7. Science and Technology links (March 17, 2017)
  8. Stable Priority Queues?
  9. Science and Technology links (March 10, 2017)
  10. College and inequality
  11. The technology of Logan (2017 Wolverine movie set in 2029)

February 2017

  1. How many floating-point numbers are in the interval [0,1]?
  2. Tech jobs are already largely automated
  3. Thoughts on my new laptop (Dell XPS 13 with Windows 10)
  4. How fast can you count lines?
  5. Sorting sorted arrays in Swift
  6. Montreal researchers “prove” that aging is the result of a genetic program

January 2017

  1. Maps and sets can have quadratic-time performance
  2. How expensive are the union and intersection of two unordered_set in C++?
  3. Deep learning: the silver bullet?
  4. Resizing arrays can be slow in Swift
  5. How quickly can you remove spaces from a string?
  6. Best programming language for high performance (January 2017)?
  7. Predicting the future job market: the librarians
  8. Betting against techno-unemployment

2016 81

December 2016

  1. Can your C compiler vectorize a scalar product?
  2. The threat of technological unemployment
  3. Don’t let the experts define science!
  4. Performance overhead when calling assembly from Go
  5. What is a useful theory?
  6. Science and technology: what happened in 2016
  7. How to build robust systems
  8. Don’t assume that safety comes for free: a Swift case study

November 2016

  1. Getting a job in the software industry
  2. Software evolves by natural selection
  3. On metadata
  4. Framed in the past

October 2016

  1. My review of Deus Ex: Mankind Divided (video game)
  2. Who is keeping an eye on the tech companies?
  3. Update to my VR bet with Greg Linden
  4. Intel will add deep-learning instructions to its processors
  5. A case study in the performance cost of abstraction (C++’s std::shuffle)
  6. Variable-length strings can be expensive

September 2016

  1. Can Swift code call C code without overhead?
  2. Sorting already sorted arrays is much faster?
  3. Swift versus Java : the bitset performance test
  4. My thoughts on Swift
  5. The rise of dark circuits
  6. The memory usage of STL containers can be surprising
  7. The new C standards are worth it
  8. Starting high school in 2016
  9. Function signature: how do you order parameters?
  10. Are there too many people?

August 2016

  1. The rate-of-living theory is wrong
  2. Innovation as a Fringe Activity
  3. Faster dictionary decoding with SIMD instructions
  4. How many reversible integer operations do you know?
  5. Let us talk about the Luddite problem…
  6. Combine smart people with crazily hard projects

July 2016

  1. Common sense in artificial intelligence… by 2026?
  2. Accelerating PHP hashing by “unoptimizing” it
  3. Augmented reality becomes mainstream
  4. Virtual Reality: First impressions with the HTC Vive

June 2016

  1. Fast random shuffling
  2. A fast alternative to the modulo reduction
  3. I do not use a debugger
  4. How fast is tabulation-based hashing? The downsides of Zobrist…
  5. The strange case of the copyright of open-source software
  6. To be smart, work on problems you care about

May 2016

  1. Enough with the bogus medical studies!
  2. The surprising cleverness of modern compilers
  3. We are passing the Turing test right on schedule
  4. Professors intentionally slow down science to make themselves look better
  5. Email: how to be polite and efficient

April 2016

  1. Is software a neutral agent?
  2. We know a lot less than we think, especially about the future.
  3. How will you die? Cancer, Alzheimer’s, Stroke?
  4. The powerful hacker culture
  5. No more leaks with sanitize flags in gcc and clang
  6. How close are AI systems to human-level intelligence? The Allen AI challenge.
  7. Narrative illusions
  8. Being shallow is rational
  9. Could virtual-reality make us smarter?
  10. Setting up a “robust” Minecraft server (Java Edition) on a Raspberry Pi

March 2016

  1. What thirty years of technology looks like: the early high-school years
  2. Declarative programming is a dead-end for the lowly programmer
  3. What the heck is interesting research?
  4. Ranged random-number generation is slow in Python…
  5. Biology and computing are more alike than you think…
  6. Artificial intelligence is mostly a matter of engineering?
  7. Web plasticity
  8. It is easy to lose sight of why we do things…
  9. Statistics is overrated: the rise of data science

February 2016

  1. My next bet: VR is going to take off in the next 3 years…
  2. Lost my bet: the PC isn’t dead… yet
  3. Don’t beat them, make them irrelevant
  4. Things you have probably not seen coming…
  5. Cultivating weirdness
  6. Beyond the PC toward virtual and augmented reality
  7. Imagining the future trumps intelligence…
  8. Default random-number generators are slow

January 2016

  1. More of Vinge’s predictions for 2025…
  2. Consciousness and free will are illusions: you are just a robot
  3. The Cray supercomputer, the iPhone and blood
  4. Revisiting “Holy Fire” (Bruce Sterling, 1996)
  5. Pac-Man running at 1 million frames per second

2015 59

December 2015

  1. My most popular posts in 2015 (part II)
  2. My most popular posts in 2015… (part I)
  3. Your software should follow your hardware: the CLHash example
  4. The courage to face what we do not understand
  5. The virtuous circle of fantasy
  6. Amazing technologies from the year 2015…
  7. Are we really testing an anti-aging pill? And what does it mean?
  8. The mysterious aging of astronauts

November 2015

  1. Being ever more productive… is a duty
  2. Is peer review slowing down science and technology?
  3. Identifying influential citations: it works live today!
  4. Is artificial intelligence going to wipe us out in 30 years?

October 2015

  1. Crazily fast hashing with carry-less multiplications
  2. Faster hashing without effort
  3. On the memory usage of maps in Java
  4. Where are all the search trees?
  5. Secular stagnation: we are trimming down
  6. Predicting the near future is a crazy, impossible game
  7. JavaScript and fast data structures: some initial experiments
  8. Foolish enough to leave important tasks to a mere human brain?

September 2015

  1. Could big data and wearables help the fight against diseases?
  2. The “consensus” is sometimes wrong
  3. The hacker culture is winning
  4. Hackers vs. Academics: who is responsible for progress?
  5. Revisiting Vernor Vinge’s “predictions” for 2025

August 2015

  1. What a technology geek sees when traveling abroad
  2. Computing in 2025… what can we expect?
  3. The dystopia you should fear
  4. The exponential cost of progress
  5. My predictions for 2040
  6. Coping with accelerating progress: no more five-year plan

July 2015

  1. What ten years teaching a technical topic in college taught me…
  2. We need to go beyond the web
  3. Going beyond our limitations
  4. Simple techniques to improve your health in 2015
  5. Would an artificial intelligence “grow old”?

June 2015

  1. The case for techno-optimism
  2. Aging is a software bug

May 2015

  1. Are you a techno-optimist? (A review of Tomorrowland)
  2. Putting the evil academic publishers in perspective
  3. Old people are not very sharp, are they?
  4. Do better written papers get more citations?

April 2015

  1. Basic email skills
  2. To be creative, work alone
  3. Was life better in the 1970s?
  4. Evil abbreviations in programming languages

March 2015

  1. Accelerating intersections with SIMD instructions
  2. Good ideas are overrated
  3. Other useless school trivia: the quadratic formula
  4. On rote memorization and antiquated skills
  5. The mathematics we teach our kids…

February 2015

  1. The hopeless ones become college professors
  2. Large well-funded laboratories…
  3. Lectures are the lazy person’s approach to education
  4. Your brain and its software patches
  5. How do you become an expert?

January 2015

  1. Knauff and Nejasmic recommend banning LaTeX
  2. Fast unary decoding
  3. Theory lags practice

2014 55

December 2014

  1. How to learn efficiently
  2. MOOCs are closed platforms… and probably doomed
  3. Optimizing polymorphic code in Java
  4. The Smartest Kids in the World: stories from Finland, Poland and South Korea
  5. Academia as an ‘anxiety machine’
  6. When bad ideas will not die: from classical AI to Linked Data

November 2014

  1. Perfectionism is not the same as having high standards
  2. Why competitive people are often dumb and boring
  3. The hubris of teachers
  4. Forcefully boring young people is necessary…

October 2014

  1. Bricolage by smart people
  2. Having your cat declawed means having its fingers amputated
  3. Coffee is probably not killing your productivity

September 2014

  1. The week-end freedom test
  2. Academia or industry?
  3. Referendums and sovereignty
  4. Transemployment: creating jobs out of thin air
  5. Paper books are the new vinyl records

August 2014

  1. Though unrefereed, arXiv has a better h-index than most journals…
  2. Expert performance and training: what we really know
  3. Should we train more people as programmers?
  4. A culture of envy
  5. The insanity of research grant proposals

July 2014

  1. Predicting your future performance
  2. Potentially bogus freelancing advice
  3. Extrinsic motivations are harmful…
  4. True success is more than winning a zero-sum game

June 2014

  1. Toys on my desk (June 2014)
  2. Software performance is… counterintuitive

May 2014

  1. Books on my desk (May 2014)
  2. You shouldn’t use a spreadsheet for important work (I mean it)
  3. Why I still play video games
  4. Decoding over 4 billion integers per second in C
  5. Does moving to a better university make you a better researcher?
  6. Have Americans reached peak scholarship?

April 2014

  1. Seth Roberts and research
  2. How are the bees doing?
  3. Do you realize that you are using random hashing?
  4. Science: ideals vs. reality
  5. The financial value of open source software
  6. Probabilities and the C++ standard
  7. Don’t study latin if you want to become a better programmer

March 2014

  1. Technology sets the bar higher
  2. Should you get a PhD?
  3. Elegance as a luxury

February 2014

  1. Probabilities in computing: they may not mean what you think they mean
  2. The myth of the scientist as a disinterested individual
  3. Getting good performance in Go by rewriting parts in C?
  4. The rise to power of computer scientists
  5. Compression is never worth slowing down your code?

January 2014

  1. To be smarter, try being crazier?
  2. Are C++ and Java declining?
  3. Why is the NSA grabbing all your private data?
  4. Why are there so many science PhDs?
  5. Life is sweeter than you think in 2014…

2013 64

December 2013

  1. When delegating… consider quality, maintenance and learning
  2. Fastest way to compute the greatest common divisor
  3. On human intelligence… a perspective from computer science
  4. Even faster bitmap decoding
  5. The day I subscribed to a dozen porn sites…
  6. Do we need academic copyright? Some historical perspective
  7. Is programming as cool as basketball?
  8. If you are serious about climate change… stop attending conferences?

November 2013

  1. Are regular folks doomed?
  2. Not all citations are equal: identifying key citations automatically
  3. Life is short: pick good ideas!
  4. Who plays nice? Who plays rough?
  5. Infinite storage: we are almost there…

October 2013

  1. People who make you feel stupid…
  2. We need more than spam filters: we need bona fide assistants!
  3. Toward Star Trek economics
  4. What are the genuinely useful ideas in programming?
  5. The written word took over the world

September 2013

  1. Why can’t you find a job with a Stanford computer science PhD?
  2. What do computer scientists know about performance?
  3. To solve hard problems, you need to use bricolage
  4. Are 8-bit or 16-bit counters faster than 32-bit counters?
  5. To succeed, adopt the post-industrial view

August 2013

  1. Funding science: When bureaucrats get out of control
  2. Picking N distinct numbers at random: how to do it fast?
  3. Privacy and the Internet: Is Facebook evil?

July 2013

  1. Honey bees are not going extinct
  2. Big-O notation and real-world performance
  3. Should computer scientists run experiments?
  4. Fast integer compression in Java

June 2013

  1. Staying sharp requires “intellectual gardening”
  2. Hashing and the Birthday paradox: a cautionary tale
  3. Meetings are like sex
  4. Why I never give straight answers

May 2013

  1. Three questions about e-learning in college
  2. A criticism of computer science: models or modèles?
  3. How to be effective at open source: by programmers, for programmers

April 2013

  1. P equal to NP and all that
  2. You probably shouldn’t use a spreadsheet for important work
  3. Share your software early: the Reinhart-Rogoff case
  4. The irony of “we are the 99 percent”
  5. Do we lose intelligence and creativity as we grow older?
  6. We are sentenced to permanent cognitive stretching
  7. We need to get a lot better at imagining the future

March 2013

  1. Advanced tips for dealing with your email inbox
  2. We are getting smarter as a matter of survival
  3. Is genetically engineered intelligence worth it?
  4. Current Daylight saving time policies are insane
  5. Do NULL markers in SQL cause any harm?
  6. Where are the “big problem” jobs?

February 2013

  1. Does academic research cause economic growth?
  2. Peer review without journals or conferences
  3. What kind of researcher are you?
  4. We are publishing a lot more! How will we cope?
  5. The big-O notation is a teaching tool
  6. How fast should your dynamic arrays grow?

January 2013

  1. Is learning useless stuff good for you?
  2. XML for databases: a dead idea
  3. How I learned mathematics (as a kid)
  4. Government regulations… as software
  5. Governments are full of bugs
  6. Experience is everything
  7. Are CAPTCHAs a good idea?
  8. Reflecting on 2012

2012 53

December 2012

  1. Why do students pay for the research professors do?
  2. A simple trick to get things done even when you are busy

November 2012

  1. Why I like the new C++
  2. What I do with my time
  3. The learning pill
  4. Fast sets of integers
  5. Should you follow the experts?

October 2012

  1. Is reading memory faster than writing on a PC?
  2. When is a bitmap faster than an integer list?
  3. You cannot scale creativity
  4. Will I get a job with this degree?

September 2012

  1. How well does peer review work?
  2. How to be happier while annoying your wife
  3. Fast integer compression: decoding billions of integers per second
  4. Will tablets kill PCs?
  5. Organizations would not pass the Turing test
  6. Your programming language does not know about elementary mathematics

August 2012

  1. To improve your intellectual productivity
  2. Does time fix all?
  3. On feeding your CPU with data
  4. A post-industrial point of view

July 2012

  1. The Internet is a product of the post-industrial age
  2. Is C++ worth it?
  3. Why we make up jobs out of thin air
  4. Bytes or octets?

June 2012

  1. Which is fastest: read, fread, ifstream or mmap?
  2. Do not waste time with STL vectors
  3. On the quality of academic software

May 2012

  1. Data alignment for speed: myth or reality?
  2. Creating incentives for better science
  3. Summer reading recommendations

April 2012

  1. Punk money: how you can print your own currency… legally
  2. Computer scientists need to learn about significant digits
  3. Let us abolish page limits in scientific publications
  4. How to manipulate the masses by language alone
  5. Bit packing is fast, but integer logarithm is slow
  6. It is what you do, not what you own

March 2012

  1. Publicly available large data sets for database research
  2. Do we need copyright?
  3. From counting citations to measuring usage (help needed!)
  4. How fast is bit packing?
  5. I’m an introvert. And that’s ok.

February 2012

  1. What happens when you get more Ph.D.s?
  2. Bitmaps are surprisingly efficient
  3. Effective compression using frame-of-reference and delta coding

January 2012

  1. Two rules for teaching in the XXIst century
  2. How to revise research papers after receiving harsh reviews
  3. Open access journals in Computer Science
  4. Should you boycott academic publishers?
  5. Use random hashing if you care about security?
  6. Open science: why is it so hard?
  7. Do we need patents?
  8. Are you a gold prospector, or a construction worker?

2011 64

December 2011

  1. My favorite posts from 2011
  2. Compressing document-oriented databases by rewriting your documents
  3. Dealing with harsh criticism

November 2011

  1. 3 surprising facts about the computation of scalar products
  2. Are Relational Databases good for anything anymore?
  3. Where do debt, credit and currencies come from?
  4. Real scientists never report fraud
  5. My favorite LaTeX editor for MacOS: Texpad

October 2011

  1. It is not where you work, but who you work with
  2. How database design fails us, and what to do about it
  3. True scientists are irreverent
  4. Why aren’t we getting richer? The scarring tissue theory
  5. Where does innovation come from?

September 2011

  1. Two 32-bit hash functions from a 64-bit hash function?
  2. Emerging knowledge is a private business
  3. You think that users are faceless objects? You are obsolete!
  4. Science is self-regulatory… really?

August 2011

  1. Why can’t hash tables preserve the order of keys?
  2. Linux and the financial crisis
  3. Better job ads
  4. The Web is killing database systems
  5. Fast computation of scalar products, and some lessons in optimization
  6. Usury and the collapse of empires
  7. Pick one: determinism or fairness
  8. Scientists and central planning

July 2011

  1. What the Internet wants me to read (summer 2011)
  2. Sentience is indescribable
  3. The myth of the unavoidable specialization

June 2011

  1. On being happy
  2. Probabilities are unnecessary mathematical artifacts
  3. The language interpreters are the new machines
  4. Is Wikipedia anti-intellectual?
  5. Why I still program

May 2011

  1. Automation will make you obsolete, no matter who you are
  2. The perils of filter-then-publish
  3. You cannot refuse to publish our paper because…
  4. Time-saving versus work-inducing software
  5. Scaling MongoDB
  6. Improve your impact with abundance-based design

April 2011

  1. Is science more art or industry?
  2. The case against double-blind peer review
  3. Ten things Computer Science tells us about bureaucrats
  4. The Open Java API for OLAP is growing up!
  5. How information technology is really built
  6. You can assess trends by the status of the participants

March 2011

  1. Social Web or Tempo Web?
  2. Know the biases of your operating system
  3. Governments should stop funding higher education?
  4. Breaking news: HTML+CSS is Turing complete
  5. Jobless recovery, the Luddite fallacy and the 4-hour workweek

February 2011

  1. Innovation and model boundaries
  2. Social Media is subversive, but maybe not how you think
  3. Taking scientific publishing to the next level
  4. China: the new scientific superpower?

January 2011

  1. Not even eventually consistent
  2. Turning vanity publishing on its head
  3. On the monetary value of an education, and bad statistics
  4. Book review: Statistical Analysis with R
  5. Innovating without permission
  6. Demarchy and probabilistic algorithms
  7. Our institutions are limited by the pre-digital technology
  8. So, you want to be a mad scientist?
  9. If human population grew at the pace of computer storage…
  10. Five surprising changes in 2010

2010 67

December 2010

  1. Make your own programmable digital thermometer in an hour
  2. For your in-memory databases, do you really need an index?
  3. The rise of scientific journalism
  4. A taxonomy for the suppression of dissent
  5. Who will need database administrators in 2020?
  6. Three of my all-time most popular blog posts
  7. Over-normalization is bad for you

November 2010

  1. Why do we need database joins?
  2. Remarkable scientists without a wikipedia page
  3. Why you may not like your job, even though everyone envies you
  4. You probably misunderstand XML
  5. Public funding for science?
  6. How do search engines handle special characters? Should you care?

October 2010

  1. Who is going to need a database engine in 2020?
  2. The future is already here: it’s just not very evenly distributed
  3. Can you trust fixed-bit computer arithmetic?

September 2010

  1. Can Science be wrong? You bet!
  2. Is MapReduce obsolete?
  3. How reliable is science?

August 2010

  1. Write a Twitter application in 5 minutes
  2. Manifesto for Half-Arsed Academic Research
  3. Counterintuitive factors determining research productivity
  4. Working long hours is stupid
  5. How to get everyone talking about your research!

July 2010

  1. Is multiplication slower than addition?
  2. General versus domain intelligence
  3. Summer reading: my recommendations (2010)
  4. The five most important algorithms?

June 2010

  1. NoSQL or NoJoin?
  2. The fallacy of absolute numbers
  3. Indexing XML
  4. Lack of steady trajectories and failure
  5. Academic publishing is archaic
  6. Maximizing your impact as a researcher (guest post)
  7. How do we choose research journals?
  8. Computer Science is shallow

May 2010

  1. Sorting is fast and useful
  2. Chinese researchers publish more research papers
  3. Acceptance rate versus impact
  4. Toward data-driven science

April 2010

  1. What is a good University?
  2. The mythical reproducibility of science
  3. On the design of design
  4. What I like about my job
  5. Are there too many Ph.D.’s?
  6. External-Memory Sorting in Java : the First Release
  7. External-Memory Sorting in Java

March 2010

  1. The paperless campus: still a long way to go
  2. Write good papers: my slides
  3. So, you know what’s important?
  4. External-memory shuffling in linear time?
  5. Which is faster: integer addition or XOR?
  6. Language, Mathematics and Programming
  7. Who the heck got Universities into the email business?
  8. Is programming “technical”?

February 2010

  1. Most common questions about recommender systems…
  2. The best software developers are great at Mathematics?
  3. Open Sourcing your software hurts your competitiveness as a researcher?
  4. Trading latency for quality in research
  5. Where to get your ebooks?

January 2010

  1. Getting serious about online teaching
  2. You know your research is original when…
  3. Writing tools to improve your research productivity
  4. The fundamental properties of computing
  5. The end of ‘mass universities’
  6. Actual programming with HTML and CSS (without javascript)
  7. Database Questions for 2010: What’s On My Mind

2009 103

December 2009

  1. My best blog posts (2009)
  2. Entropy-efficient Computing
  3. Run-length encoding (part 3)
  4. Why you should be a global warming skeptic

November 2009

  1. Run-length encoding (part 2)
  2. Run-length encoding (part I)
  3. More database compression means more speed? Right?
  4. Which should you pick: a bitmap index or a B-tree?
  5. Procrastination can be your friend
  6. Reading recommendation: Saturn’s children by Charles Stross

October 2009

  1. Top 25 Canadian Universities by Research Funding (2009)
  2. The secret behind radical innovation
  3. Become independent of peer review
  4. Open Access is the short-sighted fight
  5. How to win academic debates
  6. Working with industry helps researchers?
  7. Getting a Ph.D. for the money?
  8. What is more fundamental: Physics or Computer Science?
  9. Sensible hashing of variable-length strings is impossible
  10. A Simplified Open Publishing Manifesto

September 2009

  1. The most important Theoretical Computer Science problem is inconsequential
  2. Relational databases: are they obsolete?
  3. The hard truth about research grants
  4. How things change: Cheaters are Innovators
  5. Where do the best mathematicians come from?
  6. Changing your perspective: horizontal, vertical and hybrid data models
  7. Toward author-centric science
  8. Why I am not publishing in PLoS One, yet

August 2009

  1. Attributes of good research
  2. Trading compression for speed with vectorization
  3. To be smarter, ignore external rewards
  4. Scifi book recommendations from my summer list: Reynolds, Hamilton and Weber’s Safehold
  5. Open Access: just for articles!
  6. A recipe for interesting Computer Science research papers
  7. Scientists and their emotions
  8. Do hash tables work in constant time?
  9. Picking a web page at random on the Web
  10. A review of “Hello World: Computer Programming for Kids and Other Beginners”
  11. Why I hardly ever blog about my ongoing research

July 2009

  1. Netflix game gets exciting: BellKor’s Pragmatic Chaos is passed by The Ensemble
  2. Determinants of faculty research productivity
  3. A few things American academics should know
  4. What FriendFeed got wrong
  5. Pedagogy, innovation and convenience
  6. After Netflix? What next?
  7. Design a recommender system: they read your resume
  8. Column stores and row stores: should you care?
  9. Is collaboration correlated with productivity?

June 2009

  1. Netflix competition is over?
  2. Physical tools to improve research productivity
  3. Is Open Access publishing the solution? Really?
  4. Some shameful facts about myself
  5. Death to the 3-hour exam
  6. Why senior researchers and managers should analyze data themselves…
  7. The roots of plagiarism are deep

May 2009

  1. Stop generating metadata and access the full content!
  2. Make your research papers easy to skim
  3. A researcher’s garden
  4. Promoted to full professor
  5. Reinventing university education? Practical ideas…
  6. Research interests should be short-lived?
  7. How peer review is supposed to help you!

April 2009

  1. End the University as We Know It: My Commentary
  2. Quantum databases: what are they good for?
  3. How to initiate collaboration in science… with anyone!
  4. The primary and secondary benefits of e-networking
  5. e-Learning people: my top four
  6. Why are dynamic languages easier than static languages?
  7. Its official: the standard programming language for multidimensional databases is MDX

March 2009

  1. A taxonomy of Computer Science researchers
  2. Social Software… toys or productivity?
  3. Research productivity: some paths less travelled
  4. Gardening and research
  5. Are your research papers telling original stories?
  6. On academic branding…
  7. The missing research tool…

February 2009

  1. Are solo authors less cited?
  2. Students using podcasting and skipping class… do better!
  3. How to fund research properly
  4. If you could only write one more research paper…
  5. Solving new and difficult theory problems… without looping into oblivion
  6. Blogging is part of my day job
  7. What I have learned about life from war games
  8. Academic applied research is… unapplicable
  9. Honesty is charisma
  10. Skip the Ph.D., go straight to research
  11. Compressed bitmaps in Java
  12. One of the fathers of academic blogging is back
  13. Advice to upcoming Ph.D.s

January 2009

  1. Universities and the recession
  2. How to ask for a scholarship
  3. What comes first, theory or experiments?
  4. Why I write bad papers (sometimes)
  5. Emotions killing your intellectual productivity
  6. Turn your weaknesses into strengths
  7. The Claremont report on database research
  8. Must a professor grade his students?
  9. How do I automatically lock myself out of Google Mail?
  10. Finish this sequence of equalities…
  11. The purpose of peer review
  12. Progress is continuous by nature
  13. How many deleted sections do you write?
  14. Favorite posts for 2008

← 2004–2008