I started learning Clojure in 2021 and there are a lot of things that I like about this language/ecosystem. I will try to summarize my experience in this thread.

If you're not familiar with Clojure, here is how the code looks like. Clojure is a Lisp-derivative which is different than most Fortran/C-derivative languages that we use today.
At first, the syntax was very off-putting (my god these parentheses!!), but then you start appreciating the elegance of the language and after sometime you stop being bothered by the syntax.
One of the things that Clojurists (I guess that's what they call themselves 😅) always talk about is how they think of everything as data even the language's syntax! Every Clojure expression is just a plain ol' Clojure list that the complier reads and executes.
And for that reason macros in Clojure are first class citizens (in fact a lot of Clojure built-in functionality is built with macros). Macros are functions that take your code as input (remember your code is just a list data structure) and it transforms your code into...
...another data structure that can be fed into the compiler, and with that you can invent your own syntax and build your own compiler tools. This alone gives you a lot of power. I will give a concrete example of using macros in a later tweet.
Clojure comes with a VERY rich standard library, think of Lodash built into the language, you will find whatever you fancy in that standard library.
Clojure also has novels tools. Two tools which helped my tremendously while writing Clojure code are Parinfer (@shaunlebron) and proto-repl (@jasongilman). Parinfer is an editor plugin that lets you focus on writing Clojure code without having to mess around parentheses...
you just write the opening parenthesis and the tool infers the closing one based on indentation. This tool is brilliant and it helped me avoid many silly mistakes. Check out the website: https://t.co/hDXhCGf3OA
Proto-repl, on the other hand, is a Clojure development environment in Atom, which allows you to execute your program inside the editor and see the results immediately. This also helped a lot while learning. I highly recommend you check it out; it works like magic ✨.
One thing that was off-putting coming from writing Typescript daily is the lack of types and therefore all the tooling that benefits from that. Clojure is a dynamic language which is mostly a great thing except for tooling IMO. Code completion is far from perfect in all major...
...editors and the fact that the editor doesn't understand/infer your program makes it difficult to catch obvious bugs before running the code. I haven't tried clojure.spec and I don't know if it interops with editors/IDEs or not.
One important fact is that Clojure compiles to the JVM, but the amazing Clojure team also built ClojureScript which compiles to JS and you can use it to build SPAs (single page applications).
In my initial testing Clojure experience beats ClojureScript's, especially when it comes to error messages. Error messages in ClojureScript are so bad and I hope that the team fixes this because it's such a showstopper for beginners trying to learn the language for the first time
I was surprised to find that @RoamResearch and @Pitch (which are both quality products) are both built using ClojureScript, I hope that folks from these teams share their experiences with the language.
Now that you know that ClojureScript exists, I want to give an example of a brilliant macro that @roman01la wrote for writing css-in-js (or css-in-cljs I guess 😅). cljss is library that allows you to write style definitions in ClojureScript and using Clojure macros...
... it compiles these definitions into class names and injects the styles in your document, all happening at build time. No need to fiddle around with Babel and ASTs, it all happens natively in the language!
There are tons of learning material out there but I attribute most of my learnings to "Clojure for the Brave and True" the amazing book written by the brilliant and humorous @nonrecursive. Also @richhickey the creator of the language has tons of great talks on YouTube...
here are the ones that I really liked:
- Simplicity Matters
- Clojure Made Simple
- Clojure for Java Programmers Part 1 & 2
@threadreaderapp unroll

More from Tech

On Wednesday, The New York Times published a blockbuster report on the failures of Facebook’s management team during the past three years. It's.... not flattering, to say the least. Here are six follow-up questions that merit more investigation. 1/

1) During the past year, most of the anger at Facebook has been directed at Mark Zuckerberg. The question now is whether Sheryl Sandberg, the executive charged with solving Facebook’s hardest problems, has caused a few too many of her own. 2/
https://t.co/DTsc3g0hQf


2) One of the juiciest sentences in @nytimes’ piece involves a research group called Definers Public Affairs, which Facebook hired to look into the funding of the company’s opposition. What other tech company was paying Definers to smear Apple? 3/ https://t.co/DTsc3g0hQf


