Hacker News new | past | comments | ask | show | jobs | submit login
Morse, an open-source interactive tool for inspecting Clojure (clojure.org)
173 points by xmlblog on April 28, 2023 | hide | past | favorite | 37 comments



I wasted several hours trying to make REBL work from a Leiningen project. Couldn't manage to have it connect to my REPL and show me the forms I'd get there. Gave up even though I managed to overcome the boggus dependencies.

I'm fed up with Clojure/script and the core dev team. The language came out without a build system, so Technomancy invented Leiningen, the build system, and eventually, something like 10 years later, the dev team released Deps: you still need to remember painfully long commands to run your project (and as a consequence store them in some textfile because eventually your teammates will ask you: can you send me the command to run the project/tests/whatever ?). Clojurescript is just a hideous mess and having to sprinkle countless reader conditionnals because of the atrocious clojurescript specific ':require-macros' is a huge letdown and makes writing universal portable code that can run both in the jvm and the browser a painful and sad experience. And it's almost impossible to suggest improvements to the language (even tiny ones) because the dev team is just smug. They'll turn down your idea and implement it anyway when they feel they need it (I've had 2 suggestions turned down then integrated anyway – I'm the one who pointed out Ruby manages terminal map arguments just fine, whether it's a literal or "variadic" map).

I'm looking forward to luxlang now. https://trello.com/b/VRQhvXjs/lux


This rant has hardly anything to do with the linked announcement, except that it starts with (paraphrasing) 'I once tried using REBL in an unsupported way and gave up after some hours' The criticisms have been adressed or discussed in many other contexts already, which is also why I won't engage in such discussions here.


> in an unsupported way

The majority of Clojure projects use Leiningen. As a consequence, REBL/Morse do not support the majority of Clojure projects.


I haven't seen leiningen based projects in a long time. Are you sure?


Go look for recent Clojure projects on github It's roughly half leiningen (counted 5) half deps (counted 5) with the occasional outliers using "npx shadow-cljs" or other unknown build methods (counted 2).

https://github.com/search?q=language%3Aclojure&type=reposito...

Note: I examined one project per author.


We specifically preferred Leiningen for all new projects at my last job because of a number of plugins we still used that were unsupported by Deps. This was a year ago, so that may have changed since I left.

I still find Lein a little easier to use, and use it for personal projects, but appreciate Deps's more data-driven, "simpler" approach -- and it seems faster.


The Trello link didn’t really tell me what Lux is.

Is it this one? https://luxlang.github.io/lux/

So it got inspired by Haskell, clojure etc. and is early dev… not sure what the cadence is or how big the community is.

What benefits does this project provide vs the established more battle tested projects, like clojure?



All roads lead to Smalltalk.



there are so many lessons that we need to understand and leverage in our modern tooling, languages, and systems that Smalltalk and Lisp got right decades ago.



I've been really enjoying using Clojure with Clerk: https://github.com/nextjournal/clerk

It's a bit like a Jupyter notebook, but you get to use your own editor, you still have a normal Clojure REPL, it's stored in git like "normal" code, etc.

For exploratory, information processing type work, it's pretty great.

Demo here: https://www.youtube.com/watch?v=3bs3QX92kYA


Are Clojure dev teams outside of Nubank currently using REBL excited about this?

As a small project Clojure dev (and admittedly a couple years out of daily Clojure use), these types of projects are hard for me to place in a day-to-day work context. The doc says that Morse is one tool that can "amplify the power of the programmer during interactive development".

I totally feel like Clojure REPL-based dev is better for me personally - the interactive feedback feels so natural and functional programming matches so well my preferred dev process. But it is more difficult for me to understand where this type of tooling fits in dev workflow. Is Morse an incremental improvement? Does it make more sense in significant Clojure dev shops with many programmers vs just me sitting around with an Emacs repl going?


> Clojure REPL-based dev is better for me personally

me too! Morse is complementary to your normal REPL-based workflow. it is designed to not get in the way of that.


Is it fair to say a user of rebl isn't going to notice much difference between morse and rebl?

But replicant seems important overall for the ecosystem and probably worth highlighting?


REBL wanted to be your REPL but Morse uses the REPL that it's hosted in or remotely connected to.


If it’s anything like REBL (and it looks like it) it’s complimentary to a repl. Think it it as a visual data browser, which is something that a repl isn’t good for


for me, (just started using it), at least 1 good case is traversing deeply nested maps without going crazy. Even when looking at nested structures from other langs, easy enough to write a converter and then use this to inspect. Also if the datatypes are special, you can have it expand in other ways like links to browser, or other custom view types. That alone seems pretty useful. You can make GUI like behavior with just adding some metadata.


Back in the day, I used the Cursive plugin + IntelliJ integrated debugger to inspect complicated data structures. This seems like a natural evolution.


I'm glad the MATLAB interface isn't dead haha

This this looks awfully similar to Reveal - though Reveal seems to be more composable and modular

https://github.com/vlaaad/reveal/


Thank you clojure team and nubank for making this open-source!(really excited to check this out). Also off topic but I did not realize they recently made datomic free, another great contribution!


    -... .- -.. -. .- —- .


Nice work, I had a similiar idea a month ago, if I commited to the project I would have named it Explojure.

I'll give this a whirl tonight!


No. Morse is a long-established communication protocol for letters. This tool is just something named poorly.


Remorse maybe?


It's a reference to the Inspector Morse novels.


That is called Morse code, not Morse.


Hear! Hear!


This sounds awful to google for, I guess if you do "Clojure Morse" it might work. The other nitpick is, if you're ever introducing a new language, regardless of context, throw some code samples, like a simple applicable "hello world" at a minimum.

And because someone has to...

"Can I look at your Morse code?"


> if you're ever introducing a new language, regardless of context, throw some code samples

This is not a new language, it's a tool for Clojure.

I really appreciate the contributions that Nubank is making (after making Datomic free, https://blog.datomic.com/2023/04/datomic-is-free.html). My only nitpick this time is that I would have liked some screenshots/screencasts of the this new tool in action.


dimitar found and linked a screenshot upthread: https://raw.githubusercontent.com/nubank/morse/main/screensh...

(more would be nice but it's a start)


I apparently missread the content, more reason why it needs screenshots or anything informative front and center...


You could have just read the article, it explains very clearly what it is about. Or checked the github page linked in the article that provides more information and screenshots.


wait datomic is free now? wow nice


As long as the tool lives in the ecosystem and is discoverable alongside Clojure, the name isn't an issue at all.


clojure hardly needs a "hello world" introduction




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: