A weekly newsletter and podcast diving into Clojure programs and libraries by Daniel Compton.
Thanks to everybody who has contacted me about jobs or sent through tips on people that are hiring. I’ve had a lot of great conversations with people, one thing that’s been neat to see is how widely Clojure is being used across so many different industries.
Dustin Getz wrote an article describing the Hyperfiddle stack. Being able to seamlessly colocate client and server code will be extremely powerful, I’m looking forward to Photon being open sourced.
Jacek Schae interviewed Michiel Borkent about his recent move to working full-time on open source development.
Ben Sless refactored a slow Clojure implementation to various versions which are still idiomatic without sacrificing performance, and then finally a loop/recur form for when you need maximum performance. There’s also some neat custom transducers.
If you need a refresher on transducers before reading Ben Sless’s versions, this is a good article from Eero Helenius to develop an intuition for them.
Ben Sless also did some benchmarking on Clojure web servers, JVM garbage collectors, and routing frameworks. It’s also a good overview also of how to think about scaling web servers, and building a mental model of how they fail. You can pair it with Zach Tellman’s talk Everything Must Flow from a few years ago.
And on the frontend, Lucio D’Alessandro shows how to benchmark ClojureScript webapps and a bunch of optimisations you can use at different levels of your application.
Paula Gearon spoke at the recent Strange Loop conference about Asami, an open source Datomic-like graph database that she’s built.
Read the latest updates from a bunch of Clojurists Together funded projects including clojure-lsp, polylith, Holy Lambda, and Typed Clojure.
Sean Corfield continues his series on monorepos, polylith, and developer workflow using Portal for VSCode to navigate through data.
coffi is a new library for doing FFI (Foreign Function Interface) calls from Clojure to native code. Very cool and looks like it should be easier than other existing methods.
Rich Comment Forms are a new tool from the Hyperfiddle team for writing tests inline with your Clojure/ClojureScript source. They’ve put a lot of work on the developer experience for the tool, it looks useful for pairing and REPL driven development.
Congratulations to Walmart Lab’s Lacinia reaching the 1.0 milestone!
salutem is a new health check library for sync / async health checks. This has clearly had a lot of thought and documentation put into it. The async health-checking in particular looks very useful.
Daniel Gregoire makes the case for having a meta
folder along with src
and test
, and introduces metazoa, a library for inspecting and querying metadata. There’s also a video which discusses the motivations and use of the library more.
The Amazon Corretto JDK team gave a talk about why they built Corretto and talked more about the Shenandoah GC.
clojure-lsp has had a bunch of releases recently with improvements. I’m happy to see all the progress, it’s going to have a big impact on lots of Clojure users.
Neil is a new CLI to add common aliases and features to your deps.edn-based projects.
Martin Kavalar recently released a preview and rationale for Clerk, a tool for converting a Clojure namespace into a notebook style interface. Avoiding out-of-order execution in particular looks like a very useful feature.
clojuby is an interesting experimental project letting you use JRuby to talk to Ruby functions in a Clojure syntax, for example creating a Sinatra app from Clojure.
GitHub isn’t directly a Clojure tool, but I find myself often enabling “Hide white space” when reviewing Clojure PRs. You can now set this permanently, rather than having to enable it on each PR you viewed. One downside to watch out for is that you might miss unintentional white space diffs.
Nikita Prokopov explored the existing Clojure REPLs and Sublime Plugins for Clojure, how they work, and their pros and cons.
Bozhidar Batsov has an update on the projects he’s been working on lately including the CIDER family.
There’s work underway to create a new clojure.java.math
namespace which is easier to access from Clojure than java.lang.Math but with the same level of performance. The patch is an interesting read to see heavy use of inlining.
Previously you could assume goog.object
and goog.array
were always available for use in your ClojureScript files without requiring them. However, if I’m reading the patch and discussion correctly, the new approach will be to always require any goog.*
namespace that you’re using.
No changes needed yet, but I’d start to look out for this. It sounds like clj-kondo will be able to lint for it which will make updating your code a lot easier.
Daniel Slutsky has this month’s scicloj post where people talk about what they’re working on in the Clojure data science community. I’ve been impressed by scicloj and their consistent efforts to improve the Clojure data science ecosystem. They’re also looking to run workshops for the upcoming re:Clojure conference.
Dmitri Sotnikov was recently on the RH podcast talking his work introducing Clojure at SIM University Health Network.
Tim Zöller uses Babashka and AppleScript to query the Apple Photos photo database.
I’m Daniel Compton. I maintain public Maven repositories at Clojars, private ones at Deps, and help fund OSS Clojure projects (along with tons of generous members like Latacora, Roam, Whimsical, Stylitics Pitch, Nubank, Cisco, AppsFlyer, JUXT, Metosin, Solita, Adgoji, Nextjournal, Flexiana, Toyokumo, Griffin, Parkside, and Doctronic) at Clojurists Together. If you’ve enjoyed reading this, tell your friends to sign up at therepl.net, or post a link in your company chatroom. If you’ve seen (or published) a blog post, library, or anything else Clojure/JVM related please reply to this to let me know about it.
If you’d like to support the work that I’m doing, consider signing up for a trial of Deps, a private, hosted, Maven Repository service that I run.
Thanks!