Notebooks
-
Memory models and lock-free programming
Fundamentals for reasoning about and designing lock-free programs, data structures, and algorithms.
Notebooks are more polished and complete write-ups covering topics which have some depth. They are written to aid and structure my own understanding, for future reference, and hopefully to add a slightly different way of thinking about the subject material than is currently available online.
Posts
Varying posts on different subjects, of varying quality. Each post is usually something I want to reference or share. Usually there is more to say on the topic, but the post fills a gap in material I've found elsewhere (even if that's just grouping it in one place).
-
Orion language and compiler testing
Trialing my language/compiler in advent of code 2024 (day 1).
-
Debian workstation user setup
In which I setup my workstation's userspace.
-
Debian base workstation setup
In which I setup my workstation from scratch.
-
Zip bins
Abusing zip files to bundle data with binaries.
-
Deleting characters in a string - extreme edition
Using bit manipulation instructions and SIMD to strip characters out of strings.
-
Right inverting movemask
How to turn a bitmask into a SIMD bytemask.
-
Encoding binary as hex using SIMD instructions
An illustration of SIMD beyond simple arithmetic problems.
-
Fun with small bitsets
Compact register calculations in a compiler backend.
-
OpenBSD malloc options
Settings for catching memory bugs in OpenBSD.
-
Goto considered useful
Examples of how working with goto can still be beneficial.
-
Blitting pixels in X11
Graphics with pixel blitting using X11 directly.
-
A simple fuzzy matcher
A primitive but surprisingly effective method of fuzzy matching strings.
-
Basic git subtrees
Because I can never remember the commands.
-
User-space distributed tracing with BPF
User space tracepoints, and a bit of an investigation into how they work.
-
A simple intrusive linked list
Linked lists, generically, in C.
-
Anonymous structs for aggregating allocations
A technique for reducing the number of allocations.
-
A quick measurement of the impact of false sharing on simple spinlocks
Quantifying the impact of contending cache-lines across cores.
-
Welcome
This site began quite a while after some of the initial pieces were written...
-
Object Models, Threading Models and Actor Models
Why Object Oritented Programming is painful, and reasoning a way to message passing (or at least, just passing data).
-
Overloaded Labels in Haskell - towards better record fields
Investigating advances to address an annoyance in Haskell.
-
Getting Started With ST - the simple terminal
Simple Terminal with a couple of tweaks.
-
Getting decent font rendering on stock Debian
Fixing default fonts on Debian.
-
The Y combinator - understanding recursion without recursion
Figuring out the Y combinator for myself.
-
Libre-rate your NixOS
Deblobbing nixos, if you care about such things.
-
Booting DragonFly BSD with HAMMER on a GPT drive
Instructions of bypassing limitations of the old Dragonfly BSD bootloader. No longer needed - booting from GPT is now fully supported.