/r/Clojure

Photograph via snooOG

Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.

Finding information about Clojure

API Reference

Clojure Guides

Practice Problems

Interactive Problems

Clojure Videos

Misc Resources

The Clojure Community

Clojure Books

Tools & Libraries

Clojure Editors

Web Platforms

Clojure Jobs

/r/Clojure

32,800 Subscribers

43

"Getting 50,000 Companies on Board with Clojure" by Cam Saul (Conj 2024)

4 Comments
2024/11/01
18:50 UTC

26

"Scientific Clojure, a bird's eye view" by Thomas Clark (Conj 2024)

0 Comments
2024/11/01
16:34 UTC

22

"Real World AI Integration" by Carin Meier and Marlon Silva (Conj 2024)

0 Comments
2024/11/01
16:26 UTC

24

Who is hiring? October 31, 2024

Please include any restrictions (remote/on-site, geographical, workpermit, citizenship) that may apply.

6 Comments
2024/10/31
23:00 UTC

32

Telemere Lightning Intro

2 Comments
2024/10/31
21:28 UTC

40

"Immutable Values in the Big Wide World" by Tim Ewald and Paul deGrandis

4 Comments
2024/10/31
21:27 UTC

106

Conj '24 - "Welcome" from Rich Hickey

5 Comments
2024/10/31
21:24 UTC

19

Web stack recommendation

Hello folks,

I'm a LISPer who recently started using Clojure to write an integration test suite, and I'm really enjoying the language.
I'm now looking to doing some web development (HTTP server and UI framework) and would like to know which libraries you've used and can personally recommend. I haven't used ClojureScript yet.

Any information would be greatly appreciated, thank you.

24 Comments
2024/10/30
17:45 UTC

8

London Clojurians Talk: Encoding internet-scale decentralised data structures on Convex (by Mike Anderson)

https://preview.redd.it/ey8entxmiwxd1.jpg?width=1920&format=pjpg&auto=webp&s=3239053e375532111b048e4d83ca47c9fcb2d69e

THIS IS AN ONLINE EVENT
[Connection details will be shared 1h before the start time]

The London Clojurians are happy to present:

