April 30, 2023

Long-Term Funding, Update #2

In my previous Long-Term Funding update I said that I planned "to review and/or overhaul the Getting Started, Introduction, and Web Development sections, with a focus on the latter." (of the clojure-doc.org website).

I mostly achieved that goal but didn't get to the additional goal I set of writing a tools.build cookbook. I have sketched out the topics I hope to cover in that cookbook, however.

How did the past two months go?


I updated Getting Started with Clojure to talk about both Leiningen and the Clojure CLI and wrote a new Getting Started with the Clojure CLI page that also covers tools.build / build.clj and building uberjars. Both pages now have a new section highlighting Interactive Development (as opposed to "just" using a REPL).

I reviewed the Introduction to Clojure and decided it was mostly sound, but added more examples, tweaked the formatting, and added references to the Clojure CLI.

I reworked John Gabriele's excellent Basic Web Development guide to use the Clojure CLI, updated all the library references, and reordered the sections to work bottom-up so that code could always be evaluated in the REPL.

I didn't get as far as I wanted with the tools.build cookbook due to a combination of writer's block (and stress over my mother being taken to hospital unexpectedly for a fractured hip -- she's nearly 90, has osteoporosis, and her oxygen levels are too low/precarious for surgery at this point; she's home now but it's been a rough few weeks).


As the Practical.li project templates were being developed, John found a bug in the template project which I fixed and in turn I reviewed drafts of his article about creating project templates using deps.new, both of which are now linked from the deps-new README and documentation.


During March/April, HoneySQL saw four new releases, which were mostly an even split between improving documentation and expanding ANSI SQL support.

Many of the questions I see about HoneySQL on Slack (and other places) suggest deficiencies in the documentation so, while I try to answer those questions directly on Slack, I also tend to create GitHub issues for them to see if I can improve the documentation in those areas.

Some of the ANSI SQL improvements including support for INTERVAL, keyword arguments in function calls, nested JOIN, standardizing TRUNCATE syntax, and WITH ORDINALITY. There were also bug fixes and documentation improvements around DO UPDATE SET and a number of other constructs.

I'd also like to give a special shout out to Eugene Pakhomov who contributed three pull requests to the release that went out in early March.


next.jdbc also saw four releases, which provided a mix of bug fixes, compatibility improvements (with clojure.java.jdbc, to ease migration), documentation improvements, and a few enhancements.


The Juxt team were present in force at Clojure/conj this year and announced early access to XTDB 2.0.

I think this will be a very exciting release, with improved bitemporality (including temporal joins and range scans), a new columnar architecture, and -- the part that interests me the most -- a dynamic relation engine that provides both a Datalog API and a SQL API.

That inspired me to create a new project, offering experimental support for XTDB 2.0 in next.jdbc: next.jdbc.xt. This allows you to treat an XTDB client "node" as a "connectable" so you can call execute!, execute-one!, and plan on it (as well as the full range of "friendly SQL functions").

As XTDB 2.0 evolves, I plan to continue to enhance this new project to hopefully support batch operations and perhaps full transaction support, if possible.

What's Next?

In May/June, I hope to get the tools.build cookbook written and to review/overhaul the Libraries pages (both authoring and the directory).

Tags: clojure community jdbc honeysql clojurists together clojure-doc.org open source