How I got into Ruby (You've got red on you)

At the inception of our project, my colleague and I had the opportunity to choose the technology stack. Since we were both Java peeps it seemed natural to start designing the app, a REST based service, using the new Spring 3.0 MVC stuff. We even started to watch some videos on Spring Roo to get it off the ground. The reality of our situation though is that we were developing one of many systems to the client. The other system is being developed in Ruby and the majority of developers at the client are also Ruby developers. Based on this, we decided that sticking with Ruby would be a better fit for the client.

There were two factors easing the discomfort of taking on a new technology to deliver a system on schedule. The first is the relatively simple nature of the application.  It's a REST service that does some simple checkout process with moderate performance requirements.  Nothing brutal. The other is having an extremely talented Rubiest on my team. Toby's been more than happy to help convert a Maven loving Java dude like me over to the crimson side. I knew with him around this was my best chance to build my first non-trivial Ruby system.

So far it's been a fun ride and after a few weeks it feels like I'm finally starting to breathe some air.  The syntax and conventions are starting to become familiar and the ability to navigate stack traces and documentation is improving.  Another great ancillary effect is that the functional and dynamic aspects of Ruby have been connecting some of the disjointed dots which surfaced during my brief studies in Clojure.

I do however miss terribly the luxuries that stricter syntax and strong typing enable, especially for tool support. Please refrain from the real coders don't need an IDE spiel. I miss strong refactoring support, especially because my newbie Ruby needs a lot of it.  Static analysis and code completion are also wonderful for learning new syntax and API's. Knowing which methods are available to call on a variable is nice. Being able to click through to the source code of that method or see the doc in a tool tip on hover is very nice.

But I'm always happy to learn even if it means re-learning how to learn.

I will be blogging some of the things I banged my head against in order to help others new to Ruby, allow current Rubiests to laugh at my newbieness now, and most importantly allow me to laugh at myself later! Stay tuned. 


Chicago Clojure Meetup

There's no doubt that I loves me some Clojure. Just listening to guys talk about though it honestly makes me feel like I never took a college comp sci course and I love it for that. Who would have known LISP would ultimately rule the world! Lispers, I guess.

When Michael Norton asked if I'd like to help out with the Chicago Clojure group I was quick to hop on board. Now, I'm no Phil Hagelberg, but few are? All I know is that playing around in FP land was a wonderful and eye opening experience after being nose to the grind in Java's OO for many years. I can't wait to get these rolling on a regular basis.

So sign up for for the group and bring your self down on May 19th. We are taking recommendation on topics so please suggest something or vote for what you want to hear about.

Plus, there will be pizza!

(I in no way guarntee the availability of pizza at the Chicago Clojure meetings). 

Time to dust this thing off.

So where have I been?

New job. New marital status. New layer of skin (after Jamaican Sun peeled off the first layer). Most exciting to you (my 2 followers (and Minella's RSS feed)). New languages! New technologies! All that jazz.

Since joining Thoughtworks (yay), I've been using a lot of Ruby. I've tried to do Ruby several times in the past but never had the opportunity to do anything non-trivial. The last time I tried to use Ruby was with Gunnar Morling's Sriptable DBUnit DataSet for the Maven/Cargo/Tomcat/H2/Selenium automated web test stack that I never blogged about.

So what I will be talking about in the near future is my experiences of turning to the world of Ruby, which has so far involved the battery of RSpec, Rack, Sinatra, Rake (yes Rake), Passenger, Bundler, Shotgun as well as MongoMapper since we are using MongoDB as our datastore. We needed to make use of geospatial indexing and  MongoDB did one hell of a job against PostGIS for our use case. Although I do love SQL and relational as well as multidimensional data modeling , my first No-SQL experience has been undeniably great.

Hopefully I'll find some time to pretty this generic template up as well. Stay tuned!