14 Apr 2026/ C++
C++20 Modules Don't Spark Joy
A real-world experience report on using C++20 modules in a 250-file game engine project. What works, what breaks across MSVC, Clang, and GCC, and patterns that help.
14 Apr 2026/ C++
A real-world experience report on using C++20 modules in a 250-file game engine project. What works, what breaks across MSVC, Clang, and GCC, and patterns that help.
04 Apr 2023/ GameDev
Initializing the Vulkan graphics API: creating an instance, selecting devices, and taking the first steps toward rendering in a C++ game engine.
07 Feb 2023/ GameDev
High-level architecture of a Vulkan-based game renderer: the graphics pipeline, models, shaders, textures, and how they all fit together.
12 Jan 2023/ GameDev
Adding structured logging to a C++ game engine using Boost.Log with sinks, formatters, and severity levels, wrapped in a clean C++20 module.
11 Jan 2023/ GameDev
Starting a voxel game engine from scratch with C++, Vulkan, Visual Studio, and vcpkg. Project structure, dependencies, and initial setup.
14 Jun 2022/ C++
How Linux system calls work under the hood: from user space to kernel space, the x64 calling convention, and implementing syscalls directly in assembly.
28 Mar 2022/ C++
Before C++23, operator[] couldn't take multiple parameters. This C++20 utility class enables multi-dimensional indexing like matrix[x][y] using templates.
03 Oct 2021/ C++
C++ enum classes don't support bitwise operators like |, & and ^ out of the box. Here's how to enable them using a constexpr-friendly EnumBitset wrapper.