A weekly newsletter and podcast diving into Clojure programs and libraries by Daniel Compton.
Recently, I’ve been working on a new office and have finished painting and flooring. I still have a few things left to do: painting and installing the skirting, getting a heat pump installed, wiring up ethernet, and installing acoustic panels to reduce echo.
I’m also looking for my next job. I recently left my job at GitHub as a Technical Program Manager to move back to writing software. I learned a lot of valuable things at GitHub including that my true passion lies in writing software. If you know of any companies that are hiring and open to New Zealand based employees/contractors, let me know. Thanks!
Lastly, a housekeeping note that there is now an RSS feed available for The REPL newsletter, you can find it at https://www.therepl.net/subscribe/.
Nikita Prokopov talks to Adrian Smith about Membrane and UI frameworks.
The Brave Clojure jobs board has been relaunched and now includes free listings, and import from other sites. You can still pay to promote your listing (you should pay though!). I’ve found the new site very helpful.
In more job related news, congratulation to Michiel Borkent for going full time on his open source Clojure projects! He’s created an amazing variety of projects already while working a full-time job, I can’t wait to see what comes next. I’m happy Clojurists Together was able to help, along with many other generous companies and developers. If you want to support him, you can do so using GitHub Sponsors
I talked with Paulus Esterhazy about how Pitch ships code.
I also talked with Chris Houser about Clojure pre-history, features of Clojure and how Clojure’s principles can be applied elsewhere.
And I also talked with Erik Assum about how he sped up JSON parsing in clojure.data.json, clj-commons, and he interviewed me about what I’ve been up to recently.
The re:Clojure CFP is closing on 10th of October. This is the last Clojure conference of 2021, so if you have a talk idea, now’s the time to submit it.
Nikita Prokopov outlines ideas for a new Clojure framework for desktop apps. This work is funded by Roam Research and Clojurists Together.
Roman Liutikov and Nikita Prokopov are looking for a new maintainer for Rum.
OpenJDK 17 was released recently, and you can download a copy from https://adoptium.net. I haven’t heard of too many issues with upgrading, but let me know if you see any.
Good analysis comparing JDK 17 to JDK 11 and JDK 16. There’s a nice (but small) performance boost on their very CPU heavy code. I wouldn’t necessarily expect as big a speed up on most code, but it’s still worth upgrading for.
Graal’s native-image
is deprecating the --initialize-at-build-time
flag. This was commonly used in Clojure builds, graal-build-time provides an alternative build method so you don’t need to list each package manually.
The AOT compiler was removed from the main JDK distribution due to low usage, but it remains part of GraalVM. Don’t miss this clarification from the GraalVM lead that AOT native image is still going to be developed in Graal, this only affects the hybrid HotSpot/AOT approach which few used.
api-diff can print a list of API diffs between library versions. Another useful tool from Michiel Borkent.
Nubank switched from End-to-End testing to Contract and Acceptance testing to speed up their CI time. They show how it reduced cycle time and increased their deploys/week metric. Slow/flaky CI is a common problem at larger companies, it was good to see this shown as one possible solution.
A good guide to building native-image Clojure apps, especially when you’re using Clojure libraries with dynamic class loading. It also shows startup time going from 6 seconds to ~1 millisecond!
Ella Hoeppner has released Vlojure, a very unique visual programming environment for Clojure. Check out the demo video too.
Cursive 1.11.0 is out with support for Babashka, better support for spellchecking, and some tools.deps fixes.
In early September, Travis CI had a security incident which leaked secure env vars. If you’re using Travis CI, it’s a good idea to cycle all of your credentials.
CIDER can now upgrade an nREPL connection to one with CIDER’s middleware. This lets you jack in to a running nREPL session and get all of CIDER’s features.
A nice patch from Marc O’Morain to improve error messages when you call keyword
with the wrong number of arguments.
Dainius Jocas explains when you’d want to use unsynchronized-mutable
and volatile-mutable
in a deftype
.
Let Arne Brasseur take you through setting up a basic Clojure web backend.
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, Pitch, Nubank, Cisco, AppsFlyer, JUXT, Metosin, Solita, Adgoji, Nextjournal, Flexiana, Toyokumo, Griffin, and Parkside) 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!