5/20/2025 at 3:55:51 PM
I'm curious, did you find there were things that were easier to do because it's Janet/lisp-like language? Or you just fancied like using it (perfectly valid reason of course!).I tried various lisp dialects, but I could never find the killer feature vs other languages I already use. And I can justify why I use these specific languages I do use, if that makes sense.
by rich_sasha
5/20/2025 at 4:23:44 PM
I find the REPL and interactive development workflow invaluable. A window manager is a long-running background service by nature, and has a lot of accumulated runtime states. The ability to peek inside and debug while the process keeps running helped me a lot when building Jwno.I think Jwno's REPL module is so important, I specifically changed Jwno's architecture at one point to make it work.
by agentkilo
5/20/2025 at 8:37:30 PM
> I find the REPL and interactive development workflow invaluable. A window manager is a long-running background service by nature, and has a lot of accumulated runtime states. The ability to peek inside and debug while the process keeps running helped me a lot when building Jwno.Sure, but any particular reason you picked Janet over Common Lisp? They both support images, REPL, hot-code-reloading, etc.
by behnamoh
5/21/2025 at 12:25:28 AM
TBH I dived right in when I decided I should build something with Janet, and didn't really consider any alternatives. Now you mentioned it, I think Janet's simplicity and conciseness played a large part in attracting me to it, comparing to Common Lisp at least.by agentkilo
5/21/2025 at 3:11:22 AM
Janet being a tiny embeddable runtime similar to Lua probably makes it perfect for a use-case like this. You have a full language, standard library, and interpreter in ~1 MB, along with the ability to bundle the runtime with your scripts into one binary. That's worth a lot.by netbioserror
5/21/2025 at 6:33:24 AM
I am not familiar with Janet but have been a long time lisp developer. Could you perhaps add a few lines to the readme explaining how the build process for jwno works? Would love to give it a try, understand how it works and hack around :)by postdoc74
5/20/2025 at 6:39:07 PM
> I could never find the killer feature vs other languages I already use.You're kidding or trolling? Structural editing and the REPL are the greatest features of Lisp. The ability to just grab any expression and move it around simplifies so many things when coding and refactoring. With the connected REPL you can eval anything on the spot, that turns the entire experience of coding into a video game — you don't need to wait for linter, linker, compiler — you just run things. You often don't even have to save anything. I suspect when you "tried various lisp dialects" maybe you didn't use structural editing and the connected REPL?
Often people confuse Lisp REPL with REPLs in other programming languages, e.g. Python, where usually you have to copy-n-paste chunks of code into it. Lisp's REPLs are different in the sense that every step in Read-Eval-Print-Loop is different — in Lisp, you typically eval things right where you type them, by sending whole expressions to the connected REPL, which could be remote. We (for example) run ours in a Kubernetes cluster, that allows us to experiment with pods, running queries against the "real" DB tables, testing services "live".
by iLemming
5/22/2025 at 7:16:58 AM
I have only just begun my road down lisp, from starting to hack some elisp and working with some CL for fun. But structural editing is turning out to rapidly be my favorite feature, to the point that I'm working in my personal time on a lisp (syntax? language? idk haven't exactly decided) on top of Julia (my preferred language) so that I can use structural editing. The ability to just grab and drop entire expressions and advance through code by expression at a given level of the tree or up and down it is just really really nice.There already is a LispSyntax.jl but it's sort of trying to be a Clojure clone and I don't care for it, haha.
by joshjob42
5/22/2025 at 8:38:41 PM
I know, right? I honestly have no idea how the heck did I even code before in non-lispy languages. I imagine if I had to pair-program with someone today it would go like: "hey, how do I grab this part of the function quickly, so I can move it out?"... "Wait, what? I have to manually select it, there's no quick way of doing that with a single keystroke? Oh, I can use this 'powerful refactoring' feature of the IDE? Huh... and it only works for this specific language, there's nothing for a different one? Got it, okay... daaaarn... and I thought the coding supposed to be the easy part of programming..."by iLemming