A weekly newsletter and podcast diving into Clojure programs and libraries by Daniel Compton.

102: Transducers, servers, and comments

Saturday, 23 October 2021

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.

-main

Reactive Clojure: You don’t need a web framework, you need a web language

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.

notion.site


Michiel Borkent on the ClojureScript Podcast

Jacek Schae interviewed Michiel Borkent about his recent move to working full-time on open source development.

clojurescriptpodcast.com


Fast and Elegant Clojure

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.

github.io


Grokking Clojure 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.

solita.fi


Stressed Servers

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.

github.io


Speed up your ClojureScript Webapp

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.

juxt.pro


Asami: Turn your JSON into a Graph in 2 Lines

Paula Gearon spoke at the recent Strange Loop conference about Asami, an open source Datomic-like graph database that she’s built.

youtube.com


Clojurists Together September 2021 Monthly Update

Read the latest updates from a bunch of Clojurists Together funded projects including clojure-lsp, polylith, Holy Lambda, and Typed Clojure.

clojuriststogether.org


An Architect’s View: deps.edn and monorepos VII (Polylith)

Sean Corfield continues his series on monorepos, polylith, and developer workflow using Portal for VSCode to navigate through data.

corfield.org

Libraries & Books.

coffi

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.

github.com


Rich Comment Forms

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.

github.com


Lacinia reaches 1.0

Congratulations to Walmart Lab’s Lacinia reaching the 1.0 milestone!

github.com


salutem

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.

github.com


Clojure src, test, and meta

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.

danielgregoire.dev

Foundations.

Amazon Corretto, A Journey into Latency Reduction

The Amazon Corretto JDK team gave a talk about why they built Corretto and talked more about the Shenandoah GC.

youtube.com

Tools.

clojure-lsp releases

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.

github.com


babashka/neil

Neil is a new CLI to add common aliases and features to your deps.edn-based projects.

github.com


A preview of Clerk

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.

twitter.com


clojuby

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.

gitlab.com


Hiding whitespace is now remembered for each pull request | GitHub Changelog

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.

github.blog


Clojure REPLs Deep Dive - YouTube

Nikita Prokopov explored the existing Clojure REPLs and Sublime Plugins for Clojure, how they work, and their pros and cons.

youtube.com


Meta Reduce 2021.2: Autumn Begins

Bozhidar Batsov has an update on the projects he’s been working on lately including the CIDER family.

metaredux.com

Recent Developments.

[CLJ-2664] Provide fast idiomatic access to java.lang.Math

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.

atlassian.net


CLJS-3330: Flag for legacy loading of goog.object & goog.array

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.

github.com

Learning.

October 2020 Plans & Hopes for Clojure Data Science

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.

clojureverse.org


Dmitri Sotnikov - Engineering for Scale in Clojure

Dmitri Sotnikov was recently on the RH podcast talking his work introducing Clojure at SIM University Health Network.

anchor.fm


Finding my inner Wes Anderson with Babashka

Tim Zöller uses Babashka and AppleScript to query the Apple Photos photo database.

javahippie.net

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 LatacoraRoamWhimsicalStylitics PitchNubankCiscoAppsFlyerJUXTMetosinSolitaAdgojiNextjournalFlexianaToyokumoGriffinParkside, 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!