James Jefferies and ShedCode Ltd

The world of James and ShedCode

Whatever Next - the Technical Stuff

| Comments

In recent years my main programming language has been Java, sprinkled with a bit of the usual korn/zsh scrips, SQL, HTML, JavaScript and other gubbins. The world of Java is rich with libraries, web frameworks, platforms and alternate languages. I’ve invested a lot of time in this ecosystem, knowing which tools are useful for which problems, gained expertise in various web frameworks, development environments and platforms, generally to be as productive as I’ve ever been.

For the last couple of years though, I’ve been pondering whether to stick with what I know, or to spend time learning some new stuff. It is fair to say that I’m not a natural polyglot. I like to spend decent time getting to know a language and it’s ecosystem and I find it can be tricky switching.

Grails & Groovy

At first I spent a bit of time, starting to get to know Grails, basically using Groovy on the JVM (Java Virtual Machine) to build a Rails like web framework. The rest of the Grails stack is also stuff which I know very well, Spring, Hibernate etc. There is a lot I like about Grails and I’ve yet to investigate all this is new in the latest 2.0 release.

So, there you go, something I’d like, building upon a lot which I already know. Should be the favourite right?

Scala & Play/Lift

Well, I then started thinking a bit about Scala, a language which polarises opinion, especially amongst the Java community. It is either the ‘new’ Java or it is a hodge podge of static typed semi functional programming. People complain about it’s complexity or love how doing things in a more functional fashion reduces code andĀ maintenanceĀ and gets it all set up for multi-core CPUs. If I was planning on doing more ‘corporate’ work, working on huge projects in London or building a twitter competitor then it’d make sense for me to have a good look at Scala.

But I’m not, maybe ShedCode will work on an idea which will one day be huge, I think I’ll worry about that another time!

Clojure

I’d also like to learn Clojure, mainly because I think it will be good for my programming skills and good for my brain.

Rails & Ruby

Then, working on Happenstance has made me think again…

In early 2008 I was going to investigate Rails & Ruby, one because I liked the fact it was called Rails, but then also because it seemed to be gaining a lot of momentum and interest and it was ‘cool’. In the end I got a job doing java, so I put it on the back burner. I also started to realise that, as is often the case where things are a bit ‘cool’ there were quite a few.. ahem.. nobbers around who not only believed that Rails was THE framework to use but that using anything else was such a POOR substitute. I have to be honest, it did my nut. I did meet a few people who seemed ok, but the majority, I didn’t really get on with.

Now I find that a lot of the R&D web apps I’m interested in, have been built with Rails. I’ve also met some more Rails devs who are not nobbers, in fact, they are interesting, helpful, open minded people. I’d like to work with some of them, I’d like to build things on top of the work they’ve done. I’d like to explore the Rails ecosystem which has inspired so much in other languages (like Grails for example).

Client Side

Even though over the last few weeks, I’ve been thinking more about whether the classic server side MVC web framework is what I should be looking at all. There is a significant trend for using client side JavaScript frameworks for doing a lot of the hardwork in the browser, whilst having a more simple RESTful service/API set up on the server. Examples would be Backbone.js, Ember.js, Knockout.js etc. This somehow feels like a good idea, but I’m not great with JavaScript and I’m not sure this is what I want to do just yet. Obviously improving my JavaScript knowledge would be useful regardless!

Crossroads

So, I find myself at a crossroads. I’ll spend some time with Clojure, regardless of what else I do, but I’ve got some interesting projects to start in the next month or so and I need to decide whether I:

  1. Learn Rails and see what happens…

  2. Go with what I know a bit and build something with Grails. I know the tools, I know the libraries and I know it works (mainly)

  3. Client side JavaScript stuff

  4. Go with Scala, build on top of the Java I know and become have decent with functional languages

At the moment, these are in my preferred order, but I’ll let you know what happens…

Comments