| 2023 Mar 10 | USPS as an ISP |
| 2023 Mar 10 | Disambiguating Arm, Arm ARM, Armv9, ARM9, ARM64, AArch64, A64, A78, ... |
| 2023 Feb 1 | Forking is not free; the hidden costs |
| 2023 Jan 27 | Critical Edge Splitting |
| 2023 Jan 20 | Debugging -Wframe-larger-than= |
| 2020 Apr 6 | Off by Two |
| 2019 May 12 | f() vs f(void) in C vs C++ |
| 2019 Jan 18 | Finding Compiler Bugs With C-Reduce |
| 2018 Oct 24 | Booting a Custom Linux Kernel in QEMU and Debugging It With GDB |
| 2018 Jun 2 | Speeding Up Linux Kernel Builds With ccache |
| 2017 Sep 5 | GCC vs LLVM Q3 2017 Commit Rates and Active Developer Counts |
| 2017 May 31 | Running Clang-Tidy on the Linux Kernel |
| 2017 May 16 | Submitting Your First Patch to the Linux Kernel and Responding to Feedback |
| 2016 Nov 20 | Static and Dynamic Libraries |
| 2016 Aug 13 | Object Files and Symbols |
| 2016 Jul 1 | Cross Compiling C/C++ for Android |
| 2016 Jun 18 | Setting up mutt with gmail on Ubuntu |
| 2016 May 30 | Data Models and Word Size |
| 2016 May 15 | What's in a Word? |
| 2016 Jan 20 | Intro to Debugging X86-64 Assembly |
| 2015 Aug 14 | My SIGGRAPH 2015 Experience |
| 2015 Jul 23 | Additional C/C++ Tooling |
| 2015 May 25 | Interpreter Compiler JIT |
| 2015 Feb 22 | Hidden in Plain Sight - Public Key Crypto |
| 2015 Jan 25 | Writing My First Technical Book Chapter |
| 2014 Apr 18 | Let's Write Some X86-64 |
| 2014 Mar 1 | Write a Test Case |
| 2013 Sep 26 | Function.prototype.bind Edge Cases |
| 2013 Aug 28 | Making Great Node.js Modules With Coffeescript |
| 2013 Jul 25 | Designated Initialization With Compound Literals in C |
| 2013 Jul 3 | Why I'll Be Marching This 4th |
| 2013 Jun 13 | 8 Months in Mozilla |
| 2013 May 7 | Rust: Pattern Matching and the Option Type |
| 2013 Apr 29 | The Persistence of Memory |
| 2013 Apr 3 | Basic JIT |
| 2013 Feb 28 | Commandments of a Mobile Web |
| 2013 Jan 26 | C Function Pointers Alternate Syntax |
| 2013 Jan 19 | [Internet] Freedom Is Not Free |
| 2013 Jan 14 | Closures: JavaScript, Ruby, and Rust |