MVT: knife test and TravisCI

In my last post, MVT: Foodcritic and Travis CI I described the process for having Travis CI look after your cookbooks and run Foodcritic, the cookbook lint tool, on your cookbook after each git push. In this post, we'll iterate on the "Minimum Viable Test" idea by adding in support for knife's cookbook testing. Wait, I'm already running foodcritic, do I really need to run knife cookbook test, too? I'll use a very simple example to demonstrate that you do....

Read More

Welcome, Dan Hensgen

Let me start off by apologizing to Dan for such a belated welcome post. It is belated for good reason though. Normally we mark our new engineer's first deploy. Today does not mark Dan's first deploy to production. But today's deploy is the culmination of many deploys. And, it has been the one I've been waiting for. Dan actually started in the middle of May, and we immediately began working on a maintenance project. We would be replacing a reliable,...

Read More

Profiling OpenStruct, Eager Loading, Method Missing, and Lazy Loading

I was recently working on a gem that involved marshaling data from a remote API. I really wanted the gem to behave like a native Ruby object, but they methods would vary depending on the response. Since the data was dynamic, it would have been counter-productive and not scalable to define each of the methods individually. As such, I thought of a few different ways to get the result I wanted, but that just raised more questions, mainly performance. How...

Read More

Welcome Jason Gilbertson!

The CustomInk technology team would like welcome Jason Gilbertson. Jason, a native of Iowa and a graduate of the Georgia Institute of Technology, has relocated himself to McLean, VA to join our team and we couldn't be more excited. Like everyone on the CustomInk technology team, Jason was quick to create a feature branch and then deploy his first feature to production. But there is another important aspect of our continuous deployment strategy that Jason participated in: feature verification. When...

Read More

Introducing Stoplight: Greenscreen 2.0

At CustomInk, we use a variety of tools to monitor the status of our builds. One such tool was Greenscreen. In fact, we even wrote a blog post about how we use Greenscreen at CustomInk not too long ago. One of the biggest problems with Greenscreen was its extensibility. By default, Greenscreen only works with Hudson and Jenkins servers. With Travis CI becoming quite popular in the open-source community, Greenscreen needed a major upgrade. Furthermore, Greenscreen was not very extensible....

Read More

MVT: Foodcritic and Travis CI

One of the big themes that emerged during #ChefConf was that we should be testing our infrastructure code. Software engineers have been practicing test-driven development, behavior-driven development, continuous integration, and many other testing-related practices for a long time. It's becoming more important for the infrastructure engineers to learn from and apply these practices to our day-to-day workflow. When it comes to testing Chef-driven infrastructure automation, there are a number of tools and practices that are starting to emerge. In this...

Read More

Provision your laptop with Chef: Part 1

If you have ever tried to follow the Opscode Getting Started Guide for Chef, you'll quickly be overtaken by Chef jargon, confusing instructions, many assumptions, and no clear direction. Even the most experienced developers had a difficult time following the Opscode Wiki. While it serves as a great reference resource, you pretty much have to know Chef before it is of any use. In Part 1 of this 2-part series, we will walk through setting up the Chef environment on...

Read More