I just discovered Jshell, a Java REPL shell. It's like Python's interactive shell , but in Java ;-)
It's not new. Jshell was introduced in ... Java 9. Shame to me I only learn about it in Java 23!

I just discovered Jshell, a Java REPL shell. It's like Python's interactive shell , but in Java ;-)
It's not new. Jshell was introduced in ... Java 9. Shame to me I only learn about it in Java 23!
Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)
https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)
¹ https://small-tech.org
² https://sitejs.org
³ https://gohugo.io/
⁴ https://kitten.small-web.org
⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji () to the end of your route’s name. e.g., admin
.page.js or /admin
/index.page.js (see https://kitten.small-web.org/reference/#sessions-and-authentication).
⁶ https://codeberg.org/small-tech/jsdb
So my question is, what's an intuitive way to use dropping-in- #fortran from the #lisp #repl ?
Reading a .f file ~ into a let* form which I'm currently doing seems kind of bland. #f( this(1) = is(2) + a / fortran * line) seems kind of uninspiring (who would want to express themselves like this). Maybe Enter "fortran mode" and read lines of fortran from *standard-input* with normal interactive evaluation hacked in?
The fortran becomes #series expressions in lisp.
Despite ample evidence to the contrary, #Ilive (hmm, if I were also #evil, that would be a pallindrome as well as a visual collision)
Fascinating (if I do say so) #lispgames #gamejam #gamedev #retrospective on #itch_io
https://lispy-gopher-show.itch.io/lispmoo2/devlog/834615/princess-revisited
I am enormously happy with the
{ verb [ dobj [ prep iobj ] ] } x
language dynamic, and how it shares your #lisp #repl, and their concerns are just... Different so they don't collide.
I guess I get my #languageDesign friends a little better now.
Thoughts?
Just added basic server/process stats to Kitten’s interactive shell (REPL).
Use the new `.stats` command to see them.
Also, documented the shell better in the Kitten Reference:
https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
w00t! #Kitten now has a shiny new…
kitten shell
…command you can use to connect to your Kitten daemon in production to debug it, etc.
Also, I don’t know if I missed something simple but I had a hard time handling Node’s #REPL preview completions over a socket connection. Couldn’t find any docs. Managed to fix it by implementing a control channel to communicate the remote client’s terminal size. Wrote it up here, in case it helps anyone else:
https://codeberg.org/aral/gists/src/branch/main/node-js-repl-over-socket-with-preview-completions.md
You can now connect to the interactive shell (REPL) of a Kitten daemon running in production by sshing into your machine and running:
telnet 127.0.0.1 1337
(Or nc 127.0.0.1 1337 if you prefer. Basically, it is available from port 1337 on the local loopback address.)
In development mode, you can press the s key to start up an interactive shell.
New Video – Kitten features introduced this week:
• Interactive Shell (REPL)
• Multi-page Settings
• Backup and restore (data portability)
With examples that cover components and Kitten’s built-in JavaScript database (JSDB).
Kitten’s interactive shell (REPL) now saves session history scoped to your app so it will still be there when you next serve the same app.
https://codeberg.org/kitten/app#kitten-s-interactive-shell
I think I’m done with the REPL feature now.
Going to take a little break, step away from the computer, and make a plan for the next week of work on Kitten and Domain¹.
Small update on Kitten’s new interactive shell (REPL). You can now access Kitten’s router via:
kitten.app.router
Also updated the section in the tutorial to fix typos in some of the code examples and use the new router key path:
https://codeberg.org/kitten/app#kitten-s-interactive-shell
Kitten now has a lovely new multi-page Settings screen and… *drumroll*… a new interactive shell (REPL) for you to play with the running state of your Small Web site/app/place and debug your app, inspect/manipulate its database, etc.
I plan on recording demos of each of them tomorrow but you can play with them now.
And here’s a little tutorial to get you started with the shell:
https://codeberg.org/kitten/app#kitten-s-interactive-shell
Dijkstra’s snark notwithstanding, #BASIC was immensely helpful to me in learning #programming :
“BASIC Was Not Just A Programming Language”, Guillaume Chereau (https://gcher.com/posts/2023-12-24-basic/).
so, it looks like the better way to do #scheme #REPL-ing in #Emacs is not to use the Geiser buffer directly, but to open a file as a sort of scratchpad and write expressions in it and evaluate them with C-x C-e.
interesting. kinda reminds me of how I do shell scripting in #Acme, except Acme doesn't understand syntax very well.
I made a short screencast about something that bothers me about the so called interactive usage of the #Guile #REPL
https://peertube.mastodon.host/videos/watch/f580b875-718f-48e3-82bc-a9560568c56b