After getting the hang of some of the basics in my last article (Starting Clojure) I decided it was time to throw myself into some slightly more challenging puzzles. This post will be very code centric with some brief notes about what led me to my solutions/failures.
I’ve been developing Ruby for years now and I love it but I’m getting too comfortable with it. I know as well as any good developer that it isn’t the best tool for every job. It’s my job to be able to build the right software the right way and that should include the language selection. So, time to take the plunge and learn another language from scratch.
I selected Clojure because I find it interesting. There is something about its syntax that draws me too it. I’ve been enjoying Go recently thanks to how easily I can write multi-threaded applications and so Clojure is also a good choice with immutable data structures.
I have found myself spending ever increasing amounts of time developing in Go (golang). Not because I need to, but because it’s a refreshing change from my usual. One thing I was interested in however was simply getting my code to work almost anywhere which is harder with Go seeing as it needs a platform to target.
The first thing to learn about Ruby is that everything is an object. The best way to make use of the languages features are to develop in an Object-Orientated way. This being the first article in many about learning Ruby, I will walk you through classes and objects. Ready?
Being ever on the lookout for cool technologies, I stumbled upon the wonderful new language ‘Go’. Developed by Google as a means of combatting the flaws and shortcomings of current languages such as Java and C++ when it comes to highly concurrent requirements.
Boxen is a new tool that allows new Macs to be quickly set-up using the same technologies that sysops have become accustomed to, Puppet. Now Puppet has it’s own language to define what actions are executed on target machine. It was originally developed to help prepare cloud servers for easier management/deployment.