Hacker Blogs
Work in progress: 15,409 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #277

M

Mark Seemann

Personal blog · blog.ploeh.dkprogrammingcareer

Mark Seemann writes ploeh blog, a personal blog at blog.ploeh.dk about programming and career. Since 2012, 174 different Hacker News readers have linked it 248 times, most often “From Design Patterns to Category Theory (2017)”. It is still writing: the last post was on 2026-10-26, and you can follow it by feed.

Visit the blog
248mentions?
8recommend?
174HN people?
2012–2026first – last linked?
Links on Hacker News per year · peak 32 in 2019

Sometimes recommended · 8 of 40 sampled comments recommend it?

Why HN links it

HN readers link Mark Seemann's blog for pragmatic writing on dependency injection, functional design and REST. Commenters say it puts into words ideas they had felt but not articulated.

Recommended for · 8 comments
Called pragmatic, insightful and a tremendous source on dependency injection, and a fascinating archive.

Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Danish software design

Most-linked posts?

  1. From Design Patterns to Category Theory (2017)
    11 people · 11 mentions · first linked 2019-06-10
  2. Yes Silver Bullet (2019)
    7 people · 8 mentions · first linked 2019-07-01
  3. From dependency injection to dependency rejection
    6 people · 6 mentions · first linked 2019-04-14
  4. The Programmer as Decision Maker
    5 people · 5 mentions · first linked 2019-03-20
  5. You'll regret using natural keys
    4 people · 4 mentions · first linked 2024-06-04
  6. Visitor as a Sum Type (2018)
    4 people · 4 mentions · first linked 2020-03-13
  7. Functional architecture is Ports and Adapters (2016)
    4 people · 4 mentions · first linked 2019-09-04
  8. Type Driven Development
    3 people · 5 mentions · first linked 2021-08-17
  9. REST lesson learned: Avoid hackable URLs
    3 people · 4 mentions · first linked 2013-05-02
  10. Dependency Rejection
    3 people · 4 mentions · first linked 2020-12-26

