I’ve been heads down researching and prototyping. Much of that work was deciding on the tech I’m going to build with.
There were a few main criteria I’m using:
- I’m building by myself, so any options that can take work off my shoulders are worth considering. Anything that requires (or promotes) lots of tinkering is a nonstarter.
- My goal is to build something that lasts. I don’t want to make a choice that makes today easy but the foreseeable future hard.
- This is my time, so I also want to use tools I enjoy.
There wasn’t much doubt that I’d build with Clojure. It’s been my main language for many years now. It’s productive and enjoyable to work with.
I worked with Datomic On-Prem several years ago. It was a great experience, and reading up on Datomic Cloud made me think it was an even better choice for me now. Ions especially promise to take care of lots of DevOps type work. This quote is very much what I’m looking for:
With ions, Datomic can host your entire application, minimizing the surface area of AWS that you have to manage.
Datomic requires minimal administration after setup. Administrative tasks are performed in CloudFormation, never by logging in to EC2 instances.
The Datomic community is relatively small, so there is some risk that I’ll run into problems and have difficulty finding help. But the docs are good and the Clojure Slack channel is active, so I’m not too worried. And after my experience with Clojure and Datomic On-Prem, I’m confident that the Rich Hickey (creator of Clojure and Datomic) et al have designed things in a sustainable way.
UIs can be a huge time sink. Doing a native app would require options I’m not excited about or familiar with: something like Java Swing or Electron. Java UI tools have a reputation for being unsatisfactory. Electron had a lot more tinkering required than I want last time I used it. And if I’m going to use web tech anyway, it would make more sense for me to stay where I’m comfortable and build in the browser.
I love ClojureScript, but I doubt building a significant UI is a wise choice at this time (or maybe ever). Because I’m looking for something very simple, I’ve decided on htmx. Besides some basic form validation and maybe interactive charts, I’d love to limit the front-end code I need to write. Once I have a useful data model, it will be relatively easy to build a more complicated front-end on top of that, should I choose to.
There are a few more choices I need to make, but, for now, the above is enough to work with.