My Blog

crab yellow

Why Rust for Data-Intensive Applications

Explores why Rust matters for research data pipelines - not for performance, but for correctness. Learn how Rust's type system prevents data failures.

Read More
errors green

Your Errors Are Data Too

How Rust's error handling patterns let you treat errors as structured observations about your data - capturing context, categorising failures, and producing data quality reports as first-class pipeline outputs.

Read More
head_brain yellow

Why Use Newtypes? Encoding Domain Knowledge in the Type System

How Rust's newtype pattern lets you encode domain knowledge - valid ranges, clinical thresholds, meaningful operations - directly into the type system, so the compiler enforces what you already know to be true about your data.

Read More
table orange

Serde Rust: Data Serialisation for Data Scientists

Practical Rust patterns for building validated data pipelines with Serde. Custom deserialisers, domain-constrained types, streaming CSV processing, and structured error handling for messy real-world data.

Read More
padlock blue

How Synthetic Data Is Used in Healthcare, Research and Beyond

Explore real-world use cases for synthetic data in healthcare, clinical trials, finance and more.

Read More
brackets yellow

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.

Read More
stethoscope blue

How to Create a Codelist

A practical guide to creating codelists from scratch for health data research.

Read More
stethoscope green

What is a Codelist?

What are codelists and why do they matter? An accessible introduction to coding systems, clinical nuance, and research reproducibility.

Read More
errors orange

Error Handling in Rust: anyhow and thiserror

Practical Rust error handling beyond the basics: add context with anyhow and define typed errors with thiserror.

Read More