Clojure’s core.async library is simply an amazing piece of software to use. It’s also not necessarily the easiest thing to wrap your brain around when you first encounter it. This talk from ClojureConj’13, by Timothy Baldridge, was a very useful treatment of the subject. Timothy is one of the main authors of the library, so he certainly understands the subject well. His file full of examples is also valuable to review, both while watching his talk as well as for future reference.
In my talk at ClojureConj ’13, I encouraged those in attendance who had not used the Immutant application server for Clojure to take the time to become familiar. During the Q&A following my talk, Rich Hickey asked the question that is the title of this post, “What do you like about Immutant?” I believe that Rich’s intent was to offer up a softball, but I felt I’d clearly whiffed with my response, so I’m here to take another run at the question.
Immutant has a number of advantages going for it, providing a Clojure wrapper over core JBoss AS services:
- HornetQ message queue with a native Clojure API. Set up queues to facilitate loose coupling of application components.
- Support for running daemon tasks within your application. Specify a function in your Clojure application to be executed as a background daemon task.
- Scheduling. Use either cron- or at-style scheduling to have a function execute at regular intervals.
- Built-in clustering support.
- Caching. Use Infinispan to back your application’s cache.
- Web/HTTP daemon. Whether you’re using Ring or even Pedestal, Immutant has you covered for deploying your application.
Those things are all great, but the goodness doesn’t end there. You’re almost certainly using Leiningen, and with the lein-immutant plugin, you’ll find that Immutant is simple to install and manage. And Immutant allows you to connect to your running application using nrepl, so you can interact with your application at runtime.
So I’ll say it once again: If you are not using Immutant to host Clojure applications on your server and can’t articulate a specific reason, you really do owe it to yourself to take a look at the fine work done by the Immutant team.
The video from my talk at ClojureConj 2013 has been posted. You can view it here. It was a mildly terrifying experience getting up to speak in front of the ~450 in attendance, but I'm truly glad I did it. The next opportunity to speak to a meeting … [Continue reading]
This world lost quite a man this week. Col. Robert L. Johnston (Ret.) was a strong, brave, and wonderful man. He loved his God, his bride, his family, his church and his friends both well and deeply. His kindness was extended to many, including … [Continue reading]
That's the registration confirmation heading when you register for Clojure/conj. By far the best part of being chosen to present a talk at the Conj is knowing that I'll have the opportunity to take in all the other talks, and to interact with the … [Continue reading]
I was surprised and thrilled to learn on Monday that one of the talks I submitted for ClojureConj 2013 has been selected for the conference program. The short version is that my talk covers the migration of a project I've been working on over the … [Continue reading]
I've changed testing libraries for my Clojure code. When I first started writing tests for Clojure code, I settled on expectations, which was written by Jay Fields. The syntax and structure seemed natural enough, and I was a content with my … [Continue reading]
I have been using the Noir web application framework some recently, and had not identified a more permanent way to run Noir apps in production than simply java -jar my_app.jar After some investigation in recent weeks (along with co-workers), and … [Continue reading]
I recently returned from ClojureConj 2012. The Conj is three days in a conference room with very smart people, becoming more convinced by the hour that you are, for a fact, the dumbest guy in the room. And it's great! The conference was fantastic, … [Continue reading]