I’ve been trying to use linux for pretty much as long as I’ve had a computer. I’d kept running into blocks though: at first I was using my computer mostly for gaming, and that’s still not a strong suite for linux 20 years later. Then my workflows were dependent on tools that only worked on Windows (like Office’s Publisher, or Dreamweaver and Fireworks—hell I still miss the productivity I had with Fireworks). Then I had a laptop half of whose hardware wasn’t supported by any linux distro at that point. Then gradually those issues went away and I’ve been an Ubuntu main for over ten years now. Some linux elitists will look at my desktop and hiss that it’s not just a terminal or a tiled window manager that looks like it’s still 1995.

Similarly with editors. I’d mainly used Atom and I’m still not happy about having to switch to VS Code. In the terminal I prefer to use Nano when it’s available, though I do know how to operate (and exit) Vi/m if it comes to that. I’ve tried Emacs a few times because of how huge it is in lisp communities, but to me it felt even more arcane than Vim.

And with a stretch it’s similar using state management in Clojure as well. In my case “state management” is restricted to “starting resources that might not be available statically,” such as starting databases or loading environment-specific configuration. I’ve been using mostly Mount for this purpose, but today I saw an Opinion on a website that it promotes the use of “global state” and that’s bad. They suggested using Integrant instead, so I went to look and I was blown away by its overwhelming complexity. In the projects I’ve worked on so far, there were two kinds of tests: unit tests for “pure” business logic and integration tests where stuff is tested end-to-end. I think what I use Mount for it’s simply not worth Integrant’s complexity.