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 · #1608

P

Path-Sensitive

Personal blog · pathsensitive.com · on HN as Darmaniprogrammingdesign

Path-Sensitive is a personal blog at pathsensitive.com about programming and design. Since 2018, 47 different Hacker News readers have linked it 82 times, most often “Defunctionalize the Continuation”. The last post was in 2024, but the archive is still widely read.

Visit the blog
82mentions?
47HN people?
2018–2026first – last linked?
Links on Hacker News per year · peak 19 in 2018

Essays by Jimmy Koppel (MIT PhD, founder of Mirdin) on software design, code quality, abstraction, and the ideas behind better programming tools.

The author on HN?

Darmani · 1,555 karma · member since 2007

My life mission is to reduce the global cost of software maintenance by 100x.I've worked in programming tools for 15 years across 5 companies, graduated with 2 degrees at age 20 from CMU, won the "20 Under 20" Thiel Fellowship, and have a Ph. D. in programming languages from MIT. My work has been featured in the New York Times. As a cofounder of UpToSpeed, we are solving the problem that AI is making us 10x faster at writing code, and yet our ability to understand code remains as slow as ever A…

From their public HN profile, which links to this site.

Most-linked posts?

  1. Defunctionalize the Continuation
    8 people · 8 mentions · first linked 2019-07-15
  2. Programmers Should(N't) Learn Theory
    5 people · 6 mentions · first linked 2021-03-15
  3. Abstraction: Not what you think it is
    5 people · 5 mentions · first linked 2022-03-29
  4. The Benjamin Franklin method for learning more from programming books
    4 people · 5 mentions · first linked 2018-01-22
  5. Book Review: A Philosophy of Software Design
    4 people · 4 mentions · first linked 2018-10-29
  6. 'Modules Matter' Most for the Masses
    4 people · 4 mentions · first linked 2023-03-31
  7. When your data model means something else
    3 people · 4 mentions · first linked 2018-07-18
  8. The Best Refactoring You've Never Heard Of
    3 people · 3 mentions · first linked 2022-02-28
  9. Puzzles to convince you you don't understand dependence
    3 people · 3 mentions · first linked 2022-09-30
  10. My favorite principle for code quality
    2 people · 3 mentions · first linked 2018-02-14

What Hacker News says?

  1. Jimmy Koppel wrote about this 6 years ago [1]. It's one of the first exercises in his software design course [2]. Two identical pieces of code can have different specifications. # x is an age of a person; the code checks if the person is past the retirement age in the US def is_of_retirement_age(x): return x >= 65; # x is an ASCII character which is already known to be alphanumeric; this code checks if it’s a letter…

    Comment linking /2018/01/the-design-of-software-is-thing-apart.html

    on “Don't DRY Your Code Prematurely”
  2. Submitted The Benjamin Franklin method for learning more from programming books as a story · 574 points

    HN discussion
  3. Prototype. Make a pen-and-paper version, pantomime the game, tell the story -- do something to test the game's excitement power before building it. http://www.pathsensitive.com/2015/10/the-prototype-stereotyp...

    Comment linking /2015/10/the-prototype-stereotype.html?m=1

    on “Sales mistakes that software engineers make”
  4. Submitted Developer tools can be magic but instead collect dust as a story · 496 points

    HN discussion
  5. I bailed on high school math, thinking I'm math dumb. In my late 20s I decided to try again, but jumped straight into calculus. And at first regretted that decision. However, I got lucky by stumbling upon this book: https://www.amazon.com/Calculus-Made-Easy-Silvanus-Thompson/... It "reads" like a book, with the ideas given context. I had an "ok" connection with Algebra, and the book explained the rest well enough fo…

    Comment linking /2018/01/the-benjamin-franklin-method-of-reading.html

    on “How to Study Mathematics (2017)”
  6. Submitted Book Review: A Philosophy of Software Design as a story · 349 points

    HN discussion
  7. When discussing the definition of abstraction, Koppel's article "Abstraction: Not What You Think It Is" offers a helpful framing and disambiguation. https://www.pathsensitive.com/2022/03/abstraction-not-what-y...

    Comment linking /2022/03/abstraction-not-what-you-think-it-is.html

    on “That's not an abstraction, that's a layer of indirection”
  8. Submitted The Practice is not the Performance: Why project-based learning fails as a story · 241 points

    HN discussion
  9. This is such a great quote, and helps explain what is a good abstraction. Because CRDTs have been in the zeitgeist a lot lately, I want to pick them as an example of a "good" abstraction. CRDTs have mathematical properties which can be described and understood independently of a specific implementation. And importantly, you can judge whether an implementation is correct with reference to these abstract rules. This m…

    Comment linking /2022/03/abstraction-not-what-you-think-it-is.html?m=1

    on “That's not an abstraction, that's a layer of indirection”
  10. Submitted Defunctionalize the Continuation as a story · 236 points

    HN discussion
  11. Here is a counter argument: http://www.pathsensitive.com/2018/10/book-review-philosophy-... My summary would be: The spec must cover all possible implementations so it is usually larger than the most simple one. An example from there: > The authors of SibylFS tried to write down an exact description of the `open` interface. Their annotated version of the POSIX standard is over 3000 words. Not counting basic machiner…

    Comment linking /2018/10/book-review-philosophy-of-software.html

    on “Cold Showers: For when people get too hyped up about things”
  12. Submitted The Design of Software is a Thing Apart as a story · 198 points

    HN discussion
  13. For Elixir specifically, I liked Dave Thomas’ Elixir for Programmers. https://codestool.coding-gnome.com/courses/elixir-for-progra... For learning about performance and low level stuff, Casey Muratori’s Performance Aware Programming course has been great. https://computerenhance.com For higher level software design stuff (beyond just GoF patterns), check out James Koppel’s writing at https://www.pathsensitive.com/ a…

    Comment linking /

    on “Ask HN: Programming Courses for Experienced Coders?”
  14. Submitted My favorite principle for code quality as a story · 189 points

    HN discussion
  15. Level 1, level 2 and level 3 are the authors conceptions. Another post of his details what he means... http://www.pathsensitive.com/2018/01/the-three-levels-of-sof...

    Comment linking /2018/01/the-three-levels-of-software-why-code.html?m=1

    on “Book Review: A Philosophy of Software Design”
  16. Submitted Abstraction: Not what you think it is as a story · 163 points

    HN discussion
  17. There appears to be a fuller version of this talk on the author's own site: http://www.pathsensitive.com/2019/07/the-best-refactoring-yo... Agreed it's quite good.

    Comment linking /2019/07/the-best-refactoring-youve-never-heard.html

    on “Defunctionalisation: An underappreciated tool for writing good software”
  18. Submitted Why code that never goes wrong can still be wrong as a story · 134 points

    HN discussion
  19. > So.... this is just a fancy name for the advice "give your functions a name"? Not quite: "defunctionalization" is a name for replacing functions with not-functions (data structures). (And IMO it's the most unfancy name one can give to that activity, as the name literally just indicates "removing functions"... I can't think of a less fancy name for it: maybe "un-function-ize"? But that's pretty much the same as "de…

    Comment linking /2019/07/the-best-refactoring-youve-never-heard.html

    on “Defunctionalisation: An underappreciated tool for writing good software”
  20. Submitted Book Review: "Tidy First?" By Kent Beck as a story · 85 points

    HN discussion
  21. Prior Art: "The Best Refactoring You've Never Heard Of" http://www.pathsensitive.com/2019/07/the-best-refactoring-yo...

    Comment linking /2019/07/the-best-refactoring-youve-never-heard.html

    on “Defunctionalisation: An underappreciated tool for writing good software”
  22. Submitted Elements of Programmnig as a story · 45 points

    HN discussion
  23. This is a technique worth talking/writing about a bit more. Sometime ago, Jimmy Koppel also wrote somewhat extensively about defunctionalization and refunctionalization as "refactoring" techniques - http://www.pathsensitive.com/2019/07/the-best-refactoring-yo...

    Comment linking /2019/07/the-best-refactoring-youve-never-heard.html

    on “Defunctionalisation: An underappreciated tool for writing good software”
  24. Submitted Puzzles to convince you you don't understand dependence as a story · 31 points

    HN discussion
  25. To people who are experienced in writing out the full interface of modules, ie their assumptions and guarantees, it's quite clear that being a "deep module" in Ousterhout's sense is quite rare and often undesirable, and that Ousterhout's examples of deep modules are actually shallow. See https://www.pathsensitive.com/2018/10/book-review-philosophy... He gets a lot of other stuff right though. Love his writing on com…

    Comment linking /2018/10/book-review-philosophy-of-software.html?m=1

    on “Ask HN: Good books on philosophy of engineering?”
  26. Submitted Should you split that file? as a story · 26 points

    HN discussion
  27. "Define errors out of existence" might sound like "make illegal states unrepresentable," it's actually not. Instead it's a pastiche of ideas rather foreign to most FP readers, such as broadening the space of valid inputs of a function. One of his examples is changing the substr function to accept out of bounds ranges. You might be interested in my review. I'm a Haskeller at heart, although the review draws more from…

    Comment linking /2018/10/book-review-philosophy-of-software.html

    on “Ideas from "A Philosophy of Software Design"”
  28. Submitted Solving the Dog-Bunny Puzzle with Program Verification Technology as a story · 25 points

    HN discussion
  29. Mutual single recursion is still a loop; you just pick where you want to cut the cyclic dependencies to return to the top. In the worst case, you can put a `switch` in the loop and track what state you're in, although that's gross (you have to keep the union of all variables that might be used in each state). Multiple recursion, like in `fib n = fib (n - 1) + fib (n - 2)`, is more general than loops... in a world wi…

    Comment linking /2019/07/the-best-refactoring-youve-never-heard.html

    on “Why is learning functional programming so damned hard? (2019)”
  30. Submitted Book Review: A Philosophy of Software Design as a story · 13 points

    HN discussion

Search all of HN for pathsensitive.com

Linked by the same people?