Custom Music Notation
—A toy file format for simple songs
August 23, 2023
Things in C# Over Which You Cannot Abstract
—A short list of concepts and features in C# over which you cannot abstract
August 16, 2023
Friction: C# + ISP → Adapter Pattern
—As a student of Interface Segregation Principle, you'll find that C# forces you to make adapters
November 04, 2022
Marker Interfaces Are Not Evil
—At least, not necessarily
September 08, 2022
Questions Answered
(Series: async locks
)
—Answering some questions about ReentrantAsyncLock
June 20, 2022
ReentrantAsyncLock NuGet Package
(Series: async locks
)
—Introducing the ReentrantAsyncLock package
June 20, 2022
A More Ergonomic Async Lock (obsolete)
(Series: async locks
)
—Making the work queue look more like an async lock
June 15, 2022
Reentrant Async Lock
(Series: async locks
)
—A correct implementation
June 14, 2022
Loading Loose XAML
—How to parse and load XAML from an embedded resource
June 03, 2022
Dynamically Generated Type
—How to dynamically generate a type at runtime in C#
February 22, 2022
Rust Traits
—Explained for C# developers
February 08, 2022
Inheritance
—Musings about favoring either inheritance or composition
October 12, 2021
Async Method Builders Are Hard
—A peek under the hood of C#, and a complaint about Microsoft's documentation
September 30, 2021
Async and Await in C# vs Rust
—Why Rust futures are better because they are polled
September 16, 2021
Terraforming Clouds
—First impressions of Terraform in Azure
August 16, 2021
WPF's Problem with Axes
—Chart axes, that is
July 26, 2021
Fountain Codes
—What they are and how they work
July 19, 2021
Plotting Data
—And doing it quickly
December 18, 2020
WebAssembly's Name
—Is it for the web? Is it assembly?
November 19, 2020
Making Prime Numbers in Rust
—The scenic route to generating prime numbers with Rust
October 27, 2020
MVVM Pattern in WPF
—A survey of the MVVM pattern in WPF
October 16, 2020