I want to maximize the amount of results I get "per second" I spend on activities, I have dabbled a lot with programming languages. I wrote a haskell TUI application. I wrote some clojure CLI programs. I also wrote CLI programs in a few other languages. If I want to maximize time, is it a good use of my time to read a few books in Robert C. Martin(uncle bob) series? Or, should I just learn a tech stack and learn from experiences? He wrote books on clean architectrue, clean code, and so on.
We should not criticise Bob Martin. He has done a lot to establish a good coding style in practice. But he has done it for programming languages, which are not Clojure. Most of this simply does not apply to Clojure, so I would not recommend these books. All the Clean Code and Design Pattern rules in my opinion compensate weaknesses, which Clojure does not have.
Did you read his books?
(Martin did something remarkable with the lengthy Clojure examples in "Functional Design: Principles, Patterns, and Practices". He established a new category: books that demonstrate stuff with Clojure because it's simpler than any executable alternative. Anyone can read it. And yet Martin writes with great tolerance for readers who do not care to practice Clojure at all, who regard Clojure as pseudocode. In a word, from the perspective of this august Forum, the book could be regarded as "outreach".)
agree to disagree I guess; I'm going to keep criticizing bad opinions where I see 'em!
Martin's opinions are born of a different era, hardware tradeoffs were different and the various downstream effects on programming and culture around programming was different. Lots of opinions in Clean Code, for example, certainly do not apply now
I still agree with his stance on functional programming and polymorphism. He is also a fan of clojure which combines polymorphism(multimethod & protocols) with functional programming. He is correct that OOP's benefits came from polymorphism rather than inheritance or the tight coupling(class) between function and data. Basically, he is the first person I know who extracted the essence of OOP, which is polymorphism and discarded the rest. That's why I was considering his books.
Does anyone recommend any concise learning material that applies well now?
if you look at how he writes Clojure, it's kind of weird and non-standard
"Opinionated" is probably the polite way to say it
"OOP is a mishmash of unrelated concepts" is not exactly an original thought
I'm trying to learn everything about my chosen tech stack from scratch because I only dabbled with little bits of programming here and there for years before deciding to commit to clojure web development. In addition to my tech stack, it's good to know general software design principles. Robert Martin books looked good in the sense of learning even the basic things from scratch in terms of design principles. If anyone knows a better book for software design, recommend it. In particular, I am interested in designing a distributed web application. Even if I don't implement the distributed design from day one, I at least want to know how a distributed web application works at a high level so that I don't unnecessarily paint myself in a corner. I want to write a system that's easy to change over time.
Is there any learning material that's good for designing a clojure web application?
No, but it uses a tech stack that I am not fond of. I guess I will skip the books and listen to youtube clojure talks that are relevant to what I'm building.
The book talks about WebSocket, but WebTransport is emerging as a better alternative to WebSocket.
I'd look into server-side events and webtransport.
I guess general books can't really teach me much. I'd rather focus on books or videos that talk about specific things I'm building... I think I'm going to learn about specific things I'm building. But, rich hickey's presentations helped me a lot.
Learn everything and form your own opinion 🙂
General books can teach a lot! As long as they don't get too close to the field you imagine you imagine yourself an expert in.
I'm open to general books if anyone can recommend good ones.
i did this for a while and never learned anything. I would pick one language or stack and build everything that interests you in that stack for a year
You mean you read his books?
i mean read a bit but build stuff. anything that interests you, build it in the stack you pick
read enough to know how to build. but building is what will make you better.
I guess I will focus on learning a tech stack and building things with it. Specificity is more urgent than abstract concepts for now.
I would avoid anything written by Bob Martin. it's not good writing.
i think which book matters less than just building things
Whatever his books are, I would agree that I should focus on learning a tech stack and building things at this point.
Maximise your tine by determining the goal(s) you want to achieve. Without stating a goal how can the journey to it be optimised?
People reach a point (or so I hear) where the hammock is the best use of time. Until then, books. But remember, a book is like a movie! Feel free to get up for popcorn and miss 20 pages every now and then. And there is no shame in sneaking out at the intermission. Some books give you 256% of their value in the first two chapters... Nothing wrong with that. They've saved you the trouble of reading further.
i'm parsing a large xml file that might contain errors with clojure.data.xml. i want to see the errors immediately (before i start doing side-effecting work with the partially realized data). is the best way to do this just (-> (xml/parse input) xml-seq doall)? or is there a better way to validate an xml file before/during parsing that i don't know about?
xml can have schema and be validated against that. Is it possible one of these tools might be more helpful and then only work on validated data afterwards?
you mean an xml schema validator?
yes. use the xml validator and then process if there are no errors