- Read up on it to understand what problems it addresses and how to get started.
- Use it for a decent-sized, real-world task.
- Read the documentation to fill in the gaps and realise what you could have done better.
I've had a bunch of tools on my radar for a long time which I never got to use on a paid project. Aside from the occasional minor personal project or experiment, these tools stayed in the toolbox. The recent Fingal Open Data app contest was the opportunity I was waiting for. There were no restrictions on choice of technology so I lined up everything on my list of things to try:
- Groovy. I've been using Groovy for small scripts for some years now. It's a natural choice of dynamic language for a Java developer. I found it very rapid for development on the Fingal app. It's the small things that make the biggest difference: all the convenience methods on collections, for example, and GStrings, which are mini-templates. The XmlSlurper was handy for processing the Fingal data.
I attended the Groovy & Grails Exchange in London in December so Groovy and associated technologies were all very fresh in my mind when I began work on my contest entry. - Google App Engine. This was my deployment platform. It has traditionally been difficult to experiment with Java-based web apps because of the cost of hosting a minimally-capable web container. GAE is good enough though, and it comes with a NoSQL database, another trend I've been following lately.
- Gaelyk. This is a thin Groovy layer on top of GAE. Besides making Groovy a native language on that platform, it adds templating and various convenience methods for accessing the underlying platform services.
- Gradle. Built on Groovy, this is my candidate build tool to replace Ant. I pretty much used an out-of-the-box Gradle script for this application, only adding a CodeNarc plugin for static code analysis. It worked perfectly, took care of deployment to development and production servers, and it looks very clean and expressive so I will continue to use it when possible.
- Sublime Text 2. A full-blown IDE felt too heavyweight for this project, and I seem to waste a lot of time keeping Eclipse's plug-ins and build classpath up-to-date so I looked around for a good code editor. I see all the Apple users at conferences rocking their Textmate editors so I wanted a Windows equivalent. I found Sublime Text. It's not free but you can try it for as long as you like before purchase. Having used it for this project, I'll be buying. It's very slick. I didn't have Groovy code-completion or refactoring but it's a great editor.
- Bootstrap 2.0. Twitter's Boostrap project has made getting a website or web application frontend up and running very simple indeed. I've tried other CSS frameworks but this one seems particularly solid and straightforward. The 2.0 version is not released yet but I didn't have any funky UI requirements so it was safe to deploy the work-in-progress here.
It all worked out very well. No roadblocks and there was plenty of spare horsepower in each of these tools to handle a much larger application. I would add in Objectify if the data structure got any more complicated though. In fact, I might add it to Whatz n the Hood anyway, just to get a feel for it.