The power of the :deps alias
Updated 2025-10-18, for Clojure CLI 1.12.2.1571, which added the ability to
prepa tool.
Updated 2025-08-14 for Clojure CLI 1.12.1.1561, which added thebasisfunction.
Most of us who use the Clojure CLI are familiar with the -M (main), -X
(exec), and -T (tool) options, and may have used clojure -X:deps tree at
some point to figure out version conflicts in our dependencies. The :deps
alias can do a lot more, so let's take a look!
Migrating to LazyTest
I've been using the Expectations
testing library since early 2019 -- over six years. I love the expressiveness of
it, compared to clojure.test, and it exists because "Classic Expectations"
was not compatible with clojure.test tooling. At work, our tests use a
mixture of clojure.test and Expectations, but in my open source projects,
I've mostly stuck with clojure.test for familiarity's sake for contributors.
Being compatible with clojure.test comes at a price, though. Expectations
uses macros to produce clojure.test-compatible code under the hood, so it
is limited by the same reporting as clojure.test and the same potential
problems with tooling that tries to override parts of clojure.test's
behavior -- namely that multiple tools do not play well together, so I've
had to avoid "improving" the expressiveness or reporting in ways that would
break compatibility with that tooling.
Clojure/conj 2024
After last year's regular posts about my Clojurists Together-funded work on clojure-doc.org and other projects, and the end of my monorepo/polylith series, I've mostly taken a break from blogging -- and from my open source work, to be honest. I've been focusing on my day job and on some personal stuff.
I attended Clojure/conj 2024 last month and wanted to write about the event and the talks I attended. It's been eleven years since Conj was last at the George Washington Masonic Memorial in Alexandria, and I'd forgotten what a climb it is, up that hill! My watch says I got over 9,000 steps each day going back and forth from the hotel to the venue.
Continue reading →Long-Term Funding, Update #6
In my previous Long-Term Funding update I said I would review and update of the "cookbooks" section and make another pass of "TBD" items in the "language" section.
Continue reading →Long-Term Funding, Update #5
In my previous Long-Term Funding update I said I would review/overhaul the "ecosystem" and "tutorials" sections (once I'd finished the "language" section).
Continue reading →Long-Term Funding, Update #4
In my previous Long-Term Funding update I said I would review/overhaul the "ecosystem" and "tutorials" sections.
Continue reading →deps.edn and monorepos XI (Polylith)
This is part of an ongoing series of blog posts about our ever-evolving use of the Clojure CLI,
deps.edn, and Polylith, with our monorepo at
World Singles Networks.
Long-Term Funding, Update #3
In my previous Long-Term Funding update
I said I would review/overhaul the Libraries pages (both authoring and the directory)
and write the tools.build cookbook.
The library authoring guide
has been rewritten to use the Clojure CLI, deps-new, and deps-deploy and
was well-received by the community, who provided some useful feedback that I
have also incorporated into the guide.
The information from the library directory has been integrated into
The Clojure Toolbox
via a couple of Pull Requests that
added optional tool-tip descriptions
and libraries that were on clojure-doc
but missing from the Toolbox. Thanks to James Reeves for accepting those PRs!
What else did I get done?
Continue reading →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?
Continue reading →Calva, Joyride, and Portal
Back in December, 2022, I described my original Calva, Joyride, and Portal setup.
I've been very happy with it all but, of course, I continue to tweak and update
my development environment and my projects, and now that
Clojure 1.12.0 Alpha 2 is available
with add-libs-style functionality built-in, I've updated various projects
and my dot-clojure
and vscode-calva-setup
GitHub repos to take advantage of that, so I figured an updated version of that post
was warranted.
My development environment is VS Code, running on Windows, with all my Clojure-related files and processes running on WSL2 (Ubuntu). I use Calva, Portal, and Joyride to enhance and automate my day-to-day work.
Continue reading →