Recent Posts
Less code is often better
Early in my software engineering career, a senior engineer at Microsoft told me “the best solution is one that requires no new code.” At the time, I thought this was nonsense. Is not my role as a software engineer to write code? Why would writing less or no code be better? More code means more bug fixes, more features, more services, and more tools. So why is more not always better?
Deep-dive into .NET Core primitives, part 3: runtimeconfig.json in depth
Selecting .NET Core's runtime settings, versions, rollforward policy, and more
.NET Core applications contain a file named <something>.runtimeconfig.json
. This file can be used to control
a variety of options. Most developers need not be concerned with it because the SDK
generates the file, but I think it’s worth understanding. The file can be used to control settings which are
not surfaced in Visual Studio, such as automatically running your app on higher .NET Core versions,
tuning thread pools and garbage collection, and more.
Deep-dive into .NET Core primitives, part 2: the shared framework
A closer look at Microsoft.AspNetCore.App and common pitfalls
Shared frameworks have been an essential part of .NET Core since 1.0. ASP.NET Core shipped as a shared framework for the first time in 2.1. You may not have noticed if things are working smoothly, but there have been some bumps and ongoing discussion about its design. In this post, I will dive deep into the shared frameworks and talk about some common developer pitfalls.
.NET Core Plugins
Introducing an API for loading .dll files (and their dependencies) as 'plugins'
I recently published a new package for .NET Core developers that want to implement a plugin system. Dynamic assembly loading in .NET Core is difficult to get right. The API in this package wrangles the complexity through a feature called ‘load contexts’. In this post, I’ll walk through problems that motivated the creation of this project, and explain what the API can do. My hope is that this plugin API will let you focus more on writing your app, and put an end to the inevitable mess of creating your own assembly loading code.