#587 – December 14, 2025
battle-tested patterns that help teams maintain large codebases
Hello! 👋
I can't believe it's almost the end of 2025. This year, I worked on the foundations and the less visible parts of the newsletter. It is back on a homebrewed self-hosted platform with improved deliverability and performance. Emails are more accessible and cleaner. And I'm following almost 1000 different authors and websites every day to find the most interesting articles.
I've put together a short survey so if you'd like to help me make the newsletter better in 2026 please fill it in. It shouldn't take more than 5 minutes. And you can participate in a $30 book voucher draw as a thank you for being an awesome reader. Here's the survey.
How to structure a .NET solution that actually scales
9 minutes by Mashrul Haque
Mashrul shares a practical guide to clean architecture folder structure, project organization, and dependency management in .NET—battle-tested patterns that help teams maintain large codebases.
5 Stories: How Developers Use Rider for Free
sponsored by Jetbrains
Discover five stories highlighting how developers use Rider for non-commercial projects—from building a digital board game to creating a new programming language and designing an AI-powered learning tool. These stories showcase the creativity driving .NET developers today. Read the full feature to see what the Rider community has been building.
Implementing cross-platform in-app billing in .NET MAUI applications
3 minutes by Gerald Versluis
With the discontinuation of the popular InAppBillingPlugin, many .NET MAUI developers have been looking for guidance on implementing in-app purchases in their applications. Gerald shares a comprehensive sample that demonstrates how to implement cross-platform billing for Android, iOS, Mac, and Windows using platform-specific APIs with a unified interface.
Enterprise patterns in real code
10 minutes by Chris Woodruff
Chris introduces a series about implementing Martin Fowler's enterprise architecture patterns in C# and .NET. Many development teams already use these patterns without realizing it, but implement them poorly. The series will explain 13 key patterns including Layered Architecture, Domain Model, Repository, and MVC with concrete C# examples. Each pattern article will show when to use it, when to avoid it, and how it connects to other patterns in real applications.
Why changing keyboard shortcuts in Visual Studio isn’t as simple as it seems
6 minutes by Mads Kristensen
Visual Studio's keyboard shortcuts are deeply tied to years of developer workflows and muscle memory. Changing a simple shortcut like Ctrl+W to close tabs is complex because it must consider multiple user profiles, keyboard schemes, scoped shortcuts, and existing sequenced commands. The team uses telemetry to see which shortcuts are used but can't determine user intent, making changes risky for established workflows.
.NET 10 networking improvements
11 minutes by Marie Píchová
As with every release, Microsoft team publishes a blog post about the new and interesting changes and additions in .NET networking space. This time, they are writing about HTTP improvements, new web sockets APIs, security changes and many distinct additions in networking primitives.
And the most popular article from the last issue was: