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

Top all-time · #2819

C

Chris Penner

Personal blog · chrispenner.ca/postsprogramming

Chris Penner's personal blog at chrispenner.ca covers programming. Since 2015, 27 different Hacker News readers have linked it 35 times, most often “Beating Decades of Optimized C with 80 Lines of Haskell”. It is still writing: the last post was on 2025-11-11, and you can follow it by feed.

Visit the blog
35mentions?
27HN people?
2015–2026first – last linked?
Links on Hacker News per year · peak 15 in 2025

Too few sampled comments (7) to say how often HN recommends it.?

Why HN links it

HN commenters link these posts on the expressiveness spectrum of Applicative, Selective, Monad and Arrow abstractions, on event sourcing and effects, and on word-counting performance and Haskell parallel word counting.

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

The Personal blog and musings of Chris Penner, a designer, developer and future opsimath.

Most-linked posts?

  1. Beating Decades of Optimized C with 80 Lines of Haskell
    4 people · 4 mentions · first linked 2019-10-15
  2. Ditch your mutex, you deserve better
    3 people · 3 mentions · first linked 2025-11-11
  3. You Should Add Debug Views to Your DB
    3 people · 3 mentions · first linked 2025-08-15
  4. Monads are too powerful: The expressiveness spectrum
    3 people · 3 mentions · first linked 2025-09-27
  5. Exploring Arrows for Sequencing Effects
    2 people · 3 mentions · first linked 2025-10-17
  6. Silly job interview questions in Haskell
    2 people · 2 mentions · first linked 2020-10-15
  7. Generalizing 'jq' and Traversal Systems using optics and standard monads
    2 people · 2 mentions · first linked 2020-10-07

What Hacker News says?

  1. Luckily, that very article exists! https://chrispenner.ca/posts/wc Edit: upon reading the article it seems like the'yre different kinds of word counting. Still interesting and worth reading nevertheless!

    Comment linking /posts/wc

    on “Performance comparison: counting words in Python, Go, C++, C, Awk, Forth, Rust”
  2. Submitted Tail recursion in Python as a story · 193 points

    HN discussion
  3. Yes, there are a number of them. Here are some examples off the top of my head: - Moggi was studying the problem of equivalence of programs, and noted that the traditional approach to modeling a program as a total function Input -> Output is problematic. He pioneered the use of monads and Kleisli categories as a foundation for reasoning about equivalence of real programs, including all the real-world nastiness like…

    Comment linking /posts/traversal-systems

    on “Category Theory in Programming”
  4. Submitted Beating Decades of Optimized C with 80 Lines of Haskell as a story · 162 points

    HN discussion
  5. I'm experimenting with this for client-server design in game development, to ensure that the clients are in sync with the server: since the only way to change the game state is through events, I (as a developer) am unable to forget to implement some notification for something that happens. This also gets me match replays as an extra. I came across the Update Monad [1] while researching how to use Event Sourcing in f…

    Comment linking /posts/update-monad

    on “Event Sourcing (2005)”
  6. Submitted Generalizing 'jq' and Traversal Systems using optics and standard monads as a story · 161 points

    HN discussion
  7. > Why is this taken as a given to be a good thing? So that we can prove things about software more easily. If we only write stateful imperative programs, we're stuck with tons of Hoare triples and separation logic rather than being able to use equational reasoning or type-driven deductions. For example, this person wrote a parallel wc in Haskell, and they used semigroups to parallelize the word counting. https://chr…

    Comment linking /posts/wc

    on “Total Functional Programming (2004) [pdf]”
  8. Submitted Ditch your mutex, you deserve better as a story · 139 points

    HN discussion
  9. took a bit less than five years :) https://chrispenner.ca/posts/arrow-effects

    Comment linking /posts/arrow-effects

    on “Monads are too powerful: The expressiveness spectrum”
  10. Submitted Silly job interview questions in Haskell as a story · 90 points

    HN discussion
  11. Now we're just having a semantic argument over the word "expressiveness", which is not especially interesting; see https://chrispenner.ca/posts/expressiveness-spectrum . My argument above remains true regardless of the terms you choose to use.

    Comment linking /posts/expressiveness-spectrum

    on “How Our Rust-to-Zig Rewrite Is Going”
  12. Submitted You Should Add Debug Views to Your DB as a story · 89 points

    HN discussion
  13. https://chrispenner.ca/posts/expressiveness-spectrum has some good examples showing why one might want selectives (then continues to explore arrows https://chrispenner.ca/posts/arrow-effects )

    Comment linking /posts/arrow-effects

    on “Selective Applicative Functors”
  14. Submitted Monads are too powerful: The expressiveness spectrum as a story · 66 points

    HN discussion
  15. Submitted Optics and Regex: Greater than the sum of their parts as a story · 24 points

    HN discussion
  16. Submitted Ditch your (mut)ex, you deserve better as a story · 16 points

    HN discussion
  17. Submitted Ditch your (mut)ex, you deserve better as a story · 16 points

    HN discussion
  18. Submitted Beating Decades of Optimized C with 80 Lines of Haskell as a story · 14 points

    HN discussion
  19. Submitted Monads Are Too Powerful: The Expressiveness Spectrum as a story · 5 points

    HN discussion
  20. Submitted Using traversals to batch database queries as a story · 4 points

    HN discussion
  21. Submitted Silly job interview questions in Haskell as a story · 3 points

    HN discussion
  22. Submitted Vim vs. Emacs; is it really a competition? as a story · 3 points

    HN discussion
  23. Submitted A Practical Introduction to Finger Trees as a story · 2 points

    HN discussion
  24. Submitted ASTs with Fix and Free as a story · 2 points

    HN discussion
  25. Submitted Add debug views to your DB as a story · 2 points

    HN discussion
  26. Submitted Building Type Search for Unison as a story · 2 points

    HN discussion
  27. Submitted Exploring Arrows for Sequencing Effects as a story · 1 points

    HN discussion
  28. Submitted Add debug views to your DB as a story · 1 points

    HN discussion
  29. Submitted Building Industrial Strength Software Without Unit Tests as a story · 1 points

    HN discussion
  30. Submitted Simpler and safer API design using GADTs as a story · 1 points

    HN discussion

Search all of HN for chrispenner.ca

Linked by the same people?