What Hacker News says?

  1. shadowmint · 2017-09-27Recommends
    Only at a relatively trivial scale; and certainly, do that if your application is simple enough. There's probably a fair number of applications that clearly fall into the 'simple enough not to need redux' category. That's a good approach, seriously. You don't need redux at that point; don't use it. I'm not even suggesting such applications are 'trivial'; they probably just don't have excessively complex component hi…

    Comment linking /2012/11/06/WhentouseaDIContainer/

    on “React 16”
  2. Submitted You'll regret using natural keys as a story · 739 points

    HN discussion
  3. A fair question. Let me put it this way: in order to properly do unit tests, you need to decouple business logic from "integration code" (code that manipulates external systems). Dependency injection is one approach. However, with this approach the business logic still depends (now indirectly) on the integration code. Another approach is to model business logic using pure functions. Instead of business logic calling…

    Comment linking /2017/01/27/from-dependency-injection-to-dependency-rejection/

    on “TDD did not live up to expectations”
  4. Submitted From Design Patterns to Category Theory (2017) as a story · 411 points

    HN discussion
  5. Reminds me of "Appeal to Aithority". (not a typo) An LLM said it, so it must be true. https://blog.ploeh.dk/2025/03/10/appeal-to-aithority/

    Comment linking /2025/03/10/appeal-to-aithority/

    on “Define policy forbidding use of AI code generators”
  6. Submitted From design patterns to category theory as a story · 351 points

    HN discussion
  7. But who needs sum types when you have the visitor pattern :troll_face: https://blog.ploeh.dk/2018/06/25/visitor-as-a-sum-type/

    Comment linking /2018/06/25/visitor-as-a-sum-type/

    on “.NET 6 Released”
  8. Submitted The dispassionate developer as a story · 286 points

    HN discussion
  9. There isn't any one spot where he explicitly states the idea that wire-up is handled centrally, but the idea is threaded throughout the article. It's discussed a bit more explicitly by Mark Seemann here: http://blog.ploeh.dk/2011/07/28/CompositionRoot/ As for how this fits with abstract factories, in DI they exist to handle a specific problem: sometimes (but not always), actual instance construction has to be delaye…

    Comment linking /2011/07/28/CompositionRoot/

    on “Designing very large JavaScript applications”
  10. Submitted We need young programmers; We need old programmers as a story · 283 points

    HN discussion
  11. I've been following this series since the author started it. For context, when I first became aware of the Mark Seemann, he was very deep into the object-oriented way of doing things. I discovered him because he was the author of (the excellent) Dependency Injection in .NET . A while after writing that book, he started getting into F#, and eventually Haskell, and blogged about it all the while. The upshot being, his…

    Comment linking /2017/01/27/from-dependency-injection-to-dependency-rejection/

    on “From Design Patterns to Category Theory (2017)”
  12. Submitted Fortunately, I don't squash my commits as a story · 281 points

    HN discussion
  13. Here’s maybe one attempt at answer https://blog.ploeh.dk/2017/10/04/from-design-patterns-to-cat... As I take it the hope isn’t that all programmers would learn CT but rather that those who work on progressing the craft and our tools get at a proper formalism to work with for certain aspects that until now has been rather “soft”

    Comment linking /2017/10/04/from-design-patterns-to-category-theory/

    on “Category Theory for Programmers (2014) [pdf]”
  14. Submitted Learning Programming in an Age of LLMs as a story · 263 points

    HN discussion
  15. aside from 3Blue1Brown : I think category theory will give you an unique point of view of math, also basic logic and philosophy are very important for a good and solid foundation on math intuition. https://arxiv.org/abs/1803.05316 along with their youtube lectures. very basic but refreshing: https://www.youtube.com/playlist?list=PL8dPuuaLjXtNgK6MZucdY... if you are a programmer or developer: https://bartoszmilewski.…

    Comment linking /2017/10/04/from-design-patterns-to-category-theory/

    on “Ask HN: Best resources to gain math intuition?”
  16. Submitted The 80/24 Rule as a story · 170 points

    HN discussion
  17. Well, he just posted the second entry in the series. Let's hope he keeps posting that frequently. http://blog.ploeh.dk/2017/10/05/monoids-semigroups-and-frien...

    Comment linking /2017/10/05/monoids-semigroups-and-friends/

    on “From design patterns to category theory”
  18. Submitted Am I stuck in a local maximum? as a story · 136 points

    HN discussion
  19. > We're talking about REST best practices here, not "let's do RPC instead". I don't think so. Avernar above seems to argue against REST as an architectural style (RPC being the default as everybody uses it). I thought you were trying to defend REST with your example, and I wanted to point out a weakness in that example. > There's no reason for the webcam to hard-code URIs, and that's a violation of the architectural…

    Comment linking /2013/05/01/rest-lesson-learned-avoid-hackable-urls/

    on “Microsoft REST API Guidelines”
  20. Submitted Yes Silver Bullet (2019) as a story · 110 points

    HN discussion
  21. This is usually called the classical vs. mockist, or test interactions vs. test final state debate. Instead of mocks, some people prefer to build fakes / stubs which are versions of a dependency which are "fully operative" in a sense but with a simplified internal implementation. For example a repository that keeps entities in memory. (Not the same as an in-memory database! The fake repository wouldn't use SQL at al…

    Comment linking /2019/02/18/from-interaction-based-to-state-based-testing/

    on “Ask HN: What made you change your mind about a programming language/paradigm?”
  22. Submitted From dependency injection to dependency rejection as a story · 99 points

    HN discussion
  23. EDIT: Paste this hacky snippet into your browser's console to save all of the links into your clipboard: (() => { let result = [...document.querySelectorAll('td a')] .map((link) => link && !link.href.includes('ycombinator') && !link.href.includes('javascript:void') ? link.href : '' ) .filter(Boolean); result = [...new Set(result)]; result.sort(); copy(result.join('\n\n')); })(); Just to help, here's a compiled-list…

    Comment linking /archive/

    on “Ask HN: Great Blogs by Programmers”
  24. Submitted Semigroup Resonance FizzBuzz as a story · 86 points

    HN discussion
  25. dmux · 2022-02-07Recommends
    I've always found Mark Seemann's blog posts to be really pragmatic and insightful. He oftentimes puts to words things that I've always "felt" but hadn't quite found the thread to pull. https://blog.ploeh.dk/archive/

    Comment linking /archive/

    on “Ask HN: Great Blogs by Programmers”
  26. Submitted Less is more: language features as a story · 83 points

    HN discussion
  27. ItsMonkk · 2021-03-21Recommends
    Mark Seemann's blog I've been reading for the past couple years answers this question. In particular, his posts on Hexagonal Architecture[0] and Dependency Rejection[1], but there are many more articles that cover this and I highly endorse reading. To summarize, you want to set up your code into two distinct categories, data and pure functions. Your data is at the top level of your code, so if you need external data…

    Comment linking /2017/02/02/dependency-rejection/

    on “CUPID – the back story”
  28. Submitted Functional architecture is Ports and Adapters (2016) as a story · 77 points

    HN discussion
  29. The epiphany we had was that whilst machines do access the API, the developer is always the customer and user. Everything we do should help the developer, and if we have to break rules to help them... then largely we should. Thank you, this articulates my disagreement with the idea of hashing all URLs so that client developers are forced to follow links returned by the API instead of generating their own URLs http:/…

    Comment linking /2013/05/01/rest-lesson-learned-avoid-hackable-urls/

    on “Designing a Pragmatic RESTful API”
  30. Submitted Can Types Replace Validation? as a story · 53 points

    HN discussion

Search all of HN for blog.ploeh.dk

Linked by the same people?