Clojure programming language discussion

Fullstack Workflow with shadow-cljs [https://code.thheller.com/blog/shadow-cljs/2024/10/18/fullstack-cljs-workflow-with-shadow-cljs.html](https://code.thheller.com/blog/shadow-cljs/2024/10/18/fullstack-cljs-workflow-with-shadow-cljs.html) A common question is how you’d use shadow-cljs in a fullstack setup with a CLJ backend. In this post I’ll describe the workflow I use for pretty much all my projects, which often have CLJ backends with CLJS frontends. I’ll keep it generic, since... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

3
0

55: Instant: a modern Firebase in Clojure, with Stepan Parunashvili [https://www.therepl.net/episodes/55/](https://www.therepl.net/episodes/55/) Stepan Parunashvili talks about Instant, datalog, building a database in Clojure, and the demands of building modern applications. Instant Datomic Database in the Browser, a spec A Graph-Based Firebase Tonsky (Nikita Prokopov) The Web after... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

3 coin flip Monte Carlo simulation in Clojure [https://clojure-diary.gitlab.io/2024/10/18/3-coin-flip-monte-carlo-simulation-in-clojure.html](https://clojure-diary.gitlab.io/2024/10/18/3-coin-flip-monte-carlo-simulation-in-clojure.html) Code ;; three\_coin\_toss\_montecarlo.clj ;; Montecarlo simulation of 3 coin toss (defn toss-thrice [] (repeatedly 3 #(rand-nth ["H" "T"]))) (defn samples [num] (repeatedly num toss-thrice)) (defn nil-to-zero [x] (if (nil? x) 0 x)) (defn... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

2
0

Problems with the JVM [https://ericnormand.me/article/problems-with-the-jvm](https://ericnormand.me/article/problems-with-the-jvm) The JVM is great but far from perfect. Here are some problems with the JVM that Clojure has to work around. [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

2
0

Half Dumb Datalog in 30 loc [https://buttondown.com/tensegritics-curiosities/archive/half-dumb-datalog-in-30-loc/](https://buttondown.com/tensegritics-curiosities/archive/half-dumb-datalog-in-30-loc/) by cgrand (X 🦣) Today, a follow-up to Writing the Worst Datalog Ever in 26loc, maybe even the start of a series.🍿 Our 26-loc Datalog is naive. Nothing personal, it's a technical term: each iteration in saturate rederives all the facts derived... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Lazy Sequences and Java Streams [https://andreyor.st/posts/2024-10-16-lazy-sequences-and-java-streams/](https://andreyor.st/posts/2024-10-16-lazy-sequences-and-java-streams/) When Clojure 1.12.0 was released in September, the release note had a lot of cool features, such as virtual threads, but one feature caught my eye in particular: support for Java Streams and functional interface support. That was just what I needed... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Datomic as a Higher-Level Database [https://gaiwan.co/blog/datomic-as-a-higher-level-database/](https://gaiwan.co/blog/datomic-as-a-higher-level-database/) More than 20 years ago, when I first began learning programming languages, I read a line in a book:C is a high-level language.But it wasn&apost until years later, during a university class on assembly language, when I had to use jump commands just... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

2
0

Beyond Traditional Testing: Addressing the Challenges of Non-Deterministic Software [https://dev.to/aws/beyond-traditional-testing-addressing-the-challenges-of-non-deterministic-software-583a](https://dev.to/aws/beyond-traditional-testing-addressing-the-challenges-of-non-deterministic-software-583a) Software development of non-deterministic systems have become increasingly common. From distributed systems with untrusted inputs to AI-powered solutions, there is a growing challenge in ensuring reliability and consistency in environments that are... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

How Could Clojure Web Development Suck Less [https://tonitalksdev.com/how-could-clojure-web-development-suck-less](https://tonitalksdev.com/how-could-clojure-web-development-suck-less) In this episode, we dive into the intricacies of web development with Clojure, exploring how it can be improved and made less cumbersome. We also touch on Rama, as Ben brings more expertise in that area. Additionally, we explore Ben career journey,... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Clojure Deref (Oct 11, 2024) [https://clojure.org/news/2024/10/11/deref](https://clojure.org/news/2024/10/11/deref) Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: RSS). Thanks to Anton Fonarev for link aggregation. Podcasts, videos, and media Apropos 2024-09-24 - Apropos Clojure Building Reddit’s... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

jank development update - Moving to LLVM IR [https://jank-lang.org/blog/2024-10-14-llvm-ir](https://jank-lang.org/blog/2024-10-14-llvm-ir) Hi everyone! It&aposs been a few months since the last update and I&aposm excited to outline what&aposs been going on and what&aposs upcoming for jank, the native Clojure dialect. Many thanks to Clojurists Together and my Github sponsors for the... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Clojure Deref (Oct 11, 2024) [https://clojure.org/news/2024/10/11/deref](https://clojure.org/news/2024/10/11/deref) Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: RSS). Thanks to Anton Fonarev for link aggregation. Podcasts, videos, and media Apropos 2024-09-24 - Apropos Clojure Building Reddit’s... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure@lemmy.ml](https://lemmy.ml/c/clojure)

1
0

Eric Normand on Code with Jason [https://ericnormand.me/speaking/code-with-jason-2024](https://ericnormand.me/speaking/code-with-jason-2024) [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

The Wonders of Abstraction [https://ericnormand.me/speaking/eric-normand-heart-of-clojure-2024](https://ericnormand.me/speaking/eric-normand-heart-of-clojure-2024) [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Sai do Barroco, Vem pro meio do Rococó: Um Novo Olhar sobre a Programação Funcional [https://dev.to/andryl\_/sai-do-barroco-vem-pro-meio-do-rococo-um-novo-olhar-sobre-a-programacao-funcional-1an2](https://dev.to/andryl_/sai-do-barroco-vem-pro-meio-do-rococo-um-novo-olhar-sobre-a-programacao-funcional-1an2) Esses dias, estava codificando e escutando essa música, e no meio da música é feita havia a seguinte frase: "Sai do Barroco, vai pro meio do Rococó". Terminei o código e fui participar de algumas reuniões mundanas da vida de um engenheiro de... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

0
0

Writing the Worst Datalog Ever in 26loc [https://buttondown.com/tensegritics-curiosities/archive/writing-the-worst-datalog-ever-in-26loc/](https://buttondown.com/tensegritics-curiosities/archive/writing-the-worst-datalog-ever-in-26loc/) Today to change from heavy interop and frameworks, let's do some light coding exercise and implement the most amateur datalog engine by taking any shortcut we see fit! Don't forget when we're not busy writing silly Datalog implementations, we are... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

3
0

Rama on Clojure’s terms, and the magic of continuation-passing style [https://blog.redplanetlabs.com/2024/10/10/rama-on-clojures-terms-and-the-magic-of-continuation-passing-style/](https://blog.redplanetlabs.com/2024/10/10/rama-on-clojures-terms-and-the-magic-of-continuation-passing-style/) Rama is a platform with huge applicability, able to express all the computation and storage for a backend at any scale. Just like the UNIX philosophy of composing simple programs to do more complex tasks, Rama is based on simple building blocks... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

2
0

Last in Clojure [https://grishaev.me/clojure-last/](https://grishaev.me/clojure-last/) Chat GPT: No, the last function is not particularly expensive for vectors in Clojure. It runs in O(1) time because vectors in Clojure support efficient access to their last element. Meanwhile, Clojure: [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

0
0

Deploying Machine Learning models in a Clojure-first environment [https://building.nubank.com.br/deploying-machine-learning-models-in-a-clojure-first-environment/](https://building.nubank.com.br/deploying-machine-learning-models-in-a-clojure-first-environment/) At Nubank, deploying machine learning models in a production environment built primarily on Clojure presents unique challenges and opportunities. This article explores the key topics around this subject, focusing on the technical aspects of... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

2
0

Removing effects from business logic [https://biffweb.com/p/removing-effects/](https://biffweb.com/p/removing-effects/) This is a thing (state machine? effects-processing pipeline?) I'm trying out to keep effectful code separate from business logic, to make testing easier. It's partially inspired by re-frame's event handling. The idea isn't new, but I'd never... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

3
0

Deed: a fast encoding and decoding library for Clojure [https://grishaev.me/clj-deed/](https://grishaev.me/clj-deed/) Table of Content About Motivation Installation & Requirements Quick Demo API Simple Encode and Decode Encoding to Memory Sequential Encoding and Decoding Low-Level API API Options GZipped... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Clojure: Synchronous server sent events with virtual threads and channels [https://andersmurphy.com/2024/10/07/clojure-synchronous-server-sent-events-with-virtual-threads-and-channels.html](https://andersmurphy.com/2024/10/07/clojure-synchronous-server-sent-events-with-virtual-threads-and-channels.html) [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

RocksDB indexes are done, open-sourcing Yakread next [https://biffweb.com/p/rocksdb-indexes-yakread/](https://biffweb.com/p/rocksdb-indexes-yakread/) Last time on Biff: The Newsletter: I've just barely started to re-implement the entire index feature by using RocksDB directly for the secondary indexes. RocksDB is a mutable KV store, so we can update documents in place without retaining the... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

3
0

Scaling Data Operations: When Spreadsheets and Legacy Systems No Longer Cut It [https://redefine.io/blog/when-spreadsheets-no-longer-cut-it/](https://redefine.io/blog/when-spreadsheets-no-longer-cut-it/) Struggling to scale your data operations with spreadsheets and legacy systems? Learn how modern data platforms provide the scalability, real-time insights, and security businesses need to grow efficiently. Explore the limitations of outdated tools... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

2
0

Clojure Deref (Oct 3, 2024) [https://clojure.org/news/2024/10/03/deref](https://clojure.org/news/2024/10/03/deref) Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: RSS). Thanks to Anton Fonarev for link aggregation. Podcasts, videos, and media Maintainable Clojure code: Visualizing structure and quality... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure@lemmy.ml](https://lemmy.ml/c/clojure)

1
0

Breakout Game in ClojureDart [https://buttondown.com/tensegritics-curiosities/archive/game-tutorial-in-clojuredart/](https://buttondown.com/tensegritics-curiosities/archive/game-tutorial-in-clojuredart/) This issue is about following the Flame’s Brick Breaker tutorial in ClojureDart. This was prompted by Ian Chow (who just released a CLJD app onto the stores) mentioning, en passant, he struggled to port this tutorial. We couldn’t let this slip, so... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0
github.com

I've created a small library that allows to create mock functions. You can record the calls to the function and check arguments with it. It happened to me multiple times that somebody has changed the function that was mocked and it didn't comply with the values returned by mock or the function was called differenty in the code. I recently added a support for instrumentation of mock functions with Malli schemas. If you declare a mock for a function that has Malli function schema, it will instrument the mock. This allows to discover mocks returning invalid values or accepting invalid arguments or the number of arguments. Here's an example: ```clojure (require '[malli.core :as m]) (m/=> my-inc [:=> [:cat :int] :int]) (defn my-inc [x] (inc x)) ;; You have to provide a symbol of function ;; or with or without namespace (aliases are supported). (def my-inc-mock (mock-fn 'my-inc 1)) (my-inc-mock 0) ;=> 1 (my-inc-mock "foo") ;=> An exception ::invalid-input (def my-inc-mock2 (mock-fn 'my-inc nil)) (my-inc-mock2 1) ;=> An exception ::invalid-output ``` This instrumentation works also with a macro for defining mocks. ```clojure (with-mocks [my-inc 2] (my-inc "foo")) ;=> An exception ::invalid-input (with-mocks [my-inc nil] (my-inc 1)) ;=> An exception ::invalid-output ```

3
0

Holy Dev Newsletter September 2024 [https://blog.jakubholy.net/2024/09-newsletter/](https://blog.jakubholy.net/2024/09-newsletter/) Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI have been to Heart of Clojure in... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Functional Programming Languages [https://ericnormand.me/functional-programming-languages](https://ericnormand.me/functional-programming-languages) A list of the functional programming languages you can build a career on and use at work. [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
2

Backwards Game of Life [http://pepijndevos.nl/2024/10/01/backwards-game-of-life.html](http://pepijndevos.nl/2024/10/01/backwards-game-of-life.html) I got a litlte bit nerd sniped by the following video and decided to implement game of life in clojure.core.logic, because any logic program can be evaluated forwards and backwards. Without further ado here is my implementation: (ns... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Migrating terabytes of data instantly (can your ALTER TABLE do this?) [https://blog.redplanetlabs.com/2024/09/30/migrating-terabytes-of-data-instantly-can-your-alter-table-do-this/](https://blog.redplanetlabs.com/2024/09/30/migrating-terabytes-of-data-instantly-can-your-alter-table-do-this/) Every seasoned developer has been there: whether it’s an urgent requirement change from your business leader or a faulty assumption revealing itself after a production deployment, your data needs to change, and fast. Maybe a newly-passed tariff... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

3
0

The Challenge of Data Compliance [https://xtdb.com/blog/2024-09-30-challenge-of-data-compliance](https://xtdb.com/blog/2024-09-30-challenge-of-data-compliance) [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Messages from our Sponsors (including jobs 🏢👨‍💻👩🏽‍💼💻) [https://gaiwan.co/blog/messages-from-our-sponsors-including-job-openings-2/](https://gaiwan.co/blog/messages-from-our-sponsors-including-job-openings-2/) Hope everyone had a wonderful time at Heart of Clojure last week! After the pandemic shutdowns, it&aposs been so hard to find communities meeting in person, so I&aposm proud that we made Heart of Clojure happen for 250+ Clojure and functional... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Generating multiplication tables with Clojure [https://clojure-diary.gitlab.io/2024/09/29/generating-multiplication-tables-with-clojure.html](https://clojure-diary.gitlab.io/2024/09/29/generating-multiplication-tables-with-clojure.html) Code (defn single-line [number multiplicant] (str number " X " multiplicant " = " (\* number multiplicant))) ;; (def num 5) ;; (println ;; (clojure.string/join "\\n" ;; (map single-line (repeat 10 5) (range 1... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure](https://lemmy.ml/c/clojure)

1
0

Clojure Deref (Sept 26, 2024) [https://clojure.org/news/2024/09/26/deref](https://clojure.org/news/2024/09/26/deref) Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: RSS). Thanks to Anton Fonarev for link aggregation. Podcasts, videos, and media Apropos 2024-09-24 - Apropos Clojure Did you know CoPilot... [\#clojure](https://clj.social/tags/clojure) [#clj](https://clj.social/tags/clj) [#cljs](https://clj.social/tags/cljs) !clojure@lemmy.ml [@clojure@lemmy.ml](https://lemmy.ml/c/clojure)

1
0