Reading list
On this page I maintain a list of technical blog posts, videos and other lectures that taught me a lot. You should check them too when you have time!
- Software engineering
- Programming languages
- Cryptography
- Security
- Concurrency
- Distributed systems
- Quantum computing
- Misc
- Random
Software engineering
Performance
- Chandler Carruth’s series at CppCon is a must to understand performance on modern CPUs, with an effective live-demo style.
- Efficiency with Algorithms, Performance with Data Structures, on cache-friendly data structures, by Chandler Carruth, 2014.
- Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!, intro to the
perf
profiler by Chandler Carruth, 2015. - High Performance Code 201: Hybrid Data Structures, on small size optimizations and bitpacking techniques, by Chandler Carruth, 2016.
- Going Nowhere Faster, on out-of-order and speculative execution in modern CPUs, by Chandler Carruth, 2017.
- Spectre: Secrets, Side-Channels, Sandboxes, and Security, on the relation between speculative execution and security in light of the recent Spectre attack, by Chandler Carruth, 2018.
- Daniel Lemire’s blog, with many insightful posts on applying low-level optimization to common algorithms.
- Parsing Gigabytes of JSON per Second, on how to leverage SIMD instructions to parse a non-trivial file format, by Geoff Langdale and Daniel Lemire, 2019.
- Cpu Caches and Why You Care, on how CPU caches are organized, why they are critical to performance, and which software patterns to apply to best leverage them, by Scott Meyers, 2014.
- Performance Matters, analyzing common (yet often surprising!) biases in performance measurements and proposing a statistical framework for more rigorous comparisons, by Emery Berger, 2019.
- Speed Is Found In The Minds of People, on how to optimize sorting algorithms, and why “design by introspection” will lead to practical performance improvements of algorithms, by Andrei Alexandrescu, 2019.
- Extreme HTTP Performance Tuning: 1.2M API req/s on a 4 vCPU EC2 Instance, a detailed walk-through of applying low-level optimizations on Linux, by Marc Richards, 2021.
- 5000x faster CRDTs: An Adventure in Optimization, on how to optimize code from a research paper on Conflict-free Replicated Data Types (and change the research conclusions!), by Seph Gentle, 2021.
- Voultapher’s research on sort algorithms, leading to more efficient algorithms for the Rust standard library.
Algorithms
- Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step, where we learn how SIMD instructions are a game-changer for hash tables, by Matt Kulukundis, 2017.
Dependency management
- Version SAT, a.k.a. “Dependency hell is NP-complete. But maybe we can climb out.”, introducing why selecting versions for transitive dependencies is NP-complete, by Russ Cox, 2016.
- C++ as a “Live at Head” Language by Titus Winters, 2017.
Programming languages
- Garbage In, Garbage Out: Arguing about Undefined Behavior… by Chandler Carruth, 2016.
- The Bits Between the Bits: How We Get to main(), an interactive introduction about ELF files, the linker and shared libraries by Matt Godbolt, 2018.
- Path Tracing Three Ways: A Study of C++ Style, a review of how to write a path tracer in object-oriented, functional and data-oriented styles by Matt Godbolt, 2019.
- Applied WebAssembly: Compiling and Running C++ in Your Web Browser, an applied introduction to WebAssembly by Ben Smith, 2019.
Rust
- Futures Explained in 200 Lines of Rust, explaining how futures and executors are implemented in Rust behind the
async
/await
scenes, by Carl Fredrik Samson, 2020. - RUDRA: Finding Memory Safety Bugs in Rust at the Ecosystem Scale, describing how plenty of bugs were uncovered in
unsafe
Rust across the ecosystem, by Yechan Bae, Youngsuk Kim, Ammar Askar, Jungwon Lim and Taesoo Kim, 2021.
Cryptography
- Curve25519: new Diffie-Hellman speed records, with many insights on how to choose elliptic curve parameters with security and performance in mind, by Daniel J. Bernstein, 2006.
- Critical Perspectives on Provable Security: Fifteen Years of “Another Look” Papers, an extensive review of how proofs of cryptographic protocols can be flawed with numerous examples, by Neal Koblitz and Alfred Menezes, 2019.
Post-quantum cryptography
- Fun with Hashes, a short intro to hash-based signatures by Adam Langley, 2016.
Zero-knowledge proofs
- zkSNARKs in a nutshell by Christian Reitwiessner, 2016.
- Quadratic Arithmetic Programs: from Zero to Hero by Vitalik Buterin, 2016.
Security
- LiveOverflow’s YouTube channel and blog, with a lot of hands-on educational content about IT security.
- Sudo Vulnerability Walkthrough, or how to use fuzzing techniques to retrieve the CVE-2021-3156 vulnerability in
sudo
, 2021.
- Sudo Vulnerability Walkthrough, or how to use fuzzing techniques to retrieve the CVE-2021-3156 vulnerability in
- Keynote: Containers aka crazy user space fun, a great overview of containers by Jess Frazelle, 2018.
- American Fuzzy Lop and Address Sanitizer, a high-level introduction by Hanno Böck, 2016.
- Click Here to Kill Everybody, on the interaction between cybersecurity and policy (and promotion of his new book), by Bruce Schneier, 2018.
Concurrency
- Rust Atomics and Locks, explaining low-level concurrency primitives in practice, by Mara Bos, 2023.
- Futexes Are Tricky, on the fundamental futex primitive and how to build mutexes correctly with it, by Ulrich Drepper, 2003-2011.
Distributed systems
- Spanner, TrueTime and the CAP Theorem, an overview of Google’s global-scale distributed database, by Eric Brewer, 2017.
Quantum computing
- Quantum Computation and Information class by Ryan O’Donnell and John Wright (CMU), 2015.
Misc
- How I’m able to take notes in mathematics lectures using LaTeX and Vim, with plenty of tips to speed-up LaTeX typing thanks to vim “snippets”, by Gilles Castel, 2019.
Random
- Classic Nintendo Games are (Computationally) Hard, with rigorous proofs and screenshots, by Greg Aloupis, Erik D. Demaine, Alan Guo and Giovanni Viglietta, 2012-2015.