Articles
- Bitbanging 1D Nearest-neighbor Reversible Cellular Automata
- Blockchain and why I am selling my Crypto
- Creating a static site with Pandoc and Bulma
- A review of tools for rolling your own C static analysis
- Fuzzy Sync: Winning a rare data race
- Generating type specific deserialisers for BSON.jl
- libactors: Actor model and message passing with Userland RCU
- Linux socket example
- Recording your screen on Linux
- Reproducers make the best (Linux Kernel) tests
- Supporting both Linux CGroup APIs
- Radix sort, Hash map and building C
- Three ways to help your poject fail
- My life in books
- 100 Pull-ups and 100 dips per day challenge
- Some data structures and algorithms in C, built and tested with Zig and Meson
- Zig Vs C - Minimal HTTP server
- Getting NodeJS 18.x to run on the nanos unikernel
Videos
- Automating code review with Sparse
- Fuzzy Sync: Winning a rare data race
- How to write eBPF byte code by hand
- OpenQA with the JDP data analysis framework: Bug tag propagation on 2M+ test results using Julia
- JDP Introduction: A distributed, data analysis framework in Julia
Code
Some of the projects I have been working on. You can see more on GitHub and GitLab.
- Fuzzy Sync: Independent edition of the LTP Fuzzy Sync library. Can be used to create data race reproducers. Alt repo.
- Linux Kernel: The most popular
Operating System kernel. In addition to helping find kernel bugs, I have
also fixed a few.
- b9258a2cece4
slcan: Don't transmit uninitialized stack data in padding
- 0ace17d56824
can, slip: Protect tty->disc_data in write_wakeup and close with RCU
- redundant
nvdimm: Avoid race between probe and reading device attributes
- redundant
mm: memcg/slab: Stop reparented obj_cgroups from charging root
(was refused in favor of this)
- b9258a2cece4
- Linux Test
Project: I have worked on the LTP for the last few years, writing
tests and adding library features. For example…
- Fuzzy Sync
- C Static Analysis
- CGroup API.
- bpf_prog05
Reproducer for CVE-2021-3444 and various 32-bit DIV/MOD by zero issues in eBPF
- cfs_bandwidth01
Reproducer for various CGroup scheduling bugs
- cve-2016-7117
Reproduces a use-after-free in a race between recvmmsg() and close()
- GFXPrim/automata: GFXPrim in an ultra lightweight embedded graphics library created by long suffering LTP maintainer Cyril Chrubis. I used it to create a reversible cellular automata viewer.
- Actors.jl: The actor model for Julia. I also started a web framework based on this called Luvvy and a viral agent-based simulation.
- libactors: C Actor model and message passing library using userland read-copy-update (liburcu).
- JDP: Written in Julia; A sprawling data analysis ‘framework’ I made to automatically process kernel test results and bug data. I presented this at FOSDEM and here.
- BSONqs.jl: A
fork of
BSON.jl
which uses Julia’s meta programming features to produce type specific deserialisers dynamically. This allows it to deserialise BSON encoded data into native Julia structs quickly. - rselisp: An insane attempt at cloning Emacs in Rust. It includes an elisp interpreter and a barely working text editor.
- OpenQA & os-autoinst: A monstrosity of an operating system test framework. Amongst other things, I rewrote the QEMU backend to improve snapshotting and performance. It is mostly written in Perl (sigh).