Here’s a hack for getting better output when
test.check tests run via
clojure.test throw exceptions, thanks to Dominic Monroe.
Aero & Integrant are two fantastic Clojure libraries used to configure applications. However, I think that there are issues with the way they often get used; today I’m going to look at how they’re actually used best together by keeping them apart.
How often have you started reading a technical article on your phone, yet given up halfway through because you got tired of scrolling sideways through code blocks? If you have your own blog, are you giving this same annoyance to your readers?
In this post I’m going to look at how to adapt code blocks for mobile devices on your blog, and why it’s worth the effort.
So you’re a developer looking to start a blog? In this guide I’m going to take you through running your own blog site, from domain names & site creation to SEO & syndication.
If you’re a Clojure dev and you’re looking to learn Elisp, you have a great head start since you know a lisp dialect already. Here’s a concise guide which focuses on the main differences between the two languages.
I had always assumed that it would be too hard and boring to get to grips with Elisp. But I don’t know why I held off for so long - you can get a lot of bang for your back with just a little Elisp, and what’s more it’s pretty fun too! In this post I want to do a few things:
- Encourage any Emacs users that haven’t used Elisp yet to give it a try
- Highlight some key useful Elisp functions
- Provide some examples & inspiration for creating your own extensions (whether you’re an Elisp newbie or not)
Recently I’ve been creating “thin” jars for my Java applications, in order to avoid the waste caused by putting uberjars in containers. Unlike an uberjar, a “thin” jar contains only our application code, with all the dependencies split out and referenced in the uberjar’s manifest file. This lets us store the app code in a separate docker layer, allowing us to save all the storage & network IO that we’d otherwise waste re-transferring all those app dependencies.
Despite this, it’s still common practice to deploy Clojure apps as uberjars, so I thought I’d try implementing the same dependency/app-jar separation for my Clojure apps. Wondering why such an option isn’t already a built-in function for tools.build, I thought it would be as simple as recreating Maven’s copy-dependencies step in Clojure.
The bad news: we can’t get all the way there; the good news: we can get pretty close - at the very least, a concrete improvement over containerized uberjars.
There’s plenty of advice around on how to create small Docker containers, but what is often missed is the value of making your main application layer as small as possible. In this article I’m going to show you how to how to do this for a Java application, and why it matters.