Mark Seemann
ploeh.dk
Mark Seemann
@ploeh.dk
#repostfriday Do ORMs reduce the need for mapping? blog.ploeh.dk/2023/09/18/d...
Do ORMs reduce the need for mapping?
With some Entity Framework examples in C#.
blog.ploeh.dk
February 13, 2026 at 7:46 AM
New article: Simplifying assertions with lenses. blog.ploeh.dk/2026/02/09/s...
Simplifying assertions with lenses
Get ready for some cryptic infix operators.
blog.ploeh.dk
February 9, 2026 at 1:58 PM
#repostfriday Test-driving the pyramid's top. blog.ploeh.dk/2023/07/31/t...
Test-driving the pyramid's top
Some thoughts on TDD related to integration and systems testing.
blog.ploeh.dk
February 6, 2026 at 12:41 PM
Unpopular(?) opinion: Marker interfaces are code smells.
February 4, 2026 at 1:11 PM
Other readers are showing their appreciation of ploeh blog by supporting it. You, too, can do that. blog.ploeh.dk/support
Support the blog
Ploeh blog is free, and always has been. Keep it free.
blog.ploeh.dk
February 3, 2026 at 10:16 AM
New article: Code that fits in a context window. blog.ploeh.dk/2026/02/02/c...
Code that fits in a context window
AI-friendly code?
blog.ploeh.dk
February 2, 2026 at 12:24 PM
Works on most machines
TDD encourages deployment flexibility. Functional programming also helps.
blog.ploeh.dk
January 30, 2026 at 7:19 AM
Some thoughts about the (far?) future use of AGI for programming. My 2024 IT Days keynote "There's no Voight-Kampff test": youtu.be/X_SsnmZ4Dlc?...
There's no Voight-Kampff test
YouTube video by Today Software Magazine
youtu.be
January 28, 2026 at 8:37 AM
New article: AI-generated tests as ceremony. blog.ploeh.dk/2026/01/26/a...
AI-generated tests as ceremony
On epistemological soundness of using LLMs to generate automated tests.
blog.ploeh.dk
January 26, 2026 at 9:15 AM
#repostfriday When is an implementation detail an implementation detail? blog.ploeh.dk/2023/06/19/w...
When is an implementation detail an implementation detail?
On the tension between encapsulation and testability.
blog.ploeh.dk
January 23, 2026 at 6:31 AM
New article: Filtering as domain logic. blog.ploeh.dk/2026/01/19/f...
Filtering as domain logic
Performance and correctness are two independent concerns with overlapping solutions.
blog.ploeh.dk
January 19, 2026 at 9:25 PM
I still get a chuckle out of this example. #repostfriday AI for doc comments. blog.ploeh.dk/2023/07/10/a...
January 16, 2026 at 2:27 PM
New article: Two regimes of Git. blog.ploeh.dk/2026/01/12/t...
Two regimes of Git
Using Git for CI is not the same as Tactical Git.
blog.ploeh.dk
January 12, 2026 at 8:40 AM
#repostfriday Favour flat code file folders. blog.ploeh.dk/2023/05/29/f...
Favour flat code file folders
How code files are organised is hardly related to sustainability of code bases.
blog.ploeh.dk
January 9, 2026 at 7:07 AM
Happy new year. Over two incarnations, ploeh blog is now 20 years old and sports 946 articles. A few kind souls find it useful enough to sponsor it. You can join them: blog.ploeh.dk/support
Support the blog
Ploeh blog is free, and always has been. Keep it free.
blog.ploeh.dk
January 6, 2026 at 3:15 PM
On this date, twenty years ago, I published my first blog post on the now-defunct MSDN blog. Still, it counts as an anniversary of sorts, I think. learn.microsoft.com/en-us/archiv...
Service Locator 1.1 Available
learn.microsoft.com
January 5, 2026 at 3:38 PM
New article: Coupling from a big-O perspective. blog.ploeh.dk/2026/01/05/c...
Coupling from a big-O perspective
Don't repeat yourself (DRY) implies O(1) edits.
blog.ploeh.dk
January 5, 2026 at 11:55 AM
New article: Git integration is ten years away. blog.ploeh.dk/2025/12/29/g...
Git integration is ten years away
We'll get commercial nuclear fusion earlier.
blog.ploeh.dk
December 29, 2025 at 9:12 AM
Fit URLs
Keep REST API URLs evolvable. A way to address Hyrum's law.
blog.ploeh.dk
December 26, 2025 at 2:25 PM
New article: Test-specific Eq. blog.ploeh.dk/2025/12/22/t...
Test-specific Eq
Adding Eq instances for better assertions.
blog.ploeh.dk
December 22, 2025 at 8:32 AM
"System.ArgumentException: Parameter is not valid."

Gee, thanks. Which parameter? What was the value? What constitutes a valid value?

Please write better exception messages. blog.ploeh.dk/2014/12/23/e...
Exception messages are for programmers
Exception messages should be aimed at other developers, not end users.
blog.ploeh.dk
December 20, 2025 at 3:10 PM
New article: Tautological assertions are not always caused by aliasing. blog.ploeh.dk/2025/12/15/t...
Tautological assertions are not always caused by aliasing
You can also make mistakes that compile in Haskell.
blog.ploeh.dk
December 15, 2025 at 2:17 PM
In the long run
Software design decisions should be time-aware.
blog.ploeh.dk
December 12, 2025 at 2:17 PM
TIL that it's possible to yield from within #fsharp lists:

> [yield 1; yield! [2;3]; yield 4];;
val it: int list = [1; 2; 3; 4]
December 10, 2025 at 6:06 PM