My Blog
Fairness and Bias Amplification in Synthetic Data
Explore how synthetic data can amplify existing biases and affect fairness in health research. Learn why this happens and how it differs from representativeness.
The Typestate Pattern: Moving Checks into the Compiler
Learn how to use the typestate pattern in Rust to make missing required fields a compile error instead of a runtime one. Building on the builder pattern, this post shows how to encode construction state in the type system so invalid records cannot be built at all.
Bias in Synthetic Data
An exploration of bias in synthetic data and its implications for health research.
What Do We Mean by Bias in Health Data Research?
A reference guide to what bias means in health data research and the distinct types you meet in electronic health records and other health datasets.
How Private is Synthetic Data? Understanding the Tradeoff with Utility
Synthetic data is a powerful tool for health research, but it comes with a tradeoff between privacy and utility. This blog explores what this means for researchers and how to navigate the tradeoff.
The Builder Pattern for Complex Records
Learn how to use the builder pattern in Rust to construct complex records in a flexible and readable way. This helps manage optional fields and maintain code clarity in data pipelines, and can help your data science and engineering teams build more reliable and maintainable systems.
How Do We Measure the Utility of Synthetic Data?
A practical guide to some of the metrics you can use to evaluate the utility of synthetic data.
Logs and tracing in Rust: From Terminal to Grafana
How to ship structured logs from a Rust application to Grafana Loki and query them, with a complete local setup using Docker Compose.