Writing
Notes on production, engineering, and the places they meet.
-
Why C# LINQ Except Builds Its Own Set Instead of Calling Contains
A close look at how LINQ's Except works, why it never delegates to the collection's Contains, and how that changes when to materialize a query and which container to use.
-
Direct and Empowering: A Coaching Style That Trusts People With Authority
Why I lead with recognition, follow with pressure, and try to give the people I coach authority over their work rather than just instructions about it.
-
Crisis-Mode Composure: Authoring Postmortems, Not Pointing Fingers
Two infrastructure crises played out the same way. Stay calm, work the problem, communicate steadily, recognize the people who got through it alongside the team, and write the postmortem rather than pointing fingers. A producer's playbook for crisis composure as a learnable practice.
-
Scope Discipline as Structural Defense
Defending project scope is a structural problem, not a personal one. The escalation curve runs from gentle reminders to admin-level locks, and each step is a defense against drift rather than an attack on someone's judgment.
-
Zero-Trust for Unreal Development
Every change reaches main through the same gate (PR, review, CI), with review scaling to risk and the failsafe itself subject to review. The principle, the threat model, and how the approach actually works inside an Unreal studio.
-
The Four Themes of ktsu.dev
ktsu.dev is the open-source .NET project I have been building since 2023. The libraries vary in size and scope, but they share four principles that govern what I will build and what I won't. This is the design philosophy underneath the library catalog.
-
ktsu.AppDataStorage: Zero-Friction Config Persistence in .NET
Persisting application config is the kind of work every project does, every project gets slightly wrong, and every project regrets having rolled its own. ktsu.AppDataStorage is the small library I built so I would never write that code again (safe writes, debounced saves, automatic backups, and a one-line API).
-
ktsu.Semantics: Type-Safe Strings, Paths, and Quantities in .NET
Primitive obsession is the bug class where everything is a string or a double and the compiler can't help. ktsu.Semantics is the library I built to make domain types impossible to misuse. Email addresses, file paths, temperatures, and user IDs become first-class types with built-in validation and zero runtime cost over their primitives.
-
Object Pooling and Memory Management in High-Performance .NET
Practical techniques for reducing GC pressure in .NET: object pooling, Span<T>, ArrayPool, LOH management, and continuous memory monitoring.
-
Threading and Synchronization Patterns in Production .NET Libraries
Practical threading patterns from production .NET code, including lock objects as parameters, thread dispatch queues, ReaderWriterLockSlim vs Lock, and how to actually test for thread safety.
-
Eliminating Primitive Obsession in C# with Semantic Types
How wrapping strings and paths in semantic types catches entire categories of bugs at compile time, and a look at the CRTP-based approach used in the ktsu.dev Semantics library.
-
C# Using Directives: IDE0055 Format Violations Don't Always Trigger as Expected
How C#'s IDE0055 formatting rule behaves with using directives, why some formatting problems never trigger a violation, and how to work around it.
-
C# Object Initializers Run After Code in the Default Constructor
How C# object initialization order works, why object initializers run after the default constructor, and how to design types around that behavior.
-
Debugging the Mysterious 'Unable to find a project to restore' Error in .NET
Debugging a cryptic .NET restore error that turns out to expose a design flaw in MSBuild's GUID-based project identity system, and why it bites anyone using Git worktrees or forks.