Sign in

Dennis Doomen

@dennisdoomen.com
1.8K followers 685 following 1.5K posts

Microsoft MVP | Coding Architect | .NET Tech Lead | .NET & C# | TypeScript | Fluent Assertions Author | International Speaker | Occasional Trainer | React & VueJS | Event Sourcing Veteran | DDD Designer | TDD Practitioner | Clean Code Writer

PostsRepliesMedia
Dennis Doomen @dennisdoomen.com · 29/09/2026
PackageGuard 2.8 adds gated policies so you can prevent your builds from succeeding based on a various quality, operation and security attributes. Read all about that at www.dennisdoomen.com/2026/09/pack...
000
Dennis Doomen @dennisdoomen.com · 28/09/2026
Few conferences leave such a lasting impression as Techorama does, so I'm happy that, again, I'm playing a small part in their impressive line-up. To celebrate that, I can offer you a discount of 100 euros through tickets.techorama.nl/2026/redeem?... Will I see you there?
010
Dennis Doomen @dennisdoomen.com · 17/09/2026
v2.7 of PackageGuard makes it easy to figure out why your codebase is using a specific NuGet or NPM package. It will show where in your project a particular package is used, which version was resolved and risks exists. Learn more about this at packageguard.org/docs/explain
000
Dennis Doomen @dennisdoomen.com · 15/09/2026
Tomorrow, I'll be travelling to Oslo to speak at the renowned @ndcconferences.com. Although this is my 7th NDC, I remain humbled to be at the one that started it all. Will I see you there?
000
Dennis Doomen @dennisdoomen.com · 14/09/2026
This evening, we've released Fluent Assertions 8.11. Check out the detailed release notes at github.com/fluentassert... #mvpbuzz #unittesting #assertions
000
Dennis Doomen @dennisdoomen.com · 10/09/2026
PackageGuard, the fully open-source alternative to tools like Snyk, Black Duck and others, has just received an update that improves the risk report by removing overlapping risk factors and include all the vulnerabilities details. Also check out the new website at packageguard.org
000
Dennis Doomen @dennisdoomen.com · 09/09/2026
Mockly, the open-source HTTP mocking library for .NET is getting better and better. Check out some of the newest features that got released over the weekend in the image below, or read the docs at mockly.org/docs/advance...
010
Dennis Doomen @dennisdoomen.com · 08/09/2026
Pathy, the source-only .NET library that makes working with files and directories a very fluent experience, received a new version. Check it out at github.com/dennisdoomen...
010
Dennis Doomen @dennisdoomen.com · 07/09/2026
Reflectify, a source-only open-source package with tons of Reflection smartness, got a new release. Check out the release notes at github.com/dennisdoomen... #mvpbuzz #dotnet #csharp #oss
001
Dennis Doomen @dennisdoomen.com · 07/09/2026
When should a C# operation be a method rather than a property? Use a method if it’s expensive, performs a conversion, returns a different result each call, or causes side effects. Lazy-loading and internal caching are reasonable exceptions. #csharp #codingguidelines #codingconventions
010
Dennis Doomen @dennisdoomen.com · 04/09/2026
My weekly Claude Team limit got reset halfway the week and will reset again tomorrow. Did that happen to anybody else?
200
Dennis Doomen @dennisdoomen.com · 31/08/2026
Properties should be stateless with respect to other properties. Setting DataSource then DataMember should have the same result as the reverse. Sounds trivial, but I've seen plenty of classes where properties were anything but simple. #csharp #codingguidelines #classdesign #codingconventions
100
Dennis Doomen @dennisdoomen.com · 31/08/2026
I've just burned through my 5-hour limit and 13% of my weekly limit in 38 minutes and I don't even understand what happened. Using Cloud Team and Sonnet 5.
200
Dennis Doomen @dennisdoomen.com · 27/08/2026
PackageGuard, your totally free NuGet/NPM package scanning and risk reporting tool now supports generating a Software Bill Of Materials (SBom) in CycloneDX and SPDX format. Check out the documentation at github.com/dennisdoomen... Stay tuned for even more awesome features soon...
000
Dennis Doomen @dennisdoomen.com · 27/08/2026
I always had a wish to replay "The Witcher 3", but that has now become a definitive plan.... www.youtube.com/watch?v=IGk1...
youtube.com
The Witcher 3: Wild Hunt — Remastered | Official Announcement Trailer
YouTube video by The Witcher
010
Dennis Doomen @dennisdoomen.com · 25/08/2026
💡And for those that are concerned about the dependency hell. Reflectify ships as a source-only package. In other words, it compiles the code into your project without any visible binary dependencies.
000
Dennis Doomen @dennisdoomen.com · 25/08/2026
Over the weekend, I've released Reflectify 1.10, a NuGet package that replaces all that hand-rolled Reflection code with battle-tested extension methods. Check out the release notes at github.com/dennisdoomen...
100
Dennis Doomen @dennisdoomen.com · 25/08/2026
I love this new description of the term IDE in the age of AI #dotnetdaych
010
Dennis Doomen @dennisdoomen.com · 20/08/2026
Looking forward to my first real .NET conference in Switzerland. And let's start the conference season on a high note with two talks in the same day. Will I see you there? #mvpbuzz #dotnetdaych
130
Dennis Doomen @dennisdoomen.com · 17/08/2026
All the books...
000
Dennis Doomen @dennisdoomen.com · 17/08/2026
During the weekend, I've released Mockly 1.11, the new in-memory HTTP mocking library in town. This version allows you to simulate delayed responses or requests that throw exceptions. Check out the docs at mockly.org
010
Dennis Doomen @dennisdoomen.com · 17/08/2026
If you love Band of Brothers like me and remember every scene episode by episode, check out this amazing reunion. www.youtube.com/watch?v=xMaM...
youtube.com
The Actors Roundtable | 25th Anniversary 'Band of Brothers' Symposium
YouTube video by The National WWII Museum
260
Dennis Doomen @dennisdoomen.com · 14/08/2026
Want to learn more about high-quality software development? Check out csharpcodingguidelines.com
csharpcodingguidelines.com
Introduction
for all C# versions up to v14
000
Dennis Doomen @dennisdoomen.com · 14/08/2026
Want to learn more about high-quality software development? Check out csharpcodingguidelines.com
csharpcodingguidelines.com
Introduction
for all C# versions up to v14
000
Dennis Doomen @dennisdoomen.com · 14/08/2026
Check it out at docs.fallout.build
docs.fallout.build
Fallout
Build automation for C#/.NET — the hard-fork successor to NUKE
000
Dennis Doomen @dennisdoomen.com · 14/08/2026
The 2026-2027 MVP ring has finally made it from the US. #mvpbuzz
010
Dennis Doomen @dennisdoomen.com · 13/08/2026
We released Fallout 10.4—the first new version since Nuke was abandoned. Fallout replaces messy YAML pipelines with refactorable, debuggable, navigable C#. • Inspired by Make • Makes Azure DevOps → GitHub Actions migration easier • Used in my OSS & client projects
340
Dennis Doomen @dennisdoomen.com · 12/08/2026
C# 12 primary constructors reduce boilerplate when capturing dependencies. Prefer when: ✅ Constructor only captures dependencies/config ✅ No complex initialization Avoid when: ✅ Validation or non-trivial initialization is needed #csharp #codingguidelines #classdesign
120
Dennis Doomen @dennisdoomen.com · 10/08/2026
Prefer a single-method interface when state matters, the contract is strong (IDisposable, IEquatable), default interface methods help, or more members are likely soon. #codingstandards #csharp #codingguidelines #designpractices #bestpractices
100
Dennis Doomen @dennisdoomen.com · 10/08/2026
An interface with one method is often just a named function signature. If it is not likely to grow, a delegate is simpler, more loosely coupled, and easier to test.
211
Dennis Doomen @dennisdoomen.com · 06/08/2026
Want to learn more about high-quality software development? Check out csharpcodingguidelines.com
csharpcodingguidelines.com
Introduction
for all C# versions up to v14
010
Dennis Doomen @dennisdoomen.com · 05/08/2026
Choosing between records and classes in C# matters! Records: data-focused, immutable, structural equality (DTOs, value objects) Classes: behavior-focused, mutable state, identity-based Record struct: small immutable values (stack allocation) Mix them and you've got a design problem. #CSharp
100
Dennis Doomen @dennisdoomen.com · 05/08/2026
Want to learn more about high-quality software development? Check out csharpcodingguidelines.com
110
Dennis Doomen @dennisdoomen.com · 04/08/2026
...that are used to transfer data over a communication channel, also called Data Transfer Objects, or a class that wraps several parameters of a method. For DTOs, consider using an immutable record type instead of a class to make the intent explicit. #csharp #codingguidelines #classdesign #
100
Dennis Doomen @dennisdoomen.com · 04/08/2026
In general, if you find a lot of data-only classes in your code base, you probably also have a few (static) classes with a lot of behavior. Use the principles of object-orientation explained and move the logic close to the data it applies to. ⚠️The only exceptions to this rule are classes...
120
Dennis Doomen @dennisdoomen.com · 29/07/2026
💡 Inversion of Control or Dependency Injection frameworks sometimes require exposing a dependency as a public property. If it's only used for dependency injection and nothing else, I wouldn't consider that a violation. #bestpractices #codingdesign #codingguidelines #csharp
000
Dennis Doomen @dennisdoomen.com · 29/07/2026
By doing so, calling code becomes coupled to the underlying class you're using, making it harder to replace or refactor later. 💡 Fluent Interfaces may look like a violation, but they're simply returning themselves to enable method chaining, so they don't break the intent of the rule...
100
Dennis Doomen @dennisdoomen.com · 29/07/2026
If you find yourself writing code like this someObject.SomeProperty.GetChild().Foo() ...then you may be violating the Law of Demeter. An object should not expose other classes it depends on, because callers may misuse that exposed property or method to access the object behind it...
110
Dennis Doomen @dennisdoomen.com · 29/07/2026
Want to learn more about high-quality software development? Check out csharpcodingguidelines.com
010
Dennis Doomen @dennisdoomen.com · 23/07/2026
...class. A less subtle example is not honoring the behavior expected by the base class. #bestpractices #codingdesign #codingguidelines #csharp
100
Dennis Doomen @dennisdoomen.com · 23/07/2026
In other words, you should be able to pass an instance of a derived class wherever its base class is expected, without the callee knowing the derived class. A very notorious example of a violation of this rule is throwing a NotImplementedException when overriding methods from a base...
100
Dennis Doomen @dennisdoomen.com · 21/07/2026
Did you know there's a great way to start building an (open-source) library in .NET that comes with everything you'd expect from a professional package? And did you know it supports GitHub and Azure DevOps? If not, check out github.com/dennisdoomen.... Version 1.9 was released over the weekend.
040
Dennis Doomen @dennisdoomen.com · 16/07/2026
✅7 done 🎤5 to go Hope to see you after the summer... #mvpbuzz
000
Dennis Doomen @dennisdoomen.com · 16/07/2026
Do you know organizations that use GitHub with Enterprise Managed Accounts and Data Residency. If so, why (not)?
000
Dennis Doomen @dennisdoomen.com · 15/07/2026
Yes, and my 4th year as an MVP is in the pocket. #mvpbuzz
1130
Dennis Doomen @dennisdoomen.com · 14/07/2026
...IProvideClusterwideLock that describe what the interface does rather than what class implements it. #csharpguidelines #cleancoding #bestpractices
000
Dennis Doomen @dennisdoomen.com · 14/07/2026
...to call or implement the interface related to a particular task. This rule is more commonly known as the Interface Segregation Principle. 💡Avoid taking the name of the class and slapping an "I" in front of it. Instead, consider using role-based names like IFetchSomething or...
100
Dennis Doomen @dennisdoomen.com · 14/07/2026
Interfaces should have a name that clearly explains their purpose or role in the system. Do not combine many vaguely related members on the same interface just because they were all on the same class. Separate the members based on the responsibility of those members, so that callers only need...
120
Dennis Doomen @dennisdoomen.com · 13/07/2026
Getting there was an adventure. A last-minute technical issue canceled my KLM flight at the gate. I picked up my luggage, got in the car, and drove to Berlin instead. That's how much I didn't want to miss this event.
000
Dennis Doomen @dennisdoomen.com · 13/07/2026
The atmosphere at WeAreDevelopers is incredible. The energy starts with the opening session and keeps going until the end of the day. It's one of those events where you constantly run into interesting people and conversations.
100