4 ms·
iLemming you clearly know how to interwebs, well met.
by randmeerkat 2y ago
iLemming you clearly know how to interwebs, well met.
- iLemming 2y agoLook. In our field of software crafting and Computer Science, conflicting ideas and principles frequently arise, especially when balancing competing concerns. We often need to weigh out performance against readability, abstraction and efficiency, flexibility over simplicity, security vs. usability, consistency over pragmatism, etc. Yet, it's relatively rare for ideas (especially good ones) to become completely invalidated or rendered totally obsolete. Because ideas often retain their value in specific contexts. I already told you my take on the idea of Vim and modality, it's a wonderful, beautiful, powerful, and pragmatic model. Now, Emacs builds on the cornerstone of another incredibly powerful idea - the idea of practical notation for lambda calculus, which is known as Lisp. Lisp probably can be crowned as one of the most important ideas in computer science. It's just hard to think of anything more influential than Lisp. Any programmer who dismisses the idea of Lisp based on one concrete implementation of it is misguided. At some point, after many cycles of frustration, amazement, inspiration and awe you will learn to appreciate certain ideas. I'm not selling you Emacs or Vim here - not one concrete implementation of a concept. I'm just trying to tell you - some ideas are worth learning more, before dismissing them as needless or impractical.
- randmeerkat 2y agoHow do you feel about Clojure vs Lisp?
- iLemming 2y agoYou mean Clojure vs Common Lisp or Emacs Lisp? In what way? I like them all. They serve different purpose for me, but in general, I like them.
- randmeerkat 2y agoHow about what’s your go to programming language?
- iLemming 2y agoHmm, I don't really have a "go-to" programming language. Depending on the problem, context, constraints, and team preference, I use whatever. For personal projects, my preference for the past few years invariably has been Lisp dialects. I prefer Clojure-like lightweight PLs - Fennel if I need to deal with a Lua-compatible runtime, Clojurescript for JS-engines. For bash scripting - Babashka. If I need to be close to metal, Common Lisp is great, but it's been a while since I had the need. I've been trying to fix this asynchronous pipeline in nbb that uses Redis and BullMQ, among some other things (for some of them, I'm thinking I may have to brush up on my Python - hopefully, I wouldn't have to), but it's taking longer than desired, been procrastinating with it a lot. Why do you ask? You can't decide what to pick to start with or something?
- randmeerkat 2y agoI just always meant to dabble more in a lisp style dialect and was curious what an emacs enthusiast enjoys. Clojure has been mentioned before and I’ve heard good things about Clojurescript. I never heard of Common Lisp for being close to the metal, more so that it was a bit memory heavy in those applications, but I’ll have to take another look. What’s NBB? Python is undeniably a workhorse for most applications and aside from Java probably the easiest to hire for.
- iLemming 2y agonbb is is babashka for node - https://github.com/babashka/nbb https://github.com/babashka/nbb babashka was created to mitigate JVM slow startup. It's great for system scripting, automation, etc., basically a lightweight Clojure. I think any programmer would benefit from learning a bit of Clojure. It's really nice for dealing with data, automation, etc. I once had to scrape hundreds of videos from a website, and I was pleasantly surprised how quickly I was able to get it right, after setting up Puppetter and Cljs REPL, I interactively, from the REPL "clicked through" things controlling the browser, and created an async pipeline that opened hundreds of pages, looking up for video metadata and delegating the task of fetching videos to yt-dlp. After learning Clojure and Clojurescript, I felt like all these - Python, JS, and Java are overrated and needlessly messy. I'm so glad I don't really have to directly deal with them daily. Even Lua, which before I had no problems whatsoever, and really enjoyed using, suddenly felt like "meh," and I'm glad there's now Fennel, which is not Clojure, but is very similar to it. It's been years since I made anything mobile-native. I'll have to be choosing between React Native via Clojurescript and Clojure-Dart - which is very nice. I am very excited about Jank-lang, can't wait for it to hit the first production-ready release, it will open some new possibilities. So, I guess, I wasn't completely honest in answering what my "go-to" language is - I really don't care, it's just a matter of picking up a Clojure dialect for it, which itself being a Lisp dialect, is a choice among many other flavors of Lisp. Want to be a true "polyglot" coder? Just grab a Lisp. I can understand why Lispers are often perceived as "crazy ones", it does sound crazy - "How is it possible for a single language to get absolutely everything right?". Well, no, it doesn't get "everything right", but at the very least the ideas it exposes you to can shield you from having to memorize the weirdness of tons of other languages.