Try Clojure

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. babashka

    Native, fast starting Clojure interpreter for scripting

    If you are new to Clojure and would like to experiment with it in a way that is immediately useful, I highly recommend the Babashka runtime for scripting [0]. It's very fun, approachable, and one of the more polished parts of the Clojure ecosystem.

    It's a particularly good entry point because unlike full-JVM Clojure it has a very fast startup time. Newcomers can use any file-watching /reloading tools (e.g. nodemon) that they're already familiar with to work with it interactively.

    Hopefully, a enthusiastic user will graduate to using a REPL connection in their editor for a fully interactive setup. But newcomers tend not to do this... its an unfamiliar workflow to most, and can be pretty cumbersome to setup.

    [0]: https://babashka.org

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. shadow-cljs

    ClojureScript compilation made easy

    Here is where I'd start for the path of least resistance while still using the most modern libraries:

    - Dependency management: https://clojure.org/guides/deps_and_cli

    - Clojure->JS compiler: https://github.com/thheller/shadow-cljs

    - React integration: https://github.com/reagent-project/reagent

    - State management (optional): https://github.com/day8/re-frame

    You might also want a CSS framework. There are some options to write CSS in ClojureScript, but I prefer TailwindCSS which isn't a Clojure-specific thing as it works fine out-of-the-box with `.cljs` files.

  4. biff

    A Clojure web framework for solo developers.

    https://biffweb.com/p/how-to-use-postgres-with-biff/

    People don't really use ORMs in Clojure, they just write SQL directly and abstract the details from consumers using functions. That said, HoneySQL is a common alternative to writing SQL that makes it a lot less painful (and composable!):

  5. jank

    The native Clojure dialect hosted on LLVM with seamless C++ interop.

    There's an ongoing effort to create a Clang/LLVM implementation of Clojure's runtime with hot reloading and other very interesting features. You can take a look at it at https://jank-lang.org/. It still hasn't reached feature parity with full blown JVM Clojure but we've paying close attention to its development.

  6. clojure

    The Clojure programming language

    Along the same lines with the docs, I also find it frustrating that a lot of the very most core basic abstractions and interfaces are left totally undefined in terms of documentation. Take `ISeq`'s definition. Surely, a candidate for the single most core interface.

    https://github.com/clojure/clojure/blob/master/src/jvm/cloju...

    But like, where is the javadoc? What exactly is supposed to be the contract of these methods `first`, `next`, `more`, `cons`? What's the difference between `next` and `more`?

    I really just don't like that. Are we just supposed to pick up the core contracts/abstractions through oral teachings and slack channel messages?

  7. reagent

    A minimalistic ClojureScript interface to React.js

    Here is where I'd start for the path of least resistance while still using the most modern libraries:

    - Dependency management: https://clojure.org/guides/deps_and_cli

    - Clojure->JS compiler: https://github.com/thheller/shadow-cljs

    - React integration: https://github.com/reagent-project/reagent

    - State management (optional): https://github.com/day8/re-frame

    You might also want a CSS framework. There are some options to write CSS in ClojureScript, but I prefer TailwindCSS which isn't a Clojure-specific thing as it works fine out-of-the-box with `.cljs` files.

  8. re-frame

    A ClojureScript framework for building user interfaces, leveraging React

    Here is where I'd start for the path of least resistance while still using the most modern libraries:

    - Dependency management: https://clojure.org/guides/deps_and_cli

    - Clojure->JS compiler: https://github.com/thheller/shadow-cljs

    - React integration: https://github.com/reagent-project/reagent

    - State management (optional): https://github.com/day8/re-frame

    You might also want a CSS framework. There are some options to write CSS in ClojureScript, but I prefer TailwindCSS which isn't a Clojure-specific thing as it works fine out-of-the-box with `.cljs` files.

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. clojure-lsp

    Clojure & ClojureScript Language Server (LSP) implementation

    clojure-lsp for any editor is excellent.

    https://github.com/clojure-lsp/clojure-lsp

    clj-kondo is also excellent with multiple editors supported.

    https://github.com/clj-kondo/clj-kondo

    I've always used (Neo)Vim with Clojure.

  11. clj-kondo

    Static analyzer and linter for Clojure code that sparks joy

    clojure-lsp for any editor is excellent.

    https://github.com/clojure-lsp/clojure-lsp

    clj-kondo is also excellent with multiple editors supported.

    https://github.com/clj-kondo/clj-kondo

    I've always used (Neo)Vim with Clojure.

  12. ClojureCLR

    A port of Clojure to the CLR, part of the Clojure project

  13. hy

    A dialect of Lisp that's embedded in Python

  14. basilisp

    A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+

  15. helix

    A post-modern modal text editor.

    I use Helix [0] myself, which has tree-sitter based commands for moving + selecting up/down/forward/back by expressions. These are built-in and require no configuration.

    It's surprisingly excellent! Sure, the "language" of paredit features more powerful text manipulation that just simple movement... but combined with the new "jumping" in the latest Helix release [1], it makes for a very impressive keyboard-based navigation system.

    [0]: https://helix-editor.com

  16. ring-jetty9-adapter

    An enhanced version of jetty adapter for ring, with additional features like websockets, http/2 and http/3

    never used an ORM, but happily used HugSQL for making composable queries[3].

    [0]https://github.com/sunng87/ring-jetty9-adapter

  17. reitit

    A fast data-driven routing library for Clojure/Script

  18. hiccup

    Fast library for rendering HTML in Clojure

  19. libpython-clj

    Python bindings for Clojure

  20. rn-rf-shadow

    An example project to get you started with React Native using shadow-cljs in 3 minutes

    The CLJS + RN route is doable. [0] Not familiar with the other approach.

    [0] https://github.com/PEZ/rn-rf-shadow

  21. tryclojure

    Clojure live REPL tutorial

  22. SDKMan

    The SDKMAN! Command Line Interface

    I use https://sdkman.io/ to manage JVM versions, have you tried that? I haven't used Cursive, maybe it does something weird, but in general IntelliJ seems to accept it just fine in my everyday work.

  23. simple-website-with-posts

    A simple Clojure implemented website that lets you write posts and see them.

    In Clojure you'll have to write the queries yourself unfortunately. People always ask, where is the fully fledged web framework in Clojure? There isn't one. Why there isn't one is hard to answer, but it's partially because the people who could write one, don't find they need one themselves.

    There's definitely a preference in Clojure for not relying of frameworks, because the current people in the community like to be in control, know what's going on, or do it their own way.

    That said, the whole code still ends up being relatively small. So, you kind of end up with a similar amount of total code, but you're much more in control. And if certain things you find too repetitive, you can remove the repetition yourself through many of Clojure's facilities, specifically where they annoyed you.

    See: https://github.com/didibus/simple-website-with-posts where I implemented the small website you were talking about, creating posts and seeing them. The whole code is here (minus the CSS): https://github.com/didibus/simple-website-with-posts/blob/ma...

    It's 95 loc and that includes the templates. There's no framework.

  24. ClojureDart

    Clojure dialect for Flutter and Dart

  25. helix

    A simple, easy to use library for React development in ClojureScript. (by lilactown)

  26. uix

    Idiomatic ClojureScript interface to modern React.js (by pitch-io)

  27. refx

    re-frame without Reagent

  28. framework

    Our framework (by Flexiana)

    The closest to this (MVC framework with all features including migrations, API building, auth...) is Xiana https://github.com/Flexiana/framework/

  29. calva-paredit

    Discontinued Paredit extension for Visual Studio Code

    i'm pretty sure this is the thread i saw, but at the time it hadn't been closed yet: https://github.com/BetterThanTomorrow/calva-paredit/issues/1...

    if there's now a way to disable paredit entirely then i might check it out again some time in the bear future

  30. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

Did you know that Clojure is
the 26th most popular programming language
based on number of references?