seancorfield/boot-new has moved to boot/new

January 19, 2017

I'm pleased to announce that the "Boot new" task formerly known as seancorfield/boot-new has moved to the Boot organization, as boot-clj/boot-new and that the group/artifact ID is now boot/new.

You can use this to easily create a new Boot-based project:

Continue reading →

Clojure, New Relic, and Slow Application Startup

July 29, 2016

A couple of years ago, I blogged about instrumenting Clojure for New Relic monitoring and we've generally been pretty happy with New Relic as a service overall. A while back, we had tried to update our New Relic Agent (used with our Tomcat-based web applications) from 3.21.0 to 3.25.0 and we ran into exceedingly long application start times, so we rolled back and continued on with 3.21.0. Recently, we decided to update the Agent to 3.30.1 to take advantage of advertised performance improvements and security enhancements. Once again we ran into exceedingly long application start times.

An application that took just over four minutes to start up fully with 3.21.0 was taking around forty minutes to start up with 3.30.1 -- an order of magnitude slower!

Continue reading →

Start Your Engine

July 18, 2016

Today I'm inspired by the latest issue of Eric Normand's Clojure Gazette which talks about why his "Joy of Programming" comes from learning and exploration.

I got into programming as a child because I was curious about solving puzzles and problems: given the (relatively) limited vocabulary of a programming language and its input and output features, and some interesting problem that came to mind, can I solve it in a usable (and hopefully elegant) way?

Continue reading →

More Boot

June 17, 2016

Back in February I talked about boot-new and talked about a "future 1.0.0 release". We're not there yet, but generators got added in release 0.4.0 and, in the four minor releases since, the focus has been on refactoring to match the core Boot task structure and improving compatibility with Leiningen templates. At World Singles, we've continued to extend our usage of Boot until we have only a couple of Ant tasks left and we expect those to be within Boot's reach soon. In this post, I want to cover some of the things we've been doing with Boot recently.

I feel I should start with an apology for the "radio silence" since February -- it's a combination of work being extremely engaging (and busy!) and some aspects of my personal life going somewhat to hell in a handbasket... But things have improved lately (thankfully!) and I hope to be more regular in my blogging (I certainly have a decent queue of article ideas in my head!).

Continue reading →

boot-new

February 2, 2016

In my previous three blog posts about Boot -- Rebooting Clojure, Building On Boot, and Testing With Boot -- I looked at why World Singles decided to switch from Leiningen to Boot, as well discussing one of the missing pieces for us (testing). Once I had boot-expectations written, I was casting around for other missing pieces in the ecosystem and one glaring one was the lack of something to generate new projects from templates.

Leiningen has long-supported the generation of new projects from templates and it's pretty slick. Want to get a new Framework One application up and running?

Continue reading →

Testing With Boot

January 31, 2016

In Building On Boot, I gave some high level benefits we'd found with Boot, compared to Leiningen, and how it had helped up streamline our build process. That article closed with a note about Boot not having the equivalent of common Leiningen plugins, and that's what I'm going to cover here, since that was the first real obstacle we encountered.

We use Jay Fields' Expectations library very heavily for most of our testing needs. We use clojure.test only for our Clojure-powered WebDriver testing. Leiningen has a test task built-in and we had been using lein-expectations for years. It was quite a shock to find out that Boot has no testing tasks built-in!

Continue reading →

Building On Boot

January 30, 2016

In yesterday's blog post, Rebooting Clojure, I talked about our switch from Leiningen to Boot but, as Sven Richter observed in the comments, I only gave general reasons why we preferred Boot, without a list of pros and cons.

Over the coming weeks, I'll write a series of posts about some of the specifics that worked better for us, as well as some of the obstacles we had to overcome in the transition.

Continue reading →

Rebooting Clojure

January 29, 2016

We switched from Leiningen to Boot. What is Boot and why did we switch?

Leiningen

Continue reading →

Where Did 2015 Go?

January 3, 2016

I did not intend to stop blogging in 2015 but that's certainly what it looks like here!

So what kept me so busy that I didn't get around to blogging anything?

Continue reading →

Frege (and Clojure)

February 8, 2015

I've often said that I try to follow The Pragmatic Programmer's advice to learn a new language every year. I don't always achieve it, but I try. As I've settled into Clojure as my primary language over the last several years, I've made a fair attempt to learn Python, Ruby, Racket/Scheme, Standard ML and more recently Elm. I learned that I like Python, I don't like Ruby, Racket/Scheme is "just another Lisp" (I already have Clojure) and SML is very interesting but not really widely useful these days (it's a great language for learning Functional Programming concepts tho'!). I also spent some time with Go last year (don't like it).

The Elm language is really nice - and useful for building interactive browser-based applications (and games). I've been meaning to blog about it for quite a while, and I hope to get around to that in due course. Elm is sort of inspired by Haskell, and that's really what this blog post is about. Sort of.

Continue reading →