Writing
Notes on life, systems, and performance. Plus building things that go fast.
Essays & notes
Notes on life, systems, and performance. Plus building things that go fast.
Managing Parallel, Part 4: The Machine Underneath. Memory ordering (x86-TSO vs Arm), NUMA topology, and cache-line atomicity
Read more →One pool of storage that Linux, macOS, and Windows can all share: NFS for the compute nodes, SMB for the laptops, and the UID-alignment trick that stops NFS permissions from ruining your week. Built for home ML clusters and home labs.
Read more →Managing Parallel, Part 3: When Parallel Goes Wrong. The short list of broken contracts behind most concurrency bugs
Read more →Managing Parallel, Part 2
Read more →A step by step guide to using C++ in C.
Read more →Managing Parallel, Part 1
Read more →What is stream processing and how does it relate to data-flow?
Read more →Tutorials and full code examples of how to use pipes and FIFOs to connect C/C++ compiled applications to a thread running inside a JVM using Java.
Read more →How to get flex and bison to work together in C++
Read more →How to time software properly: from rdtsc to clock_gettime and everything in between, plus timer synchronization.
Read more →From the archive
How to use templates to build functions by type size
Read more →How to host pages with GitHub pages, use jekyll and bootstrap together to make awesome pages
Read more →The folly of inventing secure languages
Read more →Data wrangling, why should you learn basic coding?
Read more →A case for more programming languages
Read more →