My AI Usage Statement
Lately, on the Clojurians Slack, there have been a number of discussions about how people are evaluating projects that have been created with the assistance of AI tools (LLMs). Some people have very strong opinions and won't use projects that have any level of AI involvement, while others might only avoid "AI slop" / "vibe-coded" projects. The common thread is that people who have concerns about AI want maintainers to be transparent about their use of AI tools in creating their projects.
I use VS Code for all my development work. My employer provides a license for GitHub Copilot, and VS Code is set up to use that for my various work projects. Mostly, I lean on it when working with frontend and mobile projects, where I have less experience and need more help navigating the APIs and ecosystem.
Continue reading →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 →