I use Common Lisp (CL) for some of my small personal projects. A few publicly available examples I can share include my website [1] and a now-defunct mathematics pastebin [2]. My CL projects are usually text-oriented, not graphics-oriented. What keeps me coming back to CL is how convenient the live coding environment is.
When I am exploring ideas that are not fully concrete yet, I can begin by writing a small set of functions with very basic functionality. Then as the ideas evolve, I can refine existing functions or add new ones, then quickly "reload" them (with say, C-M-x in Emacs), and see the effects immediately. There is no separate compile or rebuild step. I don't have to restart any service or application. The effects are truly immediate -- what previously did X, now does Y.
In the Python or JavaScript ecosystems, similar live reloading capability is often provided by frameworks (e.g., FastAPI, React, etc.), which monitor file changes during development. In CL, it's just part of the language implementation itself.
Of course, at the end of the day, everything is committed and pushed to a version control system. Sometimes I restart the application too just to be sure it reflects the actual source, especially, after hours of live reloading. The stereotype of Lisp programmers making all of their modifications in an ephemeral image and then dumping it all to disk is not something I have actually seen in practice, at least not among the people I know.
So the rest of the software development practices happen to be typical. But during exploration, debugging, or troubleshooting, the live coding experience in Common Lisp is so seamless, it feels like programming at the speed of thought.
For clojure, you can use quil:
I’ve been using quil as I work through _The_Nature_of_Code_ by Daniel Shiffman:
This reminds me of the excellent CEPL library (https://github.com/cbaggers/cepl). You can write live shader like programs with cepl with an OpenGL backend.
Among the plethora of strong suits that Common Lisp brings along, the live coding is hands down the best part of it. There is just no better way to experience programming than that.
Sure, the condition system is awesome, CLOS is next to nothing, but the live coding just wins al the way. All the other aspects are just icing on the cake for me.
Reminds me of something from like 2007ish(?)~ called (fluxus). It was a lisp text editor with a render target in the background and some nice standard library for making 3d objects appear or sfx play. Everything was constantly evaluating/hotloading in the background.
So much fun, I can't find any of the videos in a quick search, so maybe lost to time. Great performative lisping in them hills though.
EDIT: I did find the old page on the wayback machine. https://web.archive.org/web/20120810224932/http://www.pawfal...
Working on a largeish typescript node project right now and no support for recompiling a single function in a live system means I have a good minute of downtime on every change. The lisp paradigm would be so refreshing here.
Love this. Sketch, in particular, looks really exciting to me. I'll have to take a look into trying it out. I still have dreams of doing some of the ideas in Turtle Geometry on a modern computer.
dang, livecoding always gets me fired up - i mess around with this kind of stuff too, nothing beats seeing changes instantly
slightly related, i've been following this game called replicube (https://store.steampowered.com/app/3401490/)
this is livecoding 3d voxel to solve puzzles. the demo was fun. looks like it'll be released soon.
This sounds like a great developer experience, but the path from live-coded LISP graphics to a game that can be made public on ie. Steam is a long and troublesome path, compared to using for example OpenGL and C++.
I wish more programming languages focused on quick compilation times, easy cross compilation and straightforward deployment in general.
Live development is still so under-explored, and is just so exciting to work with.
One of my favorite talks is "Stop Writing Dead Programs" (https://www.youtube.com/watch?v=8Ab3ArE8W3s) and touches on a lot of what could be in terms of live development.
Lisp is very well-suited to live development due to code being data, but live development doesn't need to be lispy.
I built a live development extension for Love2D which lets you do graphics livecoding (both lua and glsl) in real-time - every keystroke updating the output, (if a valid program).
https://github.com/jasonjmcghee/livelove
Here are some (early) demos of things you can do with it:
https://gist.github.com/jasonjmcghee/9701aacce85799e0f1c7304...
So many cool things once you break down the barrier between editor and running program.
I've also asked myself the question of, what would a language look like that was natively built for live development, and built out a prototype - though it's definitely a sandbox so haven't posted it anywhere yet, other than demos on mastadon.