Hello! 👋 😄

I enjoy building tools as part of a community that empowers domain experts to control and modify their digital workflows by tearing down the boundaries typically imposed by siloed applications from different vendors.

I am organising the Malleable Systems Collective, a community that catalogs and experiments with malleable software and systems.

I am researching reliable debugging and malleable software with Dr. Stephen Kell at King’s College London.

I previously worked at Element building open, decentralized, secure communications for all via Matrix. I also worked at Mozilla on developer tools for Firefox, and I overhauled the Firefox CSS system using Rust and tech from Servo.


Beyond Chat

2021 – present

Matrix-native projects beyond chat: collaborative documents, blogs, generic KV databases, tools for thought, etc.

Malleable Systems

2019 – present

Exploring how to make programs more malleable and computing more humane

Notes and Talks

Accurate coverage metrics for compiler-generated debugging information

In this talk, we propose some new metrics, computable by our tools, which could serve as motivation for language implementations to improve debugging quality.


Link-time optimisation (LTO)

I recently started exploring link-time optimisation (LTO), which I used to think was just a single boolean choice in the compilation and linking workflow, and perhaps it was like that a while ago… I’ve learned that these days, there are many different dimensions of LTO across compilers and linkers today and more variations are being proposed all the time. In this “living guide”, I aim to cover the LTO-related features I have encountered thus far....

started 2023-11-08 · updated 2023-11-08

Testing debug info of optimised programs

In this preliminary work, we symbolically execute unoptimised and optimised versions of a program which are then checked for debug info consistency. We expect this to allow testing correctness of debug info generation across a much larger portion of the compiler.


Room to grow: Building collaborative, open software

We examine one approach to collaborative, open software by building on Matrix, a secure, decentralised, real-time communication protocol with generic database capabilities hiding beneath its current focus on chat.


Building Firefox for Linux 32-bit

Background As part of my work on the Stylo / Quantum CSS team at Mozilla, I needed to be able to test changes to Firefox that only affect Linux 32-bit builds. These days, I believe you essentially have to use a 64-bit host to build Firefox to avoid OOM issues during linking and potentially other steps, so this means some form of cross-compiling from a Linux 64-bit host to a Linux 32-bit target....