Skip to content

Hello darkness my old friend

It is getting noticeably darker now, before I finish 'working' on Practicalli content and other computer things.

At the end of last week I contributed questions to the next Clojure Survey, which I assume will be out in early January 2026. I also shared some thoughts about why this information was useful to capture.

Earlier this week I ran through the draft survey and provided feedback directly to Christoph. It was mostly nitpicks (I used 🌐 conventional comments style for the feedback).

Getting close to a total of 6,000 km in distance for 2025. Only 146 km to ride and I've hit my target.

NOTE: the title is taken from the song "Sound of Silence" by "Simon and Garfunkel"

Clojure communityλ︎

Christoph Neumann is working on questions for the Clojure Survey for 2026 and wanted feedback on Emacs.

I suggested additional questions based on my own interests (versions and how things are installed).

I posted a full list of questions that they could choose from in what I believed to be a useful structure.

The questions would only be shown if a person selected "Emacs" as their primary editor.

Emacs specific questions
## Emacs

Which Emacs Version do you currently use
- 29.x
- 30.x
- 31.0 (from nightly/git)
- something else

Which Emacs distribution do you currently use
- Build from source code
- Emacs Plus
- Homebrew
- Operating System package (Debian, Arch, Nix, etc.)
- something else

Emacs configuration
- LambdaIsland Corgi
- Doom
- Prelude
- Roll my own
- Spacemacs
- something else

Which Clojure language modes do you currently use
- clojure-mode (CIDER)
- clojure-ts-mode (new Treesitter mode)
- inf-clojure-mode

Which Clojure REPL package do you currently use
- CIDER
- inf-clojure
- Monroe (nrepl client)
- Rail
- something else

Which Language Server Protocol Client do you currently use
- lsp-mode
- eglot (Emacs built-in)
- something else

Which Structural Editing packages do you currently use
- lispy
- paredit
- parinfer
- smartparens
- vim-style editing
- something else

Which packages for LLM/AI tools do you currently use
- ECA (Editor Code Editor)
- something else

I though I may as well create similar questions for Neovim and Vim, so I posted some suggestions in the #vim channel of the Clojurians Slack community.

Neovim / Vim specific questions
## Neovim/Vim

Neovim Distribution
- Nvim AppImage (GitHub release)
- Nvim from source code
- Vim website download
- Vim from source code
- Operating System package (Debian, Arch, Nix, etc.)

Neovim/Vim version currently used
- Nvim development (pre-release)
- Nvim 11.x
- Nvim 10.x
- Vim 9.x
- Vim 8.x
- something else

Neovim configuration
- AstroNvim
- LazyVim
- Kickstart
- Roll my own vim-script
- Roll my own Lua
- Roll my own Fennel (nfnl)
- something else

Which Clojure REPL plugin do you currently use
- Conjure
- elin
- vim-fireplace
- vim-iced
- vim-slime
- something else

Which Language Server Protocol Client do you currently use
- Nvim built-in
- nvim-lspconf
- something else

Which Structural Editing plugins do you currently use
- nvim-paredit
- nvim-parinfer
- parpar-nvim (paredit & parnifer)
- vim-style editing
- something else

Which packages for LLM/AI tools do you currently use
- ECA (Editor Code Editor)
- Codeium
- Codex
- Copilot
- something else

Why is this information useful?λ︎

Christoph was curious as to why I though this collecting all this information was useful for the Clojure community, so I shared these thoughts with them.

time is the enemy of allλ︎

One of the lessons I learned about Developer Relations (DevRel) is that you'll never have enough time to do everything you want to do, so you have to pick your battles (and delegate like crazy).

One of the reasons I invested so much time in Practicalli Spacemacs (my most comprehensive book to date) is that I knew most people were using Emacs for Clojure development.

I didn't know what versions of Emacs were used, so I made a lot of assumptions and added caveat's that certain versions were required. I didn't know how many people I would be excluding with this approach.

From the data publicly available on the Spacemacs GitHub repository, I could see it was a highly used option, so I had confidence that I was adding a lot of value to a wide audience.

Although the Spacemacs.org docs were detailed in terms of configuration, guides on using all the plugins was harder to find/understand or none existent. So I knew I could also add value back to the wider Spacemacs community.

You cant analyse what you don't haveλ︎

You never know what information you will need in the future.

For longer term analysis it is useful to over-collect data as its impossible to retrospectively collect it.

Its better to have information and not need it than need information and not have it.

Using data to shape communicationsλ︎

When creating any guides there are many assumptions taken about what tools and versions of tools are being used.

Tools are continue to evolve, even long standing tools like emacs & vim.

Understanding what versions of tools and configurations they are using allows guides to be simplified and amount of work reduced, whist still providing a large amount of value to the community.

More relevant recommendations can be made to the community when the distinct choices made by them are known.

Examples of major tool changesλ︎

Emacs is undertaking a major shift to treesitter based plugins which greatly improve language parsing performance. this move is something that neovim has been doing for the last few years.

Treesitter is fairly stable, but occasionally there have been a few breaking changes.

Tools have been including treesitter directly in certain releases.

The Practicalli Neovim book has been completely rewritten 3 times as I grew to understand what people were using and what a modern Clojure environment (and supporting tools) should look like.

Building on community configurationsλ︎

Using a community configuration saved a huge amount of work, so it was valuable to understand what people are using.

Spacemacs was by far the most 'stared' repository for Emacs configurations. I am unsure if I helped people into Spacemacs or that choice had already been made and the Practicalli content was an added bonus.

At the time the Spacemacs community configuration was my preferred choice for Emacs (mainly due to the mnemonic key bindings making it really easy to use), so I spend time ensuring the user experience of Clojure development was a good as possible.

I could see from the doom Emacs GitHub repository that it was starting to grow in interest, but no information about the use in the Clojure community was available (apart from chat in #doom-linux).

There were many passionate advocates for doom linux, but I did not know if there was a need for a specific Practicalli Doom Linux book. I made the assumption that the community would simply help itself out by sharing opinions on Clojurians Slack.

As I personally didn't find value in using Doom Emacs over my existing Spacemacs workflow, I took another direction and worked on Practicalli Neovim.

When trying to adopt Neovim, the lessons learned about building on other peoples existing work and experience was quickly reinforced 😆. I did start by building my own config (using Fennel) and it was a useful learning experience (and I had time available for learning).

Eventually Neovim provided NVIM_APPNAME environment variable as a simple way to isolate the use of different configurations. This made it trivial to try out different community configurations and I soon found a base configuration that would make my use of Neovim very productive (Note: I selected AstroNvim community configuration as my base config).

Note: there are many blogs about building your own Emacs or Vim config. Many of these are now very dated (including the Emacs guide in "Clojure for the Brave and the True" book).


Thank you.

🌐 Practical.li Website

Practical.li GitHub Org practicalli-johnny profile

@practicalli@clj.social @practical_li