Blog archive
2021
- Bloaty: A super handy linux binary analysis
- std::atomic vs volatile, disassembled
- Paper Reading: In Search of an Understandable Consensus Algorithm (Extended Version)
- Writing your own NES emulator Part 3 - the 6502 CPU
- Doctest - my favorite lightweight, zero-friction unit test framework
- Putting Fedora 33 Workstation on X1 Carbon 7th gen
2020
- Paper Reading - Hekaton: SQL Server’s Memory-Optimized OLTP Engine
- InnoDB Internals - Consistent Reads
- Trying and setting up WSL 2
2019
- SWIG and Python3 unicode
- Python3 filter is evil
- Go pattern for worker queue - a quick case study for go concurrency
- Hacking MySQL #1 - Overview, Building, and Testing
- Getting GDB to work on Mac OS X Mojave
- Sorting structured data using memcmp-friendly encoding part 2 - floats
- Get cherry-pick to work across file renames
- Repeatable reads in InnoDB comes with a catch
- Diagnosing interesting MySQL client connection error in localhost through the source code
- Byebye Windows - going full linux
- Fun C++ bug - transactional objects should have move semantics
- CoreCLR's environment is not your environment
- Sorting structured data in a unstructured way using memcmp-friendly encoding Part 1 - sorting integers and strings
2018
- The tale of InvalidOperationException
- Summary of database isolation levels
- typeof(TSecret) - the secret magic behind .NET generics
- Does Go need async/await?
- Writing your own NES emulator Part 2 - writing the main loop
- Top secret .NET handles - Part 2 - Ref-Counted handles
- Top secret .NET handles - Part 1 - Dependent handles
- Calling C functions from Python - part 3 - deep dive into ctypes implementation in CPython
- Calling C functions from Python - part 2 - writing CPython extensions using Python/C API
- Calling C functions from Python - part 1 - using ctypes
- Writing your own NES emulator Part 1 - overview
2017
- C++ coroutine tutorial - computing fibonacci using C++ coroutines
- Callback pain
- Writing a portable lock-free reader/writer lock
- Writing your own C++ coroutines: getting started
- Sharing .NET generic code under the hood
- C# value type boxing under the hood
- Dogfooding .NET Standard 2.0 latest build
- Windows Runtime is not a Runtime
- P/invoke with unions in C#
- Embedding CoreCLR in your C/C++ application
- Calling COM code from Go
- Calling C functions from GO