Mikel Evins writes about REPL-driven programming, Lisp, Apple design history, and programming as teaching.
Commenters recommend his REPL-driven programming post, praising its distinction between merely having a REPL and supporting REPL-driven development.
I wrote a blog post entitled "Art is not optional" (https://mikelevins.github.io/posts/2021-01-04-art-is-not-optional/) that is in part about this: I don't think people usually choose to be artists. I think they mostly just are, like it or not. In terms of personality psychology, they're "creatives"--that is, people that score extremely high in trait openness.
Like you, I write because I must. I don't choose to write. It just happens. I can choose whether or not to put pen to paper or finger to keyboard, but I can't choose not to create the stuff that I write.
If I'm stuck somewhere with no writing utensils, I write anyway, constructing stories and lyrics and essays and explanations in my head, storing it up as best I can for when I can write it all down. It isn't even mostly in words. Most of my thoughts are visual-spatial, and only get translated into words when I have writing utensils.
I make pictures, too, and songs, and software. Similarly, I don't decide to do it or choose to do it; it just happens all the time, like it or not. If I don't have any tools to work with, that doesn't make it stop. It just makes it inconvenient, and it means that a large amount of what I create is likely to be lost before I can get it transcribed. I don't lose it all. The especially memorable bits stick, which means that doing without tools for transcription has benefits. It filters out the less memorable stuff.
My openness score is in something like 97th percentile, so somewhere around…
I sympathize, but unfortunately Tim Cook's stewardship of the Mac, from the embrace of soldered RAM and even storage throughout the Mac lineup, to the increasing annoyances of macOS either in the name of security (e.g., notarization, the popups that request permission to read user directories, which is really annoying when using LLVM's debugger in modern macOS) or to help advertise Apple's subscription services, have harmed the Mac experience. The issue of soldered RAM and storage in particular pushed me back to Windows after more than 15 years of using Macs (which is a shame since Apple's ARM hardware is awesome when it comes to performance and energy consumption); the last time I used Windows as my daily-driver OS was during the XP era. Unfortunately I don't like any of the mainstream desktop operating systems; Windows is annoying and loves to get in the way, macOS is becoming increasingly annoying with each release and is also tied to hardware with massive prices for RAM and storage upgrades with no DIY options like in the past, and the Linux desktop has a Sisyphean development cycle with so much churn. Instead of working on refining the user experience and polishing applications like LibreOffice to make them more competitive to Microsoft Office, it seems like every few years there are major infrastructure changes that require major code changes or even rewrites.
I'm quite disillusioned with desktop computing in general. Microsoft and Google are leading the way with…
I’ve never did anything serious with Common Lisp, but my light experience on it was that
- the idea that almost all language constructs are user-implementable with macros is quite impressive (but I don’t buy the argument that “real” macros are only able in s-exprs)
- and the REPL-driven development model was a really beautiful and seamless experience.
But… every time I try to use it on some code, I find too many warts and inconsistencies that I just didn’t want to spend too much effort in making it work. It’s a beautiful language in it’s own ways, but the other parts are too ugly (to me, of course).
I’m fine with it being a lisp or not; I just want a clean language with macros baked in (and becomes the basis of most language features), and with a REPL-driven development model as a first class citizen (with interactive restarts and all).
Unfortunately it seems a pipe dream… so I’m stuck here.
[0]: https://mikelevins.github.io/posts/2020-12-18-repl-driven/
One of the other comments in this thread links to: https://mikelevins.github.io/posts/2020-12-18-repl-driven/ which makes a distinction between "having a REPL" and "supporting repl-driven programming". Modern languages which have a REPL generally don't support the sort of repl-driven programming they refer to. Julia's Revise.jl [1] supports one way of repl-driven programming, and it is in fact the recommended way of doing Julia, but from my understanding it's still very different from the Lisp ways.
[1] https://timholy.github.io/Revise.jl/stable/
the python debugger is cool but is an inferior experience. It isn't only about a REPL, but about the editing experience, and about the language being thought from the ground up for long-living programs. See: https://mikelevins.github.io/posts/2020-12-18-repl-driven/
Not exactly what you asked for but, if you have time, I would recommend looking at Practical Common Lisp:
https://gigamonkeys.com/book/
And also this blog post (which is a much smaller time commitment):
https://mikelevins.github.io/posts/2020-12-18-repl-driven/