Rich Hickey

26 Aug 2022 11:19 - 17 Jun 2023 08:29
Open in Logseq
    • Designer of Clojure and a very well-respected software guru.
    • (343) "Simple Made Easy" - Rich Hickey (2011) - YouTube
      • Simple: one fold, one role
      • Easy: adjacent, ready-to-hand (I like that spatial metaphor)
        • familiar, near to our current skill set
        • He is kind of anti-easy. "If you want everything to be familiar you will never learn anything new"
      • Easy is relative, simple is objective
      • Construct vs artifact (code vs delivered product)
        • programmer convenience is a bad thing to worry about
          • I think I violently disagree with this...
        • programmer replacement (glad to hear this mentioned, although not sure how it relates)
        • why on earth does he say that ability to be changed is a function of the artifact, not construct? Makes no sense!
      • Guardrail programming, he poo-poos tests
        • again seems misguided,
        • also poo-poos sprints, that I can agree with a bit more
      • Knitted castle vs Lego castle
        • Getting irritated with this talk, underneath the very pretentious delivery is a crushingly trite point.
        • Also – real life has knitted castles, some problems require them, and it is an interesting question as to how to make software that way. He's right that you should probably avoid it if possible, but what if you can't?
      • Overloading of parens a form of complexity
        • pretty trivial if you ask me.
      • image.png
      • I would argue with a lot of these. And I find it irritating that there is not much argument given. Some of them don't even make sense, data vs syntax? And what exactly is "declarative data manipulation"? (oh it means SQL or Datalog).
      • Introduces "complect", which is bad (again, no argument)
      • Yes I think I am really reacting against this. Obviously you want to avoid unnecessary complexity, obviously modularity and composability are good, but they aren't the only goods.
      • State complects value and time. But it is simple, in the sense of readily available
        • Then he goes on and praises Clojure refs for doing exactly that!
      • image.png
      • He thinks we should stick to generic data structures (maps, arrays, sets etc), implication, no domain object classes. It's such a weird point of view from someone trained in objectness. It's not even wrong, because doing a domain object model is hard and problematic. Hm. I guess I disagree hard and now want to build a CLOS-like system on top of his fucking pristine language.
      • He makes fun of Unix pipes but his stuff is just the same thing at a higher level.
      • image.png