Top all-time · #3813
Kevin Mahoney
Personal blog · kevinmahoney.co.uk/articles · on HN as kpmahprogrammingdesign
Kevin Mahoney's personal blog at kevinmahoney.co.uk covers programming and design. Since 2014, 20 different Hacker News readers have linked it 42 times, most often “Applying “make invalid states unrepresentable””. It is still writing: the last post was on 2026-08-25, and you can follow it by feed.
Too few sampled comments (3) to say how often HN recommends it.?
Why HN links it
HN readers link Kevin Mahoney's article 'Tests vs Types', which commenters cite on how type systems give guarantees that testing alone does not, and on types replacing classes of tests.
Summarised by Claude from a sample of 3 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Personal homepage of Kevin Mahoney
Most-linked posts?
- Applying “make invalid states unrepresentable”3 people · 4 mentions · first linked 2020-10-03
- OCellator: Lisp-Like Synth Language3 people · 3 mentions · first linked 2020-07-28
- Tests vs. Types3 people · 3 mentions · first linked 2016-02-13
- Database Design: Immutable Data2 people · 3 mentions · first linked 2016-09-17
- Consistency is Consistently Undervalued2 people · 2 mentions · first linked 2016-09-17
- Gut Driven Development2 people · 2 mentions · first linked 2017-04-12
- My Principles for Building Software2 people · 2 mentions · first linked 2020-09-18
- An Immutable Blog Application in PostgreSQL2 people · 2 mentions · first linked 2020-11-08
- Show HN: Structural Editor Prototype2 people · 2 mentions · first linked 2014-10-29
- My Principles for Building Software (2020)2 people · 2 mentions · first linked 2023-07-12
What Hacker News says?
I wrote a little article, which has been posted here before, that shows the power of different type systems and what kind of bugs you can expect to prevent: http://kevinmahoney.co.uk/articles/tests-vs-types/
Comment linking /articles/tests-vs-types/
on “Types”Submitted Applying “make invalid states unrepresentable” as a story · 375 points
HN discussionThis spreadsheet-style functional programming is quite similar to a (very limited) prototype I wrote a while ago: https://kevinmahoney.co.uk/ocell/#example/polynomial.json
Comment linking /ocell/
on “Microsoft Power Fx – A low-code general purpose programming language”Submitted Consistency is Consistently Undervalued as a story · 220 points
HN discussionhttp://kevinmahoney.co.uk/articles/tests-vs-types/
Comment linking /articles/tests-vs-types/
on “The Little Typer (2018)”Submitted Tests vs. Types as a story · 61 points
HN discussionNot sure how much this will help, but a couple of years ago I wrote about using event sourcing for a simple blog application in PostgreSQL: http://kevinmahoney.co.uk/articles/immutable-data/ I wasn't aware of the term 'event sourcing' at the time though.
Comment linking /articles/immutable-data/
on “What do you mean by “Event-Driven”?”Submitted Gut Driven Development as a story · 56 points
HN discussionI'm not actually that familiar with event sourcing. I'd be interested in reading more if you have a pointer to some resources! Edit: I wasn't familiar with the terminology, but it sounds like what I have written about here: http://kevinmahoney.co.uk/articles/immutable-data/
Comment linking /articles/immutable-data/
on “Consistency is Consistently Undervalued”Submitted Log Orientated Architecture in PostgreSQL as a story · 12 points
HN discussionYou should be testing regardless of the strength of your type system. But testing with a weak type system isn't going to give you anywhere near the guarantees you'd get from a well-designed type system in addition to testing: https://kevinmahoney.co.uk/articles/tests-vs-types/
Comment linking /articles/tests-vs-types/
on “How an Anti-TypeScript “JavaScript developer” like me became a TypeScript fan”Submitted Your Database as an API as a story · 5 points
HN discussionLocation: Belgium Remote: Yes Willing to relocate: Maybe Amsterdam next year Technologies: Python, Ruby. Would love to work with something more functional. CV: http://kevinmahoney.co.uk Email: kevin@kevinmahoney.co.uk
Comment linking /
on “Ask HN: Who wants to be hired? (April 2016)”Submitted OCellator: Lisp-Like Synth Language as a story · 4 points
HN discussionSEEKING WORK: Remote (UK citizen, in Belgium currently) 8 years experience. I like a lot of different languages, but I've mainly worked with Ruby and Python. http://kevinmahoney.co.uk
Comment linking /
on “Ask HN: Freelancer? Seeking freelancer? (June 2016)”Submitted AI Review Loops Don't Always Stabilise as a story · 3 points
HN discussionTypes replace entire classes of tests that coverage metrics wouldn't detect [0]. Types are also documentation! They also decrease the degrees of freedom LLMs have to make mistakes [1]. [0] https://kevinmahoney.co.uk/articles/tests-vs-types/ [1] https://john.regehr.org/writing/zero_dof_programming.html
Comment linking /articles/tests-vs-types/
on “Elixir v1.20 released: now a gradually typed language”Submitted Applying “Make Invalid States Unrepresentable” as a story · 3 points
HN discussionI also experiment a lot with structural editing. My latest project is an editor for a lisp-like language for building small audio synth programs: http://kevinmahoney.co.uk/ocellator/ Hazel looks fantastic - I don't think I've come across it before. I think an obstacle structural editors have to becoming more widely adopted is that they start out very general and don't immediately solve a problem that people have. Yo…
Comment linking /ocellator/
on “Hazel: A live functional programming environment featuring typed holes”Submitted My Principles for Building Software as a story · 3 points
HN discussionI made a little Knuth/Plass experiment using canvas and opentype.js here: http://kevinmahoney.co.uk/document-experiment/ I find pagination much easier to read than scrolling.
Comment linking /document-experiment/
on “Knuth and Plass line-breaking Revisited”Submitted Tools for Change as a story · 3 points
HN discussionSubmitted Structural Editor and Thoughts on PureScript as a story · 3 points
HN discussionSubmitted Show HN: Structural Editor Prototype as a story · 3 points
HN discussionSubmitted Applying "Make Invalid States Unrepresentable" (2020) as a story · 2 points
HN discussionSubmitted My Principles for Building Software (2020) as a story · 2 points
HN discussionSubmitted Immutable Data as a story · 2 points
HN discussionSubmitted Database as an API as a story · 2 points
HN discussionSubmitted An Immutable Blog Application in PostgreSQL as a story · 2 points
HN discussionSubmitted Microservices and Availability as a story · 2 points
HN discussion