Articles
Software
Go
C
- A review of tools for rolling your own C static analysis
- Bitbanging 1D Nearest-neighbor Reversible Cellular Automata
- Fuzzy Sync: Winning a rare data race
- libactors: Actor model and message passing with Userland RCU
- Supporting both Linux CGroup APIs
- Getting NodeJS 18.x to run on the nanos unikernel
- Linux socket example
- Some data structures and algorithms in C, built and tested with Zig and Meson
Zig
Julia
JS, HTML, CSS
Misc
Random
Videos
- The ROP chain in my Linux kernel exploit of CVE-2023-0461 which raises privileges
- Zig & /dev/fuse: A weird file system
- Zig & FUSE: Hello file system
- Automating code review with Sparse
- Gripe: fast issue tracking with A.I.
- 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.
- LocalAI: Vector store: Simple in memory semantic search
- Prem Operator: Kubernetes operator for serving generative A.I.
- Gripe.sh: Fast issue tracking with “A.I”
- DoBu.uk: Simple scheduling SaaS
- Barely HTTP/2: HTTP/2 in Zig
- 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).
Acknowledgments
- Thanks to Locria Cyber for asking if I have an RSS/Atom feed, then testing it! Also for fixing the nav bar padding.