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
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
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
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
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 · 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 · 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
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 · 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
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
It used to be easy to name my favorite developer conference, but after two days at @wearedevelopers.bsky.social World Congress in Berlin, I have to reconsider. With 10–15,000 attendees, it's less like a traditional developer conference and more like a tech festival.
130
Dennis Doomen @dennisdoomen.com · 08/07/2026
If a constructor dependency is only used by a single method, ask whether it belongs there at all. Passing it as a method parameter often produces a cleaner API and keeps the constructor focused on what the object actually needs.
100
Dennis Doomen @dennisdoomen.com · 07/07/2026
This Wednesday, I'll be travelling to #Berlin to join the @wearedevelopers.bsky.social World Congress. On Thursday, I'll be conference speaker and workshop trainer. And then on Friday, I'll be the stage moderator for half a day. Can't wait to be there again. Will I see you there?
100
Dennis Doomen @dennisdoomen.com · 01/07/2026
A class should do one thing well. It can model a primitive value like EmailAddress or ISBN, represent a business concept, hold plain data, or coordinate other classes. It should not do a mix of those. Good SRP warning signs: ❌And in the name ❌Hard to name or explain ⬇️
100
Dennis Doomen @dennisdoomen.com · 29/06/2026
Using AI tools to generate, suggest or refactor code is fine, but you are fully responsible for every line that ends up in the codebase. Do not merge AI-generated code without reviewing it, understanding it and verifying that it meets the same quality bar as hand-written code.
111
Dennis Doomen @dennisdoomen.com · 29/06/2026
Today, I'll drive to one of my favorite conferences in Germany, the wonderful Developer World - DWX. This year is going to be quite busy. I won't just do one, not two, but three different talks, all new and shiny. Can't wait to immerse myself in the Germany hospitality. Will I see you there?
110
Dennis Doomen @dennisdoomen.com · 27/06/2026
The days I have to work, my alarm clock rips me out of my sleep. The days I can sleep in, I wake up tired even before my usual work-day time.
010
Dennis Doomen @dennisdoomen.com · 26/06/2026
These days it's not uncommon for me to have 3-5 agent sessions running in parallel in JetBrains Junie, Claude Code and GitHub Copilot. What about you?
420
Dennis Doomen @dennisdoomen.com · 25/06/2026
Object-oriented design rests on four core principles. Understanding them is one thing; applying them correctly is what leads to maintainable software. #csharp #dotnet #softwareengineering
121
Dennis Doomen @dennisdoomen.com · 25/06/2026
YAGNI isn't about avoiding change. It's about avoiding premature complexity. Don't add abstraction layers, extension points, or configuration options for requirements that don't exist yet. Build for today's needs. Refactor when tomorrow arrives.
110
Dennis Doomen @dennisdoomen.com · 24/06/2026
Next week, I'll drive to one of my favorite conferences in Germany, the wonderful DWX Developer Week. This year is going to be quite busy with three different talks, all new and shiny. Can't wait to immerse myself in the Germany hospitality. Will I see you there?
100
Dennis Doomen @dennisdoomen.com · 20/06/2026
I'm really sad because I just finished the main story of Death Stranding 2 on the PC. Emotional story, graphics, music and acting. Now what do I play now?
000
Dennis Doomen @dennisdoomen.com · 18/06/2026
The simplest solution that fully solves the problem is usually best. Complexity makes code harder to read, test, debug and change. Avoid over-engineering, unnecessary abstraction, or clever tricks. If a junior dev can't grasp in one pass, it's too complex. Simplicity is a feature.
000
Dennis Doomen @dennisdoomen.com · 17/06/2026
OMG. We just crossed the 700-million downloads mark...
130
Dennis Doomen @dennisdoomen.com · 16/06/2026
Choose intuitive, predictable code. No surprises in naming, behavior, or side effects. Name clearly. Avoid side effects in getters. Follow conventions. Don’t break patterns without strong reason. Ask: would an experienced dev expect this?
220
Dennis Doomen @dennisdoomen.com · 04/06/2026
Released .NET Starter Kit v1.8 for building binary or source-only NuGet packages via GitHub or AZDO. New: .slnx solutions, Azure DevOps pipeline templates, C# Coding Guidelines skills, .NET 10, updated dependencies, a Fallout-based build pipeline, and .editorconfig refinements.
070
Dennis Doomen @dennisdoomen.com · 03/06/2026
Released Mockly 1.7 + FluentAssertions.Mockly. What's new? Request header matching, generic For(HttpMethod)/Head/Options, ProblemDetails responses, file/stream/bytes responders, query & form matching, response headers, new assertions, and automatic agent skill registration. mockly.org
010