3) The leadership of the Democratic Party has, generally, supported Facebook over the years. But as public opinion turns against the company, prominent Democrats have started to turn, too. What will that relationship look like now? 4/

4) According to the @nytimes, Facebook worked to paint its critics as anti-Semitic, while simultaneously working to spread the idea that George Soros was supporting its critics—a classic tactic of anti-Semitic conspiracy theorists. What exactly were they trying to do there? 5/

You May Also Like

कुंडली में 12 भाव होते हैं। कैसे ज्योतिष द्वारा रोग के आंकलन करते समय कुंडली के विभिन्न भावों से गणना करते हैं आज इस पर चर्चा करेंगे।
कुण्डली को कालपुरुष की संज्ञा देकर इसमें शरीर के अंगों को स्थापित कर उनसे रोग, रोगेश, रोग को बढ़ाने घटाने वाले ग्रह


रोग की स्थिति में उत्प्रेरक का कार्य करने वाले ग्रह, आयुर्वेदिक/ऐलोपैथी/होमियोपैथी में से कौन कारगर होगा इसका आँकलन, रक्त विकार, रक्त और आपरेशन की स्थिति, कौन सा आंतरिक या बाहरी अंग प्रभावित होगा इत्यादि गणना करने में कुंडली का प्रयोग किया जाता है।


मेडिकल ज्योतिष में आज के समय में Dr. K. S. Charak का नाम निर्विवाद रूप से प्रथम स्थान रखता है। उनकी लिखी कई पुस्तकें आज इस क्षेत्र में नए ज्योतिषों का मार्गदर्शन कर रही हैं।
प्रथम भाव -
इस भाव से हम व्यक्ति की रोगप्रतिरोधक क्षमता, सिर, मष्तिस्क का विचार करते हैं।


द्वितीय भाव-
दाहिना नेत्र, मुख, वाणी, नाक, गर्दन व गले के ऊपरी भाग का विचार होता है।
तृतीय भाव-
अस्थि, गला,कान, हाथ, कंधे व छाती के आंतरिक अंगों का शुरुआती भाग इत्यादि।

चतुर्थ भाव- छाती व इसके आंतरिक अंग, जातक की मानसिक स्थिति/प्रकृति, स्तन आदि की गणना की जाती है


पंचम भाव-
जातक की बुद्धि व उसकी तीव्रता,पीठ, पसलियां,पेट, हृदय की स्थिति आंकलन में प्रयोग होता है।

षष्ठ भाव-
रोग भाव कहा जाता है। कुंडली मे इसके तत्कालिक भाव स्वामी, कालपुरुष कुंडली के स्वामी, दृष्टि संबंध, रोगेश की स्थिति, रोगेश के नक्षत्र औऱ रोगेश व भाव की डिग्री इत्यादि।
The chorus of this song uses the shlokas taken from Sundarkand of Ramayana.

It is a series of Sanskrit shlokas recited by Jambavant to Hanuman to remind Him of his true potential.

1. धीवर प्रसार शौर्य भरा: The brave persevering one, your bravery is taking you forward.


2. उतसारा स्थिरा घम्भीरा: The one who is leaping higher and higher, who is firm and stable and seriously determined.

3. ुग्रामा असामा शौर्या भावा: He is strong, and without an equal in the ability/mentality to fight

4. रौद्रमा नवा भीतिर्मा: His anger will cause new fears in his foes.

5.विजिटरीपुरु धीरधारा, कलोथरा शिखरा कठोरा: This is a complex expression seen only in Indic language poetry. The poet is stating that Shivudu is experiencing the intensity of climbing a tough peak, and likening

it to the feeling in a hard battle, when you see your enemy defeated, and blood flowing like a rivulet. This is classical Veera rasa.

6.कुलकु थारथिलीथा गम्भीरा, जाया विराट वीरा: His rough body itself is like a sharp weapon (because he is determined to win). Hail this complete

hero of the world.

7.विलयगागनथाला भिकारा, गरज्जद्धरा गारा: The hero is destructive in the air/sky as well (because he can leap at an enemy from a great height). He can defeat the enemy (simply) with his fearsome roar of war.