My AI Usage Statement

August 2, 2026

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

August 8, 2025

Updated 2025-10-18, for Clojure CLI 1.12.2.1571, which added the ability to prep a tool.
Updated 2025-08-14 for Clojure CLI 1.12.1.1561, which added the basis function.

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!

Continue reading →

Migrating to LazyTest

March 12, 2025

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.

Continue reading →

Clojure/conj 2024

November 9, 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

December 25, 2023

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

October 28, 2023

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

August 30, 2023

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)

July 15, 2023

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.

Continue reading →

Long-Term Funding, Update #3

June 29, 2023

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

April 30, 2023

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 →