I've made some gradual progressions with my development ability. Started with web apps in Ruby on Rails to better web apps with Node.js + Express and now started to get into the systems programming using Go (golang). It's been a fun ride and I've got a few projects done in Go so far. I'm adding another notch to the belt today with the Docker Machine Driver for RackHD.
This project wasn't necessarily challenging from a development standpoint. In fact, it was actually quite easy. Here's all the code -> https://github.com/emccode/docker-machine-rackhd/blob/master/rackhd.go. What made this challenging was trying to interface with 2 projects that are under extremely heavy development. The first is RackHD. With nearly 40 people working on the code base, something is new or changing every few hours. Ideally, you want to keep up with the latest and greatest but at some point you just have to stop at one commit and work from there. The second portion was Go-Swagger. Again, another project under heavy development that is making use of the Go but appealing to the Swagger community to easily generate API bindings. This project is changing every few hours as well. Combine these two together and it's about 2 months of excruciating testing to make something concrete!
The first task was building Go API bindings and that was accomplished with gorackhd. This in itself proved something that would need updating every few weeks because the Swagger Spec is being updated every few days and new APIs were being added. I even got to find that out the hard way when I was trying to make a query lookup happen but it wasn't available (this line of code). Needless to say, I finally got to the point of being able to have a working driver after defining commits that are suitable to work. Shoutout to Schley Kutz for creating a badass Makefile for gorackhd and even fixing issues with go-swagger.
For the project itself, I've already written two posts. First is the announcement on the EMC {code} Blog and the step-by-step guide on using the RackHD Vagrant image. Use the guide as a way to test it for yourself to see how awesome Docker Machine really is. Here is another link to the repo (https://github.com/emccode/docker-machine-rackhd) and the videos are down below. Enjoy!