Rails in the Age of Kubernetes
medium.com6 pointsby ths0 comments
So under its expressive covers, everything about Clojure is strongly
conservative, with a core overriding bias towards protecting
programmers from mistakes.
he's probably talking about macros and the focus on immutability/FP. With respect to macros, I really don't get why he interpreted Christophe Grand's presentation like that unless he walked away after the first two slides or so (and even then it's a stretch). Rich Hickey debunked his statement on macros very well here on HN (http://news.ycombinator.com/item?id=4366661) - the view Christophe expresses is precisely the opposite of conservative: it's about increasing composability and flexibility, very liberal attributes by Yegge's own definition. Although "protecting programmers from mistakes" is definitely one side of FP/immutability, I seem to recall Rich and others arguing for it more in terms of reducing the cognitive overhead of programming by reducing incidental complexity - not having to hold as many things in your head while thinking about your system allows your brain to handle bigger systems and move faster. Removing mental obstacles for the programmer who is impatient to create furiously seems pretty damn liberal to me. (let ((x 2) (y 3))
(let ((x 7) (z (+ x y)))
(* z x)))
Clojure (let [x 2 y 3]
(let [x 7 z (+ x y)]
(* z x)))
I think the Clojure version is easier to read without a paren-matching editor, though Scheme's rigorous minimalism does have its charm.
Hardware resources are definitely an issue. That's why we generally recommend using remote development environments, which aren't as resource-constrained as the local dev machine. Making that comparably smooth to the local dev experience (e.g. for live reloading of services without rebuilding containers) needs some clever tooling (which is partly the reason we're building our product).
With production-like remote dev environments, you get the same capabilities as your CI environment, but can run test suites ad-hoc (and without having to spin them up and tearing them down for every test run).
There's no fundamental reason why CI environments should have capabilities that individual dev environments can't have—it's all a matter of automation in the end.
> The real challenges, like determining seed data etc is too project specific to be abstracted away.
Very much agree with that! The generic stuff (dependencies, parallel processing, waiting for things to spin up etc.) should be taken care of by the tooling, but without constraining the project-specific stuff (which is highly individual).