One of the good things to happen in emacs was the inclusion of `seq.el`. It makes easy functional operation over sequences, so no longer need `dash.el` or `cl-lib.el`. (dash still has many more functions inspired by clojure which is awesome when you need them)
But I still wish the emacs community could adopt a modern data structure library. It's difficult to consolidate usage of sequences (lists/vectors) with alists and plists. This would make it so much more accessible.
When Prot writes something I try to make place to read it. He's a very nice person and also inspiring, he's living following his values and is very insightful.
What a great find. Not sure why I have not discovered Prot before. Bookmarked the article and this thread.
I have been using Emacs for about 40 years, and as a crazy side effect of the mountain of LLMs hype, with a lot of productivity enhancing goodness, I think that Emacs can only gain in popularity because of several excellent Emacs LLMs packages. Most of the world is exploiting LLMs with VSCode and its variants, but Emacs is also just about perfect for integrating LLMs into workflows and for having fun and playing around.
I've had a great time using Emacs Lisp over the past 15 years: it's one of the easiest ways to quickly whip up personalized tools for my own use, and, at the same time, my code has been surprisingly resilient and stable over this time.
And this is despite the fact that Emacs Lisp routinely flouts every single software engineering "best practice". The language is dynamically scoped by default! It simply doesn't have namespaces! Static types? Hah! (And I, an inveterate Haskeller, don't even miss them.) You can—and people routinely do—hook directly into all sorts of implementation details from other parts of the codebase.
And yet it just works. And it works remarkably well.
My theory: what matters isn't "best practices", it's have a coherent conceptual design and code that reflects that design. Emacs is designed around a small but expressive set of core concepts that it uses in a consistent manner. Text with properties, buffers, modes, commands, customization variables... Almost everything more complex in Emacs is structured out of these (+ a handful more), and, once you've internalized them, it's surprisingly easy to both learn new higher-level tools and to write your own.
The design of both the user interface and the code directly reflect these concepts which gives us a naturally close connection between the UI and the code (it's almost trivial to jump from an interaction to the code that powers it), makes both UI and code units effortlessly composable and generally makes it easier to understand what's going on and how we can change it.
Seems clear and useful. That said, there's nothing particularly bad or inaccessible about the actual Emacs Lisp manual: https://www.gnu.org/software/emacs/manual/html_mono/elisp.ht...
Or the official tutorial: https://www.gnu.org/software/emacs/manual/html_mono/eintr.ht... (which to be clear I haven't read, but have heard nice things about).
Of all the things for which emacs can be criticised, documentation rigor is really not one.
It's a shame it doesn't really go into keywords, or alists/plists. (Or different argument lists, he mentions `&rest` but there's optional, and more too iirc)
Great! This could serve as an easy introduction for users new to Elisp.
Hmm, there seems to be no mention of dynamic vs. lexical binding, which is a difference from some other Lisps I was hoping to gain some insight on.
Nice - I feel this introductory guide fills a gap. Also, I really like his video tutorials.
Prot - the author - is a pretty incredible guy. He maintains a bunch of nice Emacs packages and themes.
But maybe even more remarkable: he got kicked out of his flat in Greece, couldn't afford a new place, bought a small plot of land in the mountains and started building a hut from materials he was able to afford or from things neighbours gave him. Really the bare minimum (he often sat in his hut with a jacket in winter cause it wasn't well isolated/heated)
Absolutely inspiration, all documented on his YouTube channel https://youtube.com/@protesilaos?si=MnjV7MhKtsT5RDSM