Top all-time · #6674
The H2 Wiki
Personal blog · h2.jaguarpaw.co.uk/postsprogrammingwriting
The H2 Wiki is a personal blog at h2.jaguarpaw.co.uk about programming and writing. Since 2014, 12 different Hacker News readers have linked it 65 times, most often “Reflecting strictness in Haskell types”. No feed was found, so read it on the site itself.
Too few sampled comments (4) to say how often HN recommends it.?
Why HN links it
HN commenters link this Haskell blog mainly for its post demystifying difference lists, citing it when discussing that data structure. The comments give no judgement of the writing itself.
Summarised by Claude from a sample of 4 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Reflecting strictness in Haskell types2 people · 4 mentions · first linked 2014-09-16
- Make invalid laziness unrepresentable in Haskell2 people · 3 mentions · first linked 2025-01-19
- Foldl traverses with State, foldr traverses with anything (2024)2 people · 2 mentions · first linked 2026-10-05
- Nested Strict Data in Haskell2 people · 2 mentions · first linked 2021-09-27
- How Git rebase conflicts work2 people · 2 mentions · first linked 2020-10-24
- Automatic-Differentiation-Worked-Examples2 people · 2 mentions · first linked 2020-02-16
What Hacker News says?
In case anyone is curious I wrote up how I use suspend (amongst other things) with my XPS 13 running Debian: http://h2.jaguarpaw.co.uk/posts/how-i-use-debian-dell-xps-13...
Comment linking /posts/how-i-use-debian-dell-xps-13-7390/
on “Do not leave XPS laptop in any sleep/hibernate/standby mode when placed in a bag”Submitted Symbolic expressions can be automatically differentiated too as a story · 99 points
HN discussionGiven the anti-Dell pile on I wanted to give my alternative experience. I've been a very happy Dell user for at least 15 years, maybe 20. In that time I've had at least four Dell laptops and at least one workstation. I've never experienced any significant problems. My latest machine is an XPS 7390 that I use with Debian GNU/Linux. S3 suspend to RAM works fine. In fact, everything works fine. The build quality seems…
Comment linking /posts/how-i-use-debian-dell-xps-13-7390/
on “Dell deletes Latitude CPU Throttling issue after link is posted here”Submitted Good design and type safety in Yahtzee as a story · 64 points
HN discussionI call this the Peter Principle of Programming: "Code increases in complication to the first level where it is too complicated to understand. It then hovers around this level of complexity as developers fear to touch it, pecking away here and there to add needed features." http://h2.jaguarpaw.co.uk/posts/peter-principle/ Seems like I'm not the first one to notice this either: https://nigeltao.github.io/blog/2021/jso…
Comment linking /posts/peter-principle/
on “At Amazon, some coders say their jobs have begun to resemble warehouse work”Submitted Reflecting strictness in Haskell types as a story · 7 points
HN discussionI agree with the recommendation to use (z)diff3. I think the article massively understates the case! Three way diff makes it possible to resolve some conflicts that are literally impossible to resolve without it. Why impossible? Because with default style adding conflicting things at the same place is indistinguishable from removing the same things at the same place. You need to be able to see the base to determine…
Comment linking /posts/git-rebase-conflicts/
on “How Core Git Developers Configure Git”Submitted Nested Strict Data in Haskell as a story · 6 points
HN discussion> Do Haskell programmers have good intuition about performance? It seems like laziness would make it hard? The solution is to just not use laziness when you don't need it, then reasoning about Haskell performance is the same as in any other language. http://h2.jaguarpaw.co.uk/posts/make-invalid-laziness-unrepr...
Comment linking /posts/make-invalid-laziness-unrepresentable/
on “High-order Virtual Machine (HVM): Massively parallel, optimal functional runtime”Submitted Refactoring a neural network implementation in Haskell as a story · 6 points
HN discussion> Granted, that is noisier than the Python, despite being a direct translation. My complaint isn't the noise. My complaint is: can you explain what withJump does? Like, not the intention of it, but what it actually does? This is a rhetorical question--I know what it does--but if you work through the exercise of explaining it as if to a beginner, I think you'll quickly see that this is isn't trivial. > 1. You don't g…
Comment linking /posts/make-invalid-laziness-unrepr
on “Go is my hammer, and everything is a nail”Submitted Why Flexport’s CEO is wrong about the bottleneck at California’s ports as a story · 4 points
HN discussion> The person you are responding to didn't say that, I did. Ah, thanks, I got confused. > Haskell works really well if the problems you're solving don't have a ton of weird edge cases, but often reality doesn't work like that. In my experience it's completely the opposite, actually. I can only really write code that correctly handles a ton of weird edge cases in Haskell. It seems that many people think that Haskell i…
Comment linking /posts/make-invalid-laziness-unrepresentable/
on “Go is my hammer, and everything is a nail”Submitted How Git rebase conflicts work as a story · 3 points
HN discussionActually, changes to the compiler hardly ever break anything. I recently upgraded four compiler versions in a row and apart from a bug and some warnings the compiler didn't force any changes at all. It's primarily changes to libraries that introduce churn. https://h2.jaguarpaw.co.uk/posts/ghc-8.10-9.6-experience-rep... (DeepSubsumption wouldn't have been a problem if we'd specified Haskell2010, as we should have.)
Comment linking /posts/ghc-8.10-9.6-experience-report/
on “Why Haskell?”Submitted Automatic-Differentiation-Worked-Examples as a story · 3 points
HN discussionI don't have a good answer but I did write something about this once http://h2.jaguarpaw.co.uk/posts/exists/
Comment linking /posts/exists/
on “Clojure at Netflix (2013) [slides]”Submitted Make invalid laziness unrepresentable in Haskell as a story · 2 points
HN discussionIn case anyone is interested, I have had good results with Linux on a specific Dell XPS machine: http://h2.jaguarpaw.co.uk/posts/how-i-use-debian-dell-xps-13...
Comment linking /posts/how-i-use-debian-dell-xps-13-7390/
on “Ask HN: What’s a good laptop for software development at around $2k?”Submitted Upgrading from GHC 8.10 to GHC 9.6 – An experience report as a story · 2 points
HN discussion> Also, stuff like "strictness annotation" is not a function. Ah but it should be :) [Not a function actually, but a type constructor: http://h2.jaguarpaw.co.uk/posts/strictness-in-types/ ]
Comment linking /posts/strictness-in-types/
on “The Joy and Agony of Haskell in Production”Submitted Foldl traverses with State, foldr traverses with anything (2024) as a story · 1 points
HN discussionI acknowledge that those things can be challenging, however I'd like to respond to some of the specific issues: - Space leaks due to laziness are a solved problem. I explain the technique to solve it at: https://h2.jaguarpaw.co.uk/posts/make-invalid-laziness-unrep... This technique has not completely percolated throughout the community, but I am confident that it does actually resolve the "laziness causes space leak…
Comment linking /posts/make-invalid-laziness-unrepresentable/
on “Haskell: A Great Procedural Language”Submitted Demystifying DList as a story · 1 points
HN discussionOne thing is that pattern matching can make writing tree manipulation code succinct and easier to read. For example, take this article[0] that describes the difference list algorithm (in Haskell). Basically, it's kind of like a rope, but for lists. It's a tree with lists at the leaves, and when you want to convert it into a list, you rewrite the tree to be right-leaning, and then concatenate all the lists at once. T…
Comment linking /posts/demystifying-dlist/
on “Writing a C Compiler: Build a Real Programming Language from Scratch”Submitted Foldl traverses with State, foldr traverses with anything as a story · 1 points
HN discussionI have recently written up my experience of installing Debian on a Dell XPS 13 7390, in case anyone is interested. http://h2.jaguarpaw.co.uk/posts/how-i-use-debian-dell-xps-13...
Comment linking /posts/how-i-use-debian-dell-xps-13-7390/
on “Lenovo Selling Linux Laptops Directly in the US”Yeah, it's another thought-terminating cliche, and it's on my list! https://h2.jaguarpaw.co.uk/posts/thought-terminating-cliches...
Comment linking /posts/thought-terminating-cliches-software/
on “When did people favor composition over inheritance?”Ah, great counterexample! StrictData is another. Do you know any others that change language semantics non-trivially? I would roughly define "non-trivially" to mean "correct programs become incorrect". By the way, I'm particularly interested because I am writing about Haskell myths. I have a very rough draft at http://h2.jaguarpaw.co.uk/posts/haskell-myths/
Comment linking /posts/haskell-myths/
on “Haskell Problems for a New Decade”They don't destroy history, they just move the branch to something that's not a descendant of what it once was. You can get the history back if you want. See "All the things your branch has ever been" http://h2.jaguarpaw.co.uk/posts/git-survival-guide/
Comment linking /posts/git-survival-guide/
on “Flight rules for Git”