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
    S

    Soroush Khanlou

    khanlou.com · Personal blog · on HN since 2012

    Soroush Khanlou, an iOS developer, writes about Swift, Objective-C, app architecture and functional programming ideas like monads.

    Visit blogRSSHN submissions
    Mobile & AppleProgrammingLanguages & Compilers
    What HN says

    Commenters recommend it as thoughtful and practical, and link posts on long Swift compile times and pure objects.

    Stats for nerds
    26HN people shared it
    46linked in comments
    379story points
    Dec 2025last shared
    2014people per year2025

    Top posts on HN

    1. 1
      Regexes vs. Combinatorial Parsing (2019)
      1 person · 155 points · first shared 2020 · 45 comments on HN
    2. 2
      Doubling Down on Protocol-Oriented Programming
      1 person · 60 points · first shared 2016 · 8 comments on HN
    3. 3
      Thoughts on Haskell
      2 people · 44 points · first shared 2015 · 49 comments on HN
    4. 4
      Model View Whatever
      1 person · 20 points · first shared 2014 · 8 comments on HN
    5. 5
      What is the fuss with Reactive Cocoa?
      1 person · 10 points · first shared 2014 · 12 comments on HN
    6. 6
      Key-Value Observing Considered Harmful
      2 people · 9 points · first shared 2013 · 7 comments on HN
    7. 7
      Reflections on six months of Swift
      2 people · 9 points · first shared 2016 · 4 comments on HN
    8. 8
      What the Heck Is a Monad
      4 people · 7 points · first shared 2015 · 2 comments on HN
    9. 9
      A Call for Blogs
      1 person · 7 points · first shared 2016 · 2 comments on HN
    10. 10
      “Metaprogramming” isn’t a scary word (not even in Objective-C)
      1 person · 6 points · first shared 2014 · 2 comments on HN

    What HN people wrote when they linked it

    • stevetrewickApr 2016

      I've read a ton of such blog posts recently in exploring this subject - seems like the tradition is as soon as you believe you understand the monad you must immediately write a blog post explaining it and pointing out why everyone else's metaphor is too complicated.

      This one is kind of nice in its succinctness, but that ends up meaning it doesn't explain why I should care or what I would do with my monad once I have grokked it.

      I've yet to write my personal "how I grokked my monad and why everyone else is wrong" post, but I suspect that there's probably a sweet spot somewhere between 'monad is simply a monoid in the category of endofunctors' and a 'plain English' translation of the monad laws with no context. Preferably with an explanation of why I would want or need such a thing up front. Preferably without Haskell notation.

      That said, such an intro would probably still be pretty hard going, some things are just hard, or at least difficult to understand without context. I said I've been reading lots of these recently, actually I've been reading them for a couple of years, but I've only been understanding them recently because I've bumped into a problem domain for which the solution I was groping for in the dark turned out to be a monad.

      Swift wise, I found the following to be very…

    • dhussoeDec 2025

      I do think that there's a meaningful difference between writing code that was bad (which I definitely did and do) and writing code where I didn't know what each line did.

      early on when I was doing iOS development I learned that "m34" was the magic trick to make flipping a view around have a nice perspective effect, and I didn't know what "m34" actually meant but I definitely knew what the effect of the line of code that mutated it was...

      Googling on it now seems like a common experience for early iOS developers :)

      https://stackoverflow.com/questions/14261180/need-better-and-simpler-understanding-of-catransform3d

      https://stackoverflow.com/questions/3881446/meaning-of-m34-of-catransform3d

      https://khanlou.com/2012/09/catransform3d-and-perspectives/

    • wool_gatherOct 2018

      Not mentioned yet: Souroush Khanlou http://khanlou.com is always at the top of my list. Thoughtful and very practical material. Also Dave DeLong: https://davedelong.com/blog/

      > I’ve missed Swift 2 & 3

      In some ways this is an advantage to you. There was a fair bit of churn in that time period. Things have settled reasonably well now.

    • Aker89Dec 2016

      can also recommend this approach at the moment: http://khanlou.com/2016/12/guarding-against-long-compiles/

      This makes XCode warn you about functions with long compile times.

    • danukerMay 2022

      You can bundle the parameters into plain/pure/humble objects where it makes sense.

      https://khanlou.com/2014/12/pure-objects/

      http://xunitpatterns.com/Humble%20Object.html

    • dmurMar 2014

      The promise of simplicity does not match the reality. It's explained well here, this was linked in the article too: http://khanlou.com/2013/12/kvo-considered-harmful/

    Related

    Cocoa with Lovecocoawithlove.com69 people

    Objective-C's niche: why it survives in a world of alternatives

    Cocoa with Love
    Personal · last shared 2026
    Erica Sadunericasadun.com34 people

    ISO-8601, YYYY, yyyy, and why your year may be wrong

    Erica Sadun
    Personal · last shared 2022
    Jeremy Bowersjerf.org78 people

    Functors and Monads for People Who Have Read Too Many “Tutorials”

    Jeremy Bowers
    Personal · last shared 2026
    Alexis Kinglexi-lambda.github.io172 people

    Parse, Don’t Validate

    Alexis King
    Personal · last shared 2026
    Daniel Spiewakcodecommit.com70 people

    What is Hindley-Milner and why is it cool? (2008)

    Daniel Spiewak
    Personal · last shared 2020
    Nibble Stewnibblestew.blogspot.com74 people

    Apple of 2019 is the Linux of 2000

    Nibble Stew
    Personal · last shared 2026
    Brian McKennabrianmckenna.org32 people

    How to stop functional programming

    Brian McKenna
    Personal · last shared 2025
    FP Complete Blogfpcomplete.com201 people

    Monads and GATs in Nightly Rust

    FP Complete Blog
    Company · last shared 2025