Philippe Gaultier's blog
An amusing blind spot in Go's static analysis
A subtle bug with Go's errgroup
An optimization and debugging story with Go and DTrace
A subtle data race in Go
What should your mutexes be named?
Build PIE executables in Go: I got nerd-sniped
Tip of the day #6: Use Bpftrace to estimate how much memory an in-memory cache will use
Making my static blog generator <del>11</del> 33 times faster
Tip of the day #5: Install Go tools with a specific version
Making my debug build run 100x faster so that it is finally usable
Addressing CGO pains, one at a time
Tip of the day #4: Type annotations on Rust match patterns
The missing cross-platform OS API for timers
Way too many ways to wait on a child process with a timeout
Perhaps Rust needs "defer"
Tip of the day #3: Convert a CSV to a markdown or HTML table
Lessons learned from a successful Rust rewrite
Tip of the day #2: A safer arena allocator
Tip of the day #1: Count lines of Rust code, ignoring tests
A small trick for simple Rust/C++ interop
Odin and musl: Cross-compiling Odin programs for the Raspberry Pi Zero
Let's write a video game from scratch like it's 1987
How to rewrite a C++ codebase successfully
A small trick to improve technical discussions by sharing code
You've just inherited a legacy C++ codebase, now what?
Quick and easy PNG image size reduction
Body of work
This blog now has an Atom feed, and yours should probably too
Solving a problem with Gnuplot, the programming language (not the plotting software!)
Roll your own memory profiling: it's actually not hard
Learn Wayland by writing a GUI from scratch
Optimizing an Advent of Code solution in assembly
Cycle detection in graphs does not have to be hard: A lesser known, simple way with Kahn's algorithm
Learn x86-64 assembly by writing a GUI from scratch
Adventures in CI land, or how to speed up your CI
How to compile LLVM, Clang, LLD, and Ziglang from source on Alpine Linux
Getting started with Scheme by solving an Advent of Code 2018 challenge