Interactive, REPL-driven development, in the editor, is, in my opinion, the best thing about programming.
Never before have I been able to run code without leaving the code. It makes the interaction so much more real. Like that first time you ran a script, but now with lisp, you can evaluate any list you want.
There are definitely a few quirks that I need to learn better, like learning the full cider - debugger api.
There are other great concepts in clojure, but I think the feedback loop you get in a clojure repl is unmatched across my coding experiences.
I've been in Haskell with Monads and Lenses. It was great, but the feedback was very much: the compiler likes it, hopefully my types are right too. Who knows what it's doing at runtime? Hope you wrote some tests!
In clojure, it's very common to build up some computation in a namespace, saving and re-using ns-level variables to see the function's actual output. That code then gets squashed together and dropped into a function on the namespace.
It ends up lending itself well to writing small, tiny, well-named functions.
If you're in neovim, conjure this is a great introduction to the experience of writing easily evaluated lisp.
The first place everything gets dropped.
Consumed as a database by some repl -y tooling.
Useful for by-hand and mobile retrieval during conversation: 'let me show you what i was working on today...' not blocked by some long search through mobile apps session.
Also helpful for personal review. What did I do today? This week? This year? time-indexing and image hosting/data storage by default.
Content: clips/gifs, screenshots, commits, todos, polls?
Cider is an emacs clojure lib gives emacs and clojure the interactive programmy goodness the world deserves.
ten year history: https://metaredux.com/posts/2022/07/10/cider-turns-10.html
Critical to any design or engineering (or creative) task: feedback.
Preferably quickly.
Ideally while it's being designed/engineered/written.
Related:
Conjure is a Clojure (lisp?) support library for neovim.
Conjure School is a feature in conjure that walks users through interactive development concepts.
I recommend it to anyone who is brave enough to toy with neovim and who might be vaguely interested in clojure.
Read-Eval-Print-Loop.
Where your idea is executed and converted into feedback.
More opinionated: Interactive, REPL-driven development
When first getting started with clojure and repl-driven development in emacs, there are many hang-ups.
It's slow, the keybindings to get there are as weird as emacs's, errors/feedback show up in a handful of places, the repl buffer is small and takes up screen real-estate...
Just about all of these have a solution, if you're looking for that beautiful repl-bliss.
One solution came when I started using treemacs.
A modern lisp targetting the JVM, JavaScript, Bash, and others.
Focused on simplicity and a culture of pragmatism.
Offers best-in-class repl-driven development tooling for joyful interactive programming.
So you want to create a quick native dashboard. You know enough web dev to be dangerous, and now you're hoping to create something useful that isn't stuck in one of your browser tabs.
Here I'll touch on the path I took through Electron that eventually lead to Tauri, then include links to the way I'm currently using Tauri in Clawe.
Emacs is a text-editor that is quite old, but has been worked on continuously since then.
Emacs is special because it is very dynamic. It is implemented in lisp, which allows interactive development via the REPL, giving you tons of power and control. It is a double-edged sword, in that you must take care to keep your systems running smoothly. Tools are everything, so keep your knives sharp.
Emacs can be very difficult to learn, especially in a vacuum. I hope to document the things that have been useful to me.
Some emacs notes:
A video overview of the components that make up the clawe monorepo.
Relevant April 2023.
I'll post a link here once it exists! For now, if you're reading this, I could stream this any day, so take a look at my schedule or ping me to see when it's going to happen.
A fully-featured tiling window manager on OSX.
Targetted by clawe to bring clojure -y, repl-driven development to OSX.