Hacker News new | past | comments | ask | show | jobs | submit login
Sublime Clojure (tonsky.me)
169 points by rcarmo on Dec 14, 2021 | hide | past | favorite | 44 comments



Happy to see both my favorite editor and my favorite programming language hit the front page of Hacker News! FWIW, I responded to some of the points regarding Tutkain over at reddit[1].

[1] https://www.reddit.com/r/Clojure/comments/rflhxf/comment/hoi...


> get rid of the extra “REPL” panel for good. Why do you need it if you can see your results inline?

But I do not want them inline. I want to use the REPL as a _interactive_ REPL, where I can write my code and later copy that to the file. That's actually one of the reasons I still use Emacs: Common Lisp with Sly and Clojurescript with Cider.


Why do you write code in the REPL directly? Write it in a buffer and send it to the REPL.


>I want to use the REPL as a _interactive_ REPL, where I can write my code and later copy that to the file

Just write in the normal editor, and evaluate interactively code from there. Emacs does that too


Yes, but I don't have to, because with Emacs I have (almost) the same editing capabilities in the REPL.


Why? Then you have to copy it from the REPL into the file later instead of already having a working version in the file. This makes zero sense.


Why do you want to code in the repl when you can code in the editor and eval in the repl?


Because I gain nothing when writing in the editor window - because in _Emacs_ the REPL window works (almost) the same as the editor.

A REPL with Paredit, autocompletion and 'normal' editing capabilities is what I want. That's why I often program other languages (that have a REPL, but no way to comfortably edit using it, like Haskell, PureScript, Elixir, OCaml und Rust) using Jupyter notebooks, which is the same as evaluating inline - that's better than the 'normal' way (only seeing errors/warnings/... inline) but it's not the same experience.


The inline errors are life changing. If you use VSCode, ErrorLens package achieves same thing: https://marketplace.visualstudio.com/items?itemName=username...


This is an exceptionally well thought out set of points on REPL use for a lang like Clojure. I'm playing with Scheme but the ideas here are great. Love the timing of each command if it takes longer than a threshold!


Sublime is my favorite editor and I’m so glad to see that there is still enthusiasm in the community. Stoked to try this out!


I've never done any Lisp before, is Clojure a good starting candidate?


Yes, no.

Yes because it's a very nice language, with lot of bells and whistles. Javascript and Java integration are nearly perfect, allowing you to have a access huge ecosystem. No because even though there's progress regarding the error reporting, it's not always simple to parse them. No because you'll have to understand way more Java than you may be willing to. No because it's not Lisp per se. It's nearly a different beast.

Would I recommend it? YES. But know that "Here be dragons"


Definitely. It's got great learning resources like Clojure for the Brave and True, and it's very practical. There is good support for using it in server-side work, web apps, both frontend and backend, and now even lightweight scripting.


Further to other replies, you can dabble with Clojure using Babashka [1], a Clojure runtime compiled to native code that allows you to execute scripts without a full JVM.

It also has support for defining & running 'tasks', which makes it useful as a simple build system.

[1] https://babashka.org/


if you want to learn the power of lisp and learn a very powerful language check out Common Lisp. if you are a solid programmer, learn the syntax on youtube or by completing Common Lisp Koans (should take you a day or two). then pick up Norvig's Paradigms of AI Programming, which is a classic in and of itself. if you don't know emacs, choose Portacle to get you started


I got my start in Clojure with ClojureScript. If you do front end web development it's a great way to jump in. I think I actually now prefer ClojureScript with the Reagent and Re-frame libraries more than standard React using js/TypeScript.


Only if you know the JVM and a bit of Java, otherwise I would look at Scheme or Racket tbh.


Really cool plugin, although a bit sad to see how long it's taking to get approved - It makes sense to want to do a thorough review, although taking a month+ not something I like seeing in my favorite editor :(


> It’s been two weeks since I started using Sublime Clojure REPL myself. And you know what? I started to really enjoy Clojure exceptions! Short, concise, pointing directly to the error, formatted in Clojure naming convention, not in Java munged style which you need to decypher back to Clojure. It’s a fantastic experience, even if on paper it doesn’t sound as much.

Aren't bad exceptions one of the top issues for new (and old) users? I think solving this is a much bigger deal than you're making it out to be.


This is stellar work from Tonsky as usual, nice to see the innovation here.

Though I made the same point about inline real-time evaluation being better than a REPL recently, and my comment received no such fanfare =(

https://news.ycombinator.com/item?id=29217815


It can be confusing.

For instance, when people speak about "the REPL" in the Clojure community they are talking about a live application thats is integrated with the editor like 99% of the time, they don't mean a command-line prompt. All Lisps use REPLs for interactive development in this manner.


This is real neat. However, I tend to use Cursive and REBL. I think that's some of the coolest development environment I ever used.

People who have not heard of the REBL, can check out this video:

https://www.youtube.com/watch?v=c52QhiXsmyI

> REBL is a graphical, interactive tool for browsing Clojure data.


Was wondering if you could coach me through setting this up? I keep getting Java errors. Would be happy to pay you for your time (if I can afford it, that is :))


I can't really do more then follow the basic steps. I suggest you go onto Clojure Slack channels.

Are your Clojure tools working, do you understand how deps.edn works?

If you have your clojure tool installed you just put:

:rebl ;; for JDK 11+ {:extra-deps {com.cognitect/rebl {:mvn/version "0.9.242"} org.openjfx/javafx-fxml {:mvn/version "15-ea+6"} org.openjfx/javafx-controls {:mvn/version "15-ea+6"} org.openjfx/javafx-swing {:mvn/version "15-ea+6"} org.openjfx/javafx-base {:mvn/version "15-ea+6"} org.openjfx/javafx-web {:mvn/version "15-ea+6"}} :main-opts ["-m" "cognitect.rebl"]} ;;:rebl-jdk8 ;; for JDK 8 ;;{:extra-deps {com.cognitect/rebl {:mvn/version "0.9.242"}} ;; :main-opts ["-m" "cognitect.rebl"]}

Into your '~/.clojure/deps.edn'.

From there I can just add 'rebl' as a profile to my Intellj when you start a REPL it starts automatically.

There are also alternative tools like Portal to do the same things: https://github.com/djblue/portal

Or: https://vlaaad.github.io/reveal/


These were some refreshing ideas to solve UX problems in the clojure REPL driven development flow (especially the REPL panel which I always keep hidden).

I've been frustrated a bit with the general UX of using emacs, clojure, and REPL since a while now. I keep tweaking my emacs config to improve it one bit at a time, hopefully one day I'll be happy :)


Which part of the Emacs Clojure workflow you find annoying, and what is your proposed fix?

Asking because I still flow somewhere between Emacs/Cider and IntelliJ/Cursive.


Looks nice! The inline REPL functionality reminds me a lot of the (defunct) Light Table[1].

[1]: https://www.youtube.com/watch?v=H58-n7uldoU


This looks really nice! I recently started learning Clojure and picked up Tutkain as my editor plugin. This, however, looks like it would better fit my workflow and I will definitely check it out later!


Unrelated to the plugin: I love the dark mode on your site.


This is really great. I'm not willing to move from IntelliJ but the exceptions and inline evaluation are something I would love to have in Cursive



Inline evaluation is overwhelmingly what I miss from vim-fireplace when I moved to Cursive. Having said that, the code navigation tools are so much better.


This looks great. I've been using Calva and VS code for Clojure and it works but lacks a bit of polish.


That website is STUNNING. WOW.


REPL is Clojure’s superpower.

This is the only community were I keep seeing the word 'superpower' used repeatedly in most blog posts and forums.


Wow, that is certainly one way of making a website color scheme (and alienating potential readers). Either searing the reader's eyes with that gaudy yellow OR making the reader wave around their mouse as a "flashlight" instead of changing or even just switching the BG and FG colors.

I suspect accessability didn't factor that much into the thought process behind designing that website.


I think people have reacted to this comment as pure snark, but I did take a moment to look at your comment history and you're actually describing a physical reaction you're having, not just a matter of taste. I'd love to hear how general this problem is for you on the web, and how one might go around testing for these sorts of accessibility issues during development. I know of the various colour blindness 'simulation' tools available but other than the option of a dark mode (a proper one, not a gimmicky one like here) I wouldn't know how to address this issue.


> I'd love to hear how general this problem is for you on the web

For me in general "thin dark fonts on bright BG" and "bright fonts on very dark BG" are both straining to the eyes although the former is worse almost every time. I find myself zooming in further and more often on websites with those sorts of color schemes although if I zoom too far in I then have to swivel my head back and forth for every line of text due to my glasses having "progressive lenses"[0] ie. a pretty narrow cone of vision with the right "power" to read at eye-screen distance.

> testing for these sorts of accessibility issues during development

- IMO a pretty good rule of thumb would be to not cover vast amounts of the website in bright colors

- offer a dark mode, maybe even make it the default with an optional light-mode

- respect the user's browser/system-colorscheme with the CSS property "color-scheme" [1] (although in Firefox the support for that feature is scheduled for the next version this coming January)

[0]: https://en.wikipedia.org/wiki/Progressive_lens

[1]: https://developer.mozilla.org/en-US/docs/Web/CSS/color-schem...


I have poor eyesight and am fairly sensitive to contrast problems. I found this site very pleasant to read and have bookmarked it for later design “inspiration”.

Yellow on black tends to make the writing “shrink” for me, lowering the readability.


For me the light/bright colors are really straining my eyes since they're very sensitive to glare/bright lights as a consequence of cataracts.

Also the switching of the FG and BG colors was just an example I could think of in the moment to get something like "dark mode" with minimal effort. In practice I'd probably go with a somewhat "off-white"(?) FG on a medium-dark grey BG. IMO a less bright white text color in this scenario does well in eliminating the "shrinking" you speak of while the contrast with the muted grey BG isn't too harsh.


Empathies with your difficulties.

We seem to have slightly different access needs. This highlights the richness of working on accessibility problems. No one solution suits everyone, and there isn’t even a “accessible” and “not-accessible” pair that covers all bases either.


Yep, I have sent this website to people before with excited messages like “this color scheme seems weird but I find it very soothing and helpful for reading and concentrating.”


I really enjoy the color scheme of their site. As some work arounds though, the site works well with reader mode in Safari and Firefox. Also check out Dark Reader by Alexander Shutau for Firefox. That may help alleviate some eye pain. https://addons.mozilla.org/en-US/firefox/addon/darkreader/




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

Search: