- 11/22/21 Performance Analysis is Cost Analysis
- 10/24/21 Performance Principles, Visualised
- 08/21/21 Write Honest Benchmarks
- 07/12/21 Profiling with perf and DHAT on Rust code in Linux
- 02/11/21 The Many Uses Of The Empty Tuple
- 02/04/21 Increase The Rate Of Oxidation: Getting More Rust Into Your Life
- 01/29/21 Cut Down Time Debugging With Rich Error Types
- 01/11/21 Quick and Dirty Benchmarking
- 10/20/20 How do you cast generic values you're sure are numbers?
- 09/19/20 Think Spatially to Grok Lifetimes
- 08/17/20 Let The Caller Decide The Return Value!
- 08/14/20 An Architecture Agnostic Intro To Assembly
- 08/14/20 Avoid Build Cache Bloat By Sweeping Away Artifacts
- 08/14/20 Profiling Doesn't Always Have To Be Fancy
- 07/31/20 Making Friends With Caches
- 07/16/20 System's Thinking: A Primer
- 07/08/20 What Makes Up a CPU?
- 06/30/20 Discovering Problematic Commits With Git Bisect
- 06/29/20 Feature Flag Cleanly With Blocks
- 06/12/20 An Opinionated Guide To Structuring Rust Projects
- 06/10/20 Picking Variants or Fields Out Of Collections of Enums
- 05/19/20 Building An Intuition for Pattern Matching
- 05/09/20 Benchmark It!
- 05/03/20 Magnifying Glasses for Rust Assembly
- 04/29/20 Cut Down On Clones With Cows
- 04/22/20 Untangle Your Errors With Enums
- 04/14/20 Skip Unnecessary Allocations In Your Collections
- 04/09/20 Ways Wildcards Hide Bugs
- 04/06/20 Make Your Errors Clearer By Splitting Them In Half
- 04/02/20 How to pick stable, beta, or nightly Rust
- 03/27/20 Catching panics in dependencies
- 03/19/20 How To Return An Iterator From a Function
- 03/14/20 Why Are There Two Types of Strings In Rust?
- 03/09/20 When to move, copy, or clone?
- 03/01/20 Four Ways To Avoid The Wrath Of The Borrow Checker
- 02/20/20 Bindings Are Cheap: Managing Rightward Drift
- 02/14/20 Idiomatic Argument Passing in Rust
- 02/03/20 Error Handling With Closures In Iterators
- 01/30/20 Structuring Rust Projects With Multiple Binaries
- 11/02/19 The Lowly Assert: Roundtrips
- 09/04/19 Stdout is Forever