Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    R

    Roman Cheplyaka

    ro-che.info · Personal blog · on HN since 2010

    Roman Cheplyaka writes about Haskell, functional programming, Linux networking, testing and consumer-site dark patterns.

    Visit blogRSSHN submissions
    ProgrammingLanguages & CompilersDesign & UX
    What HN says

    HN links his posts on golden testing, composing monads and Booking.com's manipulative tactics, and treats them as clear references on those topics.

    Stats for nerds
    35HN people shared it
    24linked in comments
    852story points
    Jan 2025last shared
    2013people per year2025

    Top posts on HN

    1. 1
      How Booking.com manipulates users
      6 people · 583 points · first shared 2017 · 304 comments on HN
    2. 2
      Understanding modern Linux routing (and wg-quick)
      2 people · 183 points · first shared 2022 · 28 comments on HN
    3. 3
      Understanding Asymmetric Numeral Systems
      3 people · 46 points · first shared 2017 · 7 comments on HN
    4. 4
      Lens is unidiomatic Haskell
      2 people · 6 points · first shared 2014 · Discussion on HN
    5. 5
      Simple FFT in Haskell
      1 person · 5 points · first shared 2015 · Discussion on HN
    6. 6
      Lexical analysis with parser combinators
      1 person · 4 points · first shared 2015 · Discussion on HN
    7. 7
      Cartesian Closed Comics: Zhuangzi, butterfly and referential transparency
      1 person · 4 points · first shared 2010 · Discussion on HN
    8. 8
      JSON validation combinators
      1 person · 3 points · first shared 2014 · Discussion on HN
    9. 9
      Why static vs dynamic typing battles are rarely interesting
      3 people · 2 points · first shared 2013 · Discussion on HN
    10. 10
      Composing monadic effects
      3 people · 2 points · first shared 2012 · Discussion on HN

    What HN people wrote when they linked it

    • pashMar 2014

      An introduction to type-level programming should also be on the list, I think—but there are no great blog posts yet about newer type-system extensions in GHC, as far as I'm aware.

      You can find some good posts on older techniques and features (phantom types, GADTs), but there's not much out there introducing type families other than material riffing on the papers that introduced them. (The papers are usually quite readable, with well chosen examples, but ...)

      For example, there's almost nothing beyond the docs about the tweaks in GHC 7.6–7.8 that make doing computation at the type-level easier. Different type-system extensions can get you many of the same places (e.g., GADTs v. type families, particularly the new closed variety), and I haven't seen much advice about when to prefer one variation to another (hint: it usually helps to think about type-function injectivity/non-injectivity and definitional openness/closedness).

      Richard Eisenberg's blog [0] might be the best source of insights on this stuff right now, but as a researcher he's often out closer to the bleeding edge than best suits a beginning type-level hacker.

      -----

      Another topic with poor coverage: Template Haskell.

      ----

      Roman Cheplyaka's post about monad transformers [1] is one of my favorites, by the way. More code than prose, and it's not a from-the-ground-up tutorial, but if you understand the examples, you will understand transformers and why they are actually useful in real-world code.

      ----

      0.…

    • imanaccount247Dec 2014

      >Links or it didn't happen.

      To what? I'm supposed to link you to reality? How about since haskell is a general purpose, turing complete language, you demonstrate that there's some magical reason that it can only be used for "pure math problems" and nobody can be productive in it doing "real work". Why should a random nonsense claim be given the standing of fact and need to be disproved?

      >friends (I know, it may be biased)

      That's why I asked if it was true in your heart. Lots of people say things they think sound reasonable and believable based on other third hand information, but which are in fact made up. I have a very hard time believing you have so many friends into haskell and unable to write programs in it. Especially after teaching a bunch of PHP people who had never heard of functional programming (and half had never heard of types!) haskell in a few short lessons. Either your friends are some crazy statistical anomaly, or my developers are. Or perhaps your friends are apocryphal.

      >GitHub codes I use

      "I don't use anything written in haskell so you can't write anything practical in it" is a pretty poor argument.

      >I encounter mostly language-oriented

      Where are you encountering them? And are you sure you aren't just misinterpreting "practical" blog posts as "academic" because they mention something you don't want to hear like monads? Even most things I would assume you classify as "language-oriented" are still about solving practical…

    • DonHopkinsNov 2021

      It's a common discussion topic -- a few links:

      Bad UX: How Booking.com deceives clients

      https://news.ycombinator.com/item?id=15152155

      https://medium.com/@ilyadoroshin/bad-ux-how-booking-com-deceives-clients-5dc9e9485f32

      How Booking.com manipulates users (ro-che.info)

      https://news.ycombinator.com/item?id=15297915

      https://ro-che.info/articles/2017-09-17-booking-com-manipulation

      [dupe] Dark Patterns (darkpatterns.org)

      https://news.ycombinator.com/item?id=20858714

      https://www.darkpatterns.org/

      Successful machine learning models: lessons learned at Booking.com

      https://news.ycombinator.com/item?id=21182445

      https://blog.acolyer.org/2019/10/07/150-successful-machine-learning-models/

      Dark Patterns at Scale: Findings from a Crawl of 11K Shopping Websites (2019)

      https://news.ycombinator.com/item?id=25968531

      https://webtransparency.cs.princeton.edu/dark-patterns/

    • epidemianJan 2013

      Agreed. I remember i read that comic a while ago and i didn't get the impression that the author was trying to mock dynamic typing proponents at all. The interpretation i got from the comic was more on the lines of "as most of the people who know about type category prefer static typing, discussions on that subject tend to be very uninteresting".

      And another possible interpretation is that the comic just expresses the author's preference (pun intended) of type category as a topic of discussion and thus finds the "dynamic vs static language" discussions uninteresting (because, let's face it, they are almost never about type category).

      My interpretations might be completely biased though, as the first comic from CCC that i read was this one (http://ro-che.info/ccc/18.html), which could have caused a personal bias because of the good first impression :)

    • dylzApr 2020

      > Everything on our website, including how we display prices and payment policies as well as the availability and popularity of specific properties, among other features relevant to the customer booking experience, is intended to help customers

      Is this a joke? The last time I looked at their site I had a dozen different types of modals saying ONE ROOM LEFT!! ALMOST OVER!!!, large-text prices with fees and taxes (30-50%+) hidden, continuous streams of alert boxes on the bottom saying "x just booked the room you were looking at! Only 3 left!"

      This has been done for years[0][1][2]

      [0] https://ro-che.info/articles/2017-09-17-booking-com-manipulation

      [1] https://medium.com/@ilyadoroshin/bad-ux-how-booking-com-deceives-clients-5dc9e9485f32

      [2] https://news.ycombinator.com/item?id=15152439

    • mynameismeJun 2013

      lurker14, you're shadow banned. He/she said:

      That's a special case, because RWS already exists (Reader, Writer, and State all commute), and wraps IO easily.

      Light overview of the issue: http://ro-che.info/articles/2012-01-02-composing-monads.html

      It's the other cases that get head-desk-banging. This paper is great, but shows what a high mental tax you pay to get highly-principled programs:

      http://www.grabmueller.de/martin/www/pub/Transformers.en.htm...

      At the end of the day, most people on most projects seem to prefer sacrificing some formal specification (and some actual correctness) for getting code running for the common case.

      Related reddit conversation:

      http://reddit.com/r/haskell/comments/rd2t5/i_love_rwst_r_w_s...

    Related

    Bryan O'Sullivanserpentine.com49 people

    Github is making me feel stupid(er)

    Bryan O'Sullivan
    Personal · last shared 2021
    FP Complete Blogfpcomplete.com201 people

    Monads and GATs in Nightly Rust

    FP Complete Blog
    Company · last shared 2025
    Haskell for Allhaskellforall.com190 people

    The category design pattern

    Haskell for All
    Personal · last shared 2026
    CS-SYDcs-syd.eu16 people

    Reducing the number of slot machines

    CS-SYD
    Personal · last shared 2026
    Justin Leblog.jle.im36 people

    Typesafe Neural Networks in Haskell with Dependent Types

    Justin Le
    Personal · last shared 2026
    Taylor Fausaktaylor.fausak.me19 people

    I Accidentally Deleted All Our Data

    Taylor Fausak
    Personal · last shared 2026
    Federico Tomassettitomassetti.me48 people

    A Guide to Natural Language Processing

    Federico Tomassetti
    Personal · last shared 2026
    Manuel Chakravartycse.unsw.edu.au/~chak21 people

    Program Your GPU with Haskell

    Manuel Chakravarty
    Personal · last shared 2017