My Blog
Accidental Functional Programming in Rust (From an Epidemiologist's Perspective)
Rust quietly pushes you into functional patterns. An epidemiologist explains Result, match, enums, iterators, and when readability beats idioms.
How to Create a Codelist
A practical guide to creating codelists from scratch for health data research.
What is a Codelist?
What are codelists and why do they matter? An accessible introduction to coding systems, clinical nuance, and research reproducibility.
Error Handling in Rust: anyhow and thiserror
Practical Rust error handling beyond the basics: add context with anyhow and define typed errors with thiserror.
Error Handling in Rust: Fundamentals
A clear, practical guide to Rust error handling: panic, Result, ?, unwrap, and expect - written for Rust developers who want clarity without jargon.
Women in Rust 2025
Celebrating another wonderful year of women making strides in the Rust programming community.
Multiple Imputation and Perturbation: Why They're Not Built for Synthetic Data
This blog explores why multiple imputation and perturbation are not suitable for generating synthetic data.
What are GANs and how can they generate synthetic data?
This blog explores Generative Adversarial Networks (GANs) and how they can be used to generate synthetic healthcare data.
Clinic to Code to Care
This blog came out of a talk Steph Jones and I gave at Women in Data and AI in October 2025. It explores the journey of information from a patient in clinic to how that information is coded for research and ultimately ends up informing statistical and machine learning models that can help improve patient care.