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

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....


WiFi Debugging for Firefox for Android

I am excited to announce that we’re now shipping WiFi debugging for Firefox for Android! It’s available in Firefox for Android 42 with Firefox Nightly on desktop. The rest of this post will sound quite similar to the previous announcement for Firefox OS support. WiFi debugging allows WebIDE to connect to Firefox for Android via your local WiFi network instead of a USB cable. The connection experience is generally more straightforward (especially after connecting to a device the first time) than with USB and also more convenient to use since you’re no longer tied down by a cable....