Stuart Sierra - Components Just Enough Structure
Why Hacker News recommends it
Pointed to as a thought-provoking talk on structuring large systems, including outside Clojure.
What it is
Stuart Sierra presents the Component library for Clojure, a way to manage stateful services like database connections and thread pools without global mutable state. He draws on both functional and object-oriented principles.
Recommended by 2 HN commenters across 2 different months, 2014 to 2015.
What Hacker News said
Recommends nilliams · 2014-11 · on “Spider Programming Language”
Can't agree with your implication that 'real JS stuff' won't get done and 'JS people' won't get on board due to its 'focus on OOP'. I've yet to see a large JS app written in a 'functional style'. Most large client-side apps I've come across are written in Backbone, Angular, Ember etc. which are all frameworks/libraries that embrace OOP. You shouldn't mistake JavaScript's 'prototypal' nature for it being a non-OOP language. JavaScript and OOP are a very good fit. > The people who will appreciate the trappings of OOP are more than likely the typical classically trained programmers, who will write 300 lines of Spider on the frontend of their Python hobby project, and not touch it again. If you'
Recommends nowprovision · 2015-09 · on “Your DI framework is killing your code”
This talk might be of interest Stuart Sierra - Components Just Enough Structure [this video] - it is a tiny clojure framework but the ideas should be thought provoking, although granted with OO aligned type system not completely adaptable. In this example Customer could possibly just be a data-bucket/map/hashtable/Dictionary, Im not entirely sure how I'd handle reporting though as the example has put me back in OO mode, but a customer report (which knows how to organize data about a customer) shouldnt be part of customer entity (used loosely) in my opinion.
Cites jared314 · 2014-12 · on “Introducing .NET Core”
> but once you need to go for something bigger, with big teams, the thing start to melt down. The people in the Clojure community have already started exploring this issue. Component [1] [2], Jig [3], and others are trying to add just enough OOP back for the reasons you mentioned. [1] [LINK] [2] [this video] [3] [LINK]
Cites nilliams · 2015-02 · on “React’s diff algorithm (2013)”
There are a huge number of people who don't enjoy programming in lisps and don't buy the tradeoff that homoiconicity is somehow worth sacrificing all syntax for. You can take 'good parts' from functional programming without going 'all in'. Many of us don't agree that the 'all in' is actually better. (See Gary Bernhardt's 'Boundaries' talk [0] for an amazing explanation of what I mean by taking the good parts of FP). React isn't really about functional programming, it's very object-oriented. And where the parent comment refers to 'composition', they mean composition of components/view code, not pure functions as you may have interpreted it as. Personally my dive into the Clojure community has