Mike Anderson (https://www.linkedin.com/in/mike-cvx/) will be presenting:
"Encoding internet-scale decentralised data structures on Convex"

This discussion will expand on the first Convex event with the London Clojurians (https://www.youtube.com/watch?v=bpKAQgcJRao&authuser=4) which provided an in-depth look at the whole platform. Now that Convex is ready to launch, the second conversation with dive into the significance of these efficient data formats and why the CAD003: Encoding Format (https://github.com/Convex-Dev/design/tree/develop/docs/cad/003\_encoding) will be so revolutionary. The call will also cover examples for users. Note: the VM is written in Convex Lisp, inspired largely by Clojure. This past week Convex was awarded a grant from the EU government for a cross-chain token interoperability project.

Mike is a passionate contributor to open source software projects and an OG Clojurian, all the way back to Clojure 1.1 release. A programming enthusiast since the age of eight, Mike has a particular love for efficient data structures and algorithms. He represented the UK in the 1996 International Informatics Olympiad. Mike has held multiple CTO roles including being a founding member of Ocean Protocol (Blockchain for Data & AI) and Datacraft Sciences (Machine Learning, Data supply chain orchestration) based in Singapore.

If you missed this event, you can watch the recording on our YouTube channel:
https://www.youtube.com/@LondonClojurians
(The recording will be uploaded a couple of days after the event.)

Please, consider supporting the London Clojurians with a small donation:

https://opencollective.com/london-clojurians/

Your contributions will enable the sustainability of the London Clojurians community and support our varied set of online and in-person events:

  • ClojureBridge London: supports under-represented groups discover Clojure
  • re:Clojure: our free to attend annual community conference
  • monthly meetup events with speakers from all over the world
  • subscription and admin costs such as domain name & StreamYard subscription

Thank you to our sponsors:

RSVP: https://www.meetup.com/London-Clojurians/events/304286685/

0 Comments
2024/10/30
14:10 UTC

11

A Web Stack Special Interest Group?

Given the recent posts about Caveman and Zodiac, I thought I'd replug this email I sent to the mailing list (text copied below): https://groups.google.com/g/clojure/c/uroL-ftfrqY

Hello, thoughts about the Clojurish web stack have been bouncing around in my head for a while now. In recent months, I've noticed an uptick in conversations about the same. Maybe it's recency bias. Maybe not. The "boring business web app" is where the money is, after all.

I wonder if people would like to put heads together to come up with something general-purpose that helps people understand + construct + apply web things built by community members over the years.

Personally, I'm not convinced that a One True Framework is the solution. However there might be opportunity to out-framework all the framework-heavy communities by making a way to construct one's own framework.

The "constructor" might spit out a "standard recipe" that could be: "Ring + Compojure" or "Ring + Reitit" or "Kit" or "Duct" or "Sitefox" or "Donut" or "Pedestal" if the user feeds in well-specified requirements that match one or more of said framework/library collection. Or, it might run us through a decision tree to incrementally expand requirements into a project on disk (a clj-new template, but created incrementally).

AND, as m'colleague Kapil insists (and I agree) it should be a "full system" system... have us covered from parts assembly to production deployments.

/Explanations/ would be a key feature of such a constructor; Why this and not that? How to wire X and Y together? What are some example use cases? The explanations would be sourced from source repos.

Basically, this thing would respect and support the diversity and inventiveness of the Clojure web ecosystem /while making it accessible/ to the masses. The innovation is distributed, but the composition is centralised. This sort of thing is definitely in userspace and not language maintainerspace. IMHO, SciCloj is a great example of a special interest group that's doing yeoman service.

I'm not sure if I'm making any sense, but I'm sure smarter people that I have struggled enough to have had ideas of their own and if they come together, they might conjure up a very creative solution. What I am confident about, is that this is a complicated task, but not a complex one.

Anyway, I just wanted to put this out into the clojureverse and see what happens.

May The Source be with us,

- Adi

P.S. I'm sorely tempted to cite names / references that have informed and inspired me, but that will put people on the spot.

So whomever is interested in this line of thinking may self-identify by replying to this thread, with their current state of the art thinking (videos, essays, books, frameworks etc.).

Here's some of my stuff on these lines, for example:

Clojuring the web application stack: Meditation One

Riff: A "mycelium-clj" for the Clojure ecosystem?

Grokking Libraries in Clojureland (PDF).

Which Clojure codebases should I read? How and why?

5 Comments
2024/10/30
10:44 UTC

20

London Clojurians Talk: Basilisp: Clojure on the Python VM (by Chris Rink)

0 Comments
2024/10/30
09:44 UTC

81

Zodiac - a Clojure micro web framework

https://github.com/brettatoms/zodiac

Zodiac is a small web framework for Clojure that provides a reasonable set of defaults while also being easily extensible. Zodiac stands on the shoulders of giants rather than being innovative. At its core Zodiac is mostly just a preconfigured Ring app and not more that a few hundred lines of code.

Zodiac tries to fill a similar niche as the Flask framework with defaults that make it quick to start a new Clojure based web app without being heavy-handed.

What Zodiac includes by default:

  • Routing and middleware. We use Reitit
  • Request and response handing with Ring.
  • A jetty server (though Jetty can be turned off)
  • Automatic Hiccup-based HTML rendering using Chassis.
  • Websocket support
  • File streaming
  • Flash messages
  • Cookies and secure session handler
  • Form and JSON parsing request parsing
  • Extensible. Pass a list of functions to extend Zodiac. Override the error handlers.
  • Convenience
    • Helpers to lookup routes
    • Helpers to return hiccup and JSON responses
    • A request context
    • Variables dynamically bound to the current request, router and session

What Zodiac doesn't do:

  • Dictate a file structure with generators or scaffolding.
  • No configuration over code
  • No path based routing, etc.
  • Expect a certain database
  • Asset bundling

And that's about it. Zodiac is mostly feature complete. Additional features like common database setup and asset handling will be done as Zodiac extensions.

9 Comments
2024/10/29
12:40 UTC

37

UIx — Idiomatic ClojureScript interface into modern React v1.2.0-rc3

UIx — Idiomatic ClojureScript interface into modern React, v1.2.0-rc3 is out with a bunch of goodies com.pitch/uix.core {:mvn/version "1.2.0-rc3"}

  • ^:memo tag for defui to create memoized components in-place
  • uix.core/clone-element helper for cloning UIx elements
  • React Hooks with deps are using now Clojure's equality check to detect whether deps were updated (no referential equality bs, finally)
  • set-state in use-state hook behaves like cljs.core/swap! when passing updater function, (set-state update :n inc)
  • New uix.re-frame ns with use-subscribe hook (previsouly implementation was only listed in docs)

If you are using UIx, give it a try and report issues on GitHub

12 Comments
2024/10/29
09:36 UTC

16

Video tutorial of first edition of Clojure Book

0 Comments
2024/10/29
04:24 UTC

19

New Clojurians: Ask Anything - October 28, 2024

Please ask anything and we'll be able to help one another out.

Questions from all levels of experience are welcome, with new users highly encouraged to ask.

Ground Rules:

  • Top level replies should only be questions. Feel free to post as many questions as you'd like and split multiple questions into their own post threads.
  • No toxicity. It can be very difficult to reveal a lack of understanding in programming circles. Never disparage one's choices and do not posture about FP vs. whatever.

If you prefer IRC check out #clojure on libera. If you prefer Slack check out http://clojurians.net

If you didn't get an answer last time, or you'd like more info, feel free to ask again.

5 Comments
2024/10/28
11:01 UTC

20

Do I need Java to write Clojure applications?

Hello everyone,

I'm new to the world of clojure programming. I come from a C++ and Python background. I have started learning Clojure from the book "The Joy of Clojure" because I prefer old school text book like books which explains everything.

However I noticed that it implements a lot of Java interops and does a lot of things like Java (eg Regular expression, AWT stuff, etc).

Do I really need to learn Java to be a better Clojure programmer? Or I can stick to purely Clojure and focus only on it?

11 Comments
2024/10/27
19:31 UTC

34

Building Reddit's r/place in Clojure and Clojurescript - Part 2

0 Comments
2024/10/27
04:18 UTC

26

Scicloj status report: nurturing the Clojure open-source community, 2024-10-25

1 Comment
2024/10/25
13:38 UTC

12

what do you guys use for rate limiting

I found a couple options

curious what people actually use. or do most people custom implement it

13 Comments
2024/10/24
15:43 UTC

9

What one-time purchase software have been built with Clojure?

I know Cursive has a Perpetual License. What other software built with Clojure allows you to buy it once and it indefinately?

2 Comments
2024/10/22
22:46 UTC

Back To Top