Starting last January I am taking about a two year break from consulting work to work on several of my own projects.
My first project (my AI recipe/cooking coach web site cookingspace.com) is close to being full featured. This is what a friend of mine calls a “passion project.” This web app performs a lot of server side processing. Users need to keep all of the food/ingredients in their kitchen up to date with the web app, and the AI coach will modify recipes to use the ingredients you have on hand. So, a lot of server side computation but rendering simple HTML pages is all the UI the app needs. Everything is written in Clojure + Compojure + Hiccup: a solid and easy to use stack.
My next project requires a rich client. I have been going a little nuts the last few weeks experimenting with web stacks I have (mostly) experimented with in the past, trying to decide what is right for my next project. I have (re)looked at:
- Mostly plain HTML with bits of Clojurescript
- Clojure with pjax (which I wrote about last year)
- Node.js with Ember.js
- Clojure with Ember.js
- Clojurescript with webfui (interesting, and I would like to hear from anyone using it on a large project)
- Java GWT
- Rails 4 with Ember.js
So, lots of experimenting with Ember.js but it may not be for my temperament: I like to really understand how libraries and frameworks work. I think that Ember.js needs to be your personal religion to use it effectively. I would like to give Pedestal a chance but without insider knowledge of Pedestal or a lot of time, I don’t think that Pedestal is a good choice for me right now.
I should probably do my new project in Java and GWT (I have tons of experience with GWT + SmartGWT) but I just don’t feel like using Java. Nothing wrong with Java and GWT is a good solid framework, but I just don’t feel like using it anymore.
I think I will end up using a fairly low-tech approach that has worked well for me in the past on a project where I used The Dojo UI framework with a Java backend. I implemented almost the entire app with plain old HTML + forms and when I was done I went back and used AJAX where needed to eliminate the most annoying page reloads. For my next project this probably means initially rendering static HTML with Hiccup and when I like the functionality then going back and reworking with Clojurescript (with Closure’s XhrIo) AJAX calls as required. I might end up wasting time doing the project in these two phases, but it will let me get something to experiment with faster.