Blog Archive2023 Feb 1Forking is not free; the hidden costs2023 Jan 27Critical Edge Splitting2023 Jan 20Debugging -Wframe-larger-than=2020 Apr 6Off by Two2019 May 12f() vs f(void) in C vs C++2019 Jan 18Finding Compiler Bugs With C-Reduce2018 Oct 24Booting a Custom Linux Kernel in QEMU and Debugging It With GDB2018 Jun 2Speeding Up Linux Kernel Builds With ccache2017 Sep 5GCC vs LLVM Q3 2017 Commit Rates and Active Developer Counts2017 May 31Running Clang-Tidy on the Linux Kernel2017 May 16Submitting Your First Patch to the Linux Kernel and Responding to Feedback2016 Nov 20Static and Dynamic Libraries2016 Aug 13Object Files and Symbols2016 Jul 1Cross Compiling C/C++ for Android2016 Jun 18Setting up mutt with gmail on Ubuntu2016 May 30Data Models and Word Size2016 May 15What's in a Word?2016 Jan 20Intro to Debugging X86-64 Assembly2015 Aug 14My SIGGRAPH 2015 Experience2015 Jul 23Additional C/C++ Tooling2015 May 25Interpreter Compiler JIT2015 Feb 22Hidden in Plain Sight - Public Key Crypto2015 Jan 25Writing My First Technical Book Chapter2014 Apr 18Let's Write Some X86-642014 Mar 1Write a Test Case2013 Sep 26Function.prototype.bind Edge Cases2013 Aug 28Making Great Node.js Modules With Coffeescript2013 Jul 25Designated Initialization With Compound Literals in C2013 Jul 3Why I'll Be Marching This 4th2013 Jun 138 Months in Mozilla2013 May 7Rust: Pattern Matching and the Option Type2013 Apr 29The Persistence of Memory2013 Apr 3Basic JIT2013 Feb 28Commandments of a Mobile Web2013 Jan 26C Function Pointers Alternate Syntax2013 Jan 19[Internet] Freedom Is Not Free2013 Jan 14Closures: JavaScript, Ruby, and Rust
2023 Feb 1Forking is not free; the hidden costs2023 Jan 27Critical Edge Splitting2023 Jan 20Debugging -Wframe-larger-than=2020 Apr 6Off by Two2019 May 12f() vs f(void) in C vs C++2019 Jan 18Finding Compiler Bugs With C-Reduce2018 Oct 24Booting a Custom Linux Kernel in QEMU and Debugging It With GDB2018 Jun 2Speeding Up Linux Kernel Builds With ccache2017 Sep 5GCC vs LLVM Q3 2017 Commit Rates and Active Developer Counts2017 May 31Running Clang-Tidy on the Linux Kernel2017 May 16Submitting Your First Patch to the Linux Kernel and Responding to Feedback2016 Nov 20Static and Dynamic Libraries2016 Aug 13Object Files and Symbols2016 Jul 1Cross Compiling C/C++ for Android2016 Jun 18Setting up mutt with gmail on Ubuntu2016 May 30Data Models and Word Size2016 May 15What's in a Word?2016 Jan 20Intro to Debugging X86-64 Assembly2015 Aug 14My SIGGRAPH 2015 Experience2015 Jul 23Additional C/C++ Tooling2015 May 25Interpreter Compiler JIT2015 Feb 22Hidden in Plain Sight - Public Key Crypto2015 Jan 25Writing My First Technical Book Chapter2014 Apr 18Let's Write Some X86-642014 Mar 1Write a Test Case2013 Sep 26Function.prototype.bind Edge Cases2013 Aug 28Making Great Node.js Modules With Coffeescript2013 Jul 25Designated Initialization With Compound Literals in C2013 Jul 3Why I'll Be Marching This 4th2013 Jun 138 Months in Mozilla2013 May 7Rust: Pattern Matching and the Option Type2013 Apr 29The Persistence of Memory2013 Apr 3Basic JIT2013 Feb 28Commandments of a Mobile Web2013 Jan 26C Function Pointers Alternate Syntax2013 Jan 19[Internet] Freedom Is Not Free2013 Jan 14Closures: JavaScript, Ruby, and Rust