2025

Patterns for Modeling Overlapping Variant Data in Rust

When building complex systems in Rust, one of the fundamental challenges developers face is how to organize their data structures to maintain type safety, avoid code duplication, keep their API clean, and remain flexible to changes. This article explores six different approaches to data modeling using a search engine as our example, examining the trade-offs between each approach where fields between search types are overlapping.

17 min read
Back to top ↑

2024

The Result Type In Dart

Every modern programming language has error handling. Like Python, Dart chose the unchecked try-catch catch pattern, Java went with checked try-catch pattern, Zig went with Error Unions, and Rust went the Result type.

3 min read

Announcing activate: A sane way to manage environment configuration

Recently I got sick of the way I had different imperative ways of managing environments across language domains and having to re-configure things locally to replicate QA bugs, plus the hassle of working in a monorepo. I am also a big fan of tools like direnv and that inspired me to create activate.

1 min read
Back to top ↑

2023

Announcing Rust Core in Dart: Program in Dart Like You Would in Rust

For Rust developers involved in programming with Dart, or Dart developers interested in idiomatic and safe programming, we have developed “rust_core,” a package designed to implement Rust’s core library in Dart. Result, Option, Cell, OnceCell, LazyCell, etc. Are all done, along with nearly 200 extension methods for different scenarios, such as Future<Result<S,F>>, Result<Option<S>,F>, Result<S?,F>, etc. just to name a few.

~1 min read
Back to top ↑