April 30, 2013
Keeping cool in the face of disaster
In Washington, during the peak of Hurricane Sandy, my power went out. The wind outside was howling, the UPS that my MacBook was connected to began to scream, and my Comcast Internet was hosed. We were in the middle of manually failing over our application servers to our New Jersey datacenter, and now I had to continue on my T-mobile tethered cellphone.
Disaster recovery (DR) is serious business. When a catastrophe strikes you’re never completely prepared. At Bloomberg, as I imagine most large companies, we take care in designing our systems to be reslient. For us, this means highly available, uninterrupted service for all of our clients. In order to be able to sustain a complete datacenter outage we must be fully confident in our automated solutions for failover. A disaster recovery plan is no good if it hasn’t been tested and a disaster is the wrong time to execute that test.
April 27, 2013
From Veewee, to Vagrant, then Chef
My good British friend Phil Sturgeon posted an awesome writeup regarding Vagrant and Chef. I’ve been meaning to do a post of my own. Over the last few months a side project of mine has got me involved a lot with Vagrant, Chef and Veewee. But to find resources on the Internet, especially tutorials, which combine all that knowledge is definitely a task I would not wish on anyone else.
So I figured I’d put together a simple little blog post that gets you started building out your own testing environment. Just
February 27, 2013
Defining C Objects in Ruby
A few days ago I wrote a post about marrying Ruby and C and provided an easy to follow example gist. After spending some more days hacking on C/C++ integration with the Ruby virtual machine I decided that finding some quality examples was surely a real big pain. Many of the problems that we are facing are directly related to objects being accessed from multiple threads at the same time in the Ruby virtual machine.
While learning I found writing some example code definitely helps. This new example is a little more complex, but pretty much covers most of the bases in regards to basic object functionality. I decided to leave out inheritance in this example as it was getting to be pretty big. My goal was to be able to sit down and write the example, plus a blog post, in a single night. If it took me longer than a few hours its probably too complex of an example.
February 23, 2013
Marrying Ruby with C
For a few weeks now I’ve spent some time working on embedding the Ruby virtual machine into an application service for a Celluloid server spike. Specifically we took the trunk release of Ruby 1.9.3 and started integrating our service framework utilizing some of our tried and true libraries inside of our server code. This is a similar approach that you would take when developing a native extension - the commonly used mysql2 gem is an example of this - where an interface API is written to expose functionality into the virtual machine.
January 16, 2013
Team Duct Tape
At Bloomberg we’ve become amazingly efficient at pushing bytes over the past thirty years. My role at Bloomberg Government has changed over the past year that I have been down in Washington. At the beginning of my tenure my job began with writing blazingly fast data services to deliver legislative information for consumption by the Ruby on Rails application. I then helped design and implement our alerting infrastructure giving our clients the ability to define custom legislative alerts tailored specifically to their search criteria. The first six months at BGOV was a complete whirlwind tour of software engineering, including project management, but in August I was given the oppourtunity to completely change my role once again.