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.

Communities

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

Extensibility via capabilities and effects

Much of today’s software limits user extensibility. This article explores one potential route forward using capabilities, effects, and extension-time type checking to provide a more predictable extension path.

2024-11-01

Optimisation-dependent IR decisions in Clang

I used to naively assume that Clang always handed off the same IR to the LLVM optimisation pipeline regardless of optimisation level. In an attempt to gain a bit more understanding into exactly what kinds of decisions depend on optimisation level in Clang, I surveyed the IR emission code paths.

2024-08-17

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.

started 2024-04-11 · updated 2024-07-13

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.

2022-09-15