@EmmanuelOga I was going to blog about this topic, but never seem to find the time for it. In short, I still love & use CLJ(S) for some of projects, but at the same time find TS is possibly more suited for my purposes/interests and IMHO provides a somewhat better balance overall... /1
@EmmanuelOga Some parts of thi.ng/umbrella are heavily influenced by my experience of working w/ CLJ fulltime for 5+ yrs, but adding a spin to it. Compared to CLJ, TS gives me more flexibility to break out of certain lang aspects/features when they're really not warranted/wanted /2
@EmmanuelOga Of course CLJ allows that to a large extend itself, but then quickly becomes unwieldy (YMMV). Syntax for doing relatively maths-heavy or non-standard / low-level stuff (even just using arrays vs CLJ vectors) is quite verbose & hard to read (in contrast to rest of lang). /3
@EmmanuelOga Macros can help in this case and really are an incredibly powerful (and hard to debug) tool to extend / re-shape the language, but then can have other issues (especially in some cases when targeting both CLJ and CLJS). /4
@EmmanuelOga OTOH my TS workflow somehow just feels v.similar to what I had in Clojure, but more nimble. This is entirely subjective though and also has to do with being able to only target ES6+ /5
@EmmanuelOga ES6 has several features which have made some key CLJS language features obsolete (for my use cases). E.g. my favorites: iterators / iterables, optionally combined with spread op can often replace lazy seqs and are more lightweight. /6
@EmmanuelOga Likewise, ES6 object spread can be used to easily achieve immutable object updates w/ structural sharing when needed w/o having to opt in 100% of the time. Not so easy (or nice) to do in CLJ(S)... /7
@EmmanuelOga ES6 Map & Set types have pretty useless equality semantics for anything else but strings or numbers, but are fairly easy to work around with custom impls to make them more similar to CLJ. /8
@EmmanuelOga TS's structural typing is maybe my fave feature & vastly simplified my job (and reduced error rate) WRT refactoring (80% of my time). It's as easy as in CLJ to start sketching out ideas (w/o types) in the REPL, but once added, huge benefit when refactoring across packages. /9
@EmmanuelOga Looking somewhat from the edges (I also often work w/ Go & C), compared to the CLJ world there seems to be more hype & sometimes low S&N ratio in the JS & TS lands (sorry!). Alone for that reason, it's worth checking CLJ out... /10
@EmmanuelOga Summa summarum, for me Clojure's value is more than just the actual language. It's the philosophy, learning experience, the prioritization of simplicity, plain data, the ideas, concepts and innovations coming from this community which set it apart... /11
@EmmanuelOga I *highly* recommend spending a few years of unlearning coding as you know it from other langs and see how far the Clojure rabbit hole takes you... :) /fin

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Karsten Schmidt

Karsten Schmidt Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!