2023USPS as an ISPMar 102023Disambiguating Arm, Arm ARM, Armv9, ARM9, ARM64, AArch64, A64, A78, ...Mar 102023Forking is not free; the hidden costsFeb 12023Critical Edge SplittingJan 272023Debugging -Wframe-larger-than=Jan 202020Off by TwoApr 62019f() vs f(void) in C vs C++May 122019Finding Compiler Bugs With C-ReduceJan 182018Booting a Custom Linux Kernel in QEMU and Debugging It With GDBOct 242018Speeding Up Linux Kernel Builds With ccacheJun 22017GCC vs LLVM Q3 2017 Commit Rates and Active Developer CountsSep 52017Running Clang-Tidy on the Linux KernelMay 312017Submitting Your First Patch to the Linux Kernel and Responding to FeedbackMay 162016Static and Dynamic LibrariesNov 202016Object Files and SymbolsAug 132016Cross Compiling C/C++ for AndroidJul 12016Setting up mutt with gmail on UbuntuJun 182016Data Models and Word SizeMay 302016What's in a Word?May 152016Intro to Debugging X86-64 AssemblyJan 202015My SIGGRAPH 2015 ExperienceAug 142015Additional C/C++ ToolingJul 232015Interpreter Compiler JITMay 252015Hidden in Plain Sight - Public Key CryptoFeb 222015Writing My First Technical Book ChapterJan 252014Let's Write Some X86-64Apr 182014Write a Test CaseMar 12013Function.prototype.bind Edge CasesSep 262013Making Great Node.js Modules With CoffeescriptAug 282013Designated Initialization With Compound Literals in CJul 252013Why I'll Be Marching This 4thJul 320138 Months in MozillaJun 132013Rust: Pattern Matching and the Option TypeMay 72013The Persistence of MemoryApr 292013Basic JITApr 32013Commandments of a Mobile WebFeb 282013C Function Pointers Alternate SyntaxJan 262013[Internet] Freedom Is Not FreeJan 192013Closures: JavaScript, Ruby, and RustJan 14