Follow me on Twitter Twitter_16
Subscribe to my RSS feed Rss_16

You're using your metrics wrong!

Posted over 5 years ago

If you’re using metrics only to debug and diagnose bugs and system issues, then you’re doing it wrong. You should be looking at metrics related to your code or infrastructure after each production change with the goal of identifying opportunities for optimizations and improvements. By doing this, you’ll often find issues before they compound into more critical problems.

SSH into multiple AWS EC2 instances

Posted over 7 years ago

I just updated ec2-clusterssh

It’s a gem that provides a command to open a distributed/shared shell into any number of AWS instances by matching/filtering by instance tags.

Say you want to log into all your webservers for debugging, it’s as easy as…

$cluster -v webservers

How to get the mcollective-puppet-agent to run puppet in standalone/masterless mode

Posted over 7 years ago

I just wanted to do a quick writeup on this since it took me about a day to figure out the issues and workarounds. Hopefully it will save someone else some time.

mcollective-puppet-agent is an mcollective plugin that allows you to (among other things) run puppet on a set of nodes. Out of the box, the plugin will execute puppet agent --runonce on… [more]

What is DevOps?

Posted over 7 years ago

I’ve been interviewing candidates for a DevOps opening that Interactive Intelligence has available and I keep getting asked by candidates, ‘What does DevOps mean to you?’

If you were to google ‘What is devops?’ you’ll find pages and pages of blogs and articles answering just that. I’ve read a few of them but I still find myself struggling to give a clear answer.

I think the… [more]

ASPMVC vs. Rails (DBContext vs. ActiveRecord)

Posted over 7 years ago

The primary purpose of this post is to facilitate a discussion I was am having on twitter with stuartleeks.

I wrote it fairly quickly and primarily wanted to use this post as a venue for discussion (via comments) rather than to provide consumable content. So don’t judge for the quality/depth of the content. Hopefully the discussion will be pretty interesting though.

ASPMVC centralizes the interaction… [more]

On being thorough: DON'T PUSH IT OFF! FIX IT!

Posted almost 8 years ago

One characteristic that I take pride in myself with is being thorough. I really don’t like to miss things. I really take it to heart when I write code and overlook something that someone else catches (whether it be a performance issue, bug, etc.). I don’t like my work to cause additional work for someone else. Of course, you’re going to miss something every now and then. They key is to internalize it. How did you miss this? What general… [more]

Puppet Best Practices: Environment specific configs

Posted about 8 years ago

I’m about a year into a migration to puppet and have learned quite a bit along the way. In this post I’m going to talk about what I’ve learned about managing environment specific configurations. I’ll briefly go through some of the different ways that we’ve managed these configurations along the way and then talk about where we are now. If you just want to know the end results feel free to skip to the end, but I think it’s valuable to… [more]

The value of elegant code

Posted over 8 years ago

I read a really “interesting blog on Chef vs. Puppet”: today. A friend of mine pointed me to it because he really enjoyed the following quote from the article, “This zealous hunting of unquantifiable elegance feels, to me, to be endemic in the ruby world.”

I will agree, there is some truth in that. I find that ruby developers tend to spend a bit more time trying to perfect their code base. Perhaps they do over-value ‘elegance’ a bit, but perhaps the value of… [more]

Vagrant plugin: vagrant-puppetconf

Posted over 8 years ago

Our puppet setup has slightly different configs depending on what environments (test, staging, and production) we are provisioning a server in. We key our config settings for each environment off the puppet ‘environment’ config in puppet.conf.

An example puppet.conf

The issue is that we want our vagrant box to be able to assume the configs for any environment. For example, during development, we may want to… [more]

Creating a vagrant plugin: Introducing vagrant-hiera

Posted over 8 years ago

vagrant-hiera is a plugin for vagrant that enables simple configuration of puppet-hiera on a vagrant box.

Creating a vagrant plugin is simple once you get your head around how the config and middleware stack work and tie together. Mitchelleh has put together some great documentation to help get you started.

The purpose of this post is to… [more]

Can't delete cookies with Cucumber, Capybara, and Selenium

Posted over 8 years ago

I ran into an interesting selenium bug that prevented me from deleting authentication cookies.

The use case I was attempting to recreate was logging into my application (with oath against google), logging out, then logging in as a different user.

With open auth, as long as you are logged… [more]

PHP could not find driver

Posted over 8 years ago

I ran into an issue today where I could not connect to a database. Googling led me down the wrong path. The actual solution turned out to be pretty simple.

When attempting a connection I would get the following exception:

could not find driver

Googling the error produced quite a few results. Most of which were related to pdo_mysql not being installed or configured… [more]

How to organize puppet manifests (directory structure)

Posted over 9 years ago


I really haven’t been able to find any documented methodology or best practices around how to organize puppet manifests. After several discussions on th’is topic with my colleagues we’ve identified a list of principles that should be considered when defining the directory structure. I’ll outline what these are and then propose an implementation that follows the principles.


The directory… [more]

Poker tab

Posted over 9 years ago

I just finished the newest addition to the site. You probably noticed the new ‘Poker’ tab. What is this? Well, I host a weekly poker game and thought that it would be nice to be able to have a tool that the players could use to track their stats. This new tab allows me to create tournaments and at that point people can RSVP to the tournament and track their buy-ins and winnings.

I knew I wanted to be able to do some graphing for statistics. I’ll probably add more later,… [more]

How to install the ruby-libvirt gem on Debian Lenny

Posted over 9 years ago

I spent the better part of an evening trying to figure out how to install the ruby-libvirt gem (libvirt bindings for Ruby) on my machine. Finally, I decided to try a different version.

The newest version of the ruby-libvirt gem (v4) seems to be much more difficult to install on Debian Lenny.

To install ruby-libvirt

- ruby-1.8.7
- ruby-dev
- libvirt-dev
- libxen-dev
- ruby-libvirt (v3)

How to get noip client working in Ubuntu 11.04

Posted over 9 years ago

noip is a tool to set up a DNS entry that routes to your dynamic IP provided by your ISP. It works by providing you a client that runs on your machine that updates the service on with you IP on a regular interval.

I spent awhile figuring out how to set this up to start automatically on my server and I thought I’d share. The README that comes with the client is helpful, but a… [more]

Should I put configs in the package or use a configuration management tool

Posted over 9 years ago

I stumbled across this extremely long interesting video from DevOps Days Mountain View 2011. Jordan Sissel (Loggly), Joshua Timberman (Opscode), Phil Hollenback (Yahoo Mail), and Noah Campbell (DTO Solutions) discuss how they manage configs in their deploys.

There were three options discussed:

  1. Config management tool (i.e. Chef).
  2. Creating config packages and having application package dependencies push… [more]

Using Vim as an IDE

Posted over 9 years ago

Every time I started my computer to do some programming, I would stare at the Eclipse splash screen and watch that progress bar slowly move from left to right as the application booted up. The conveniences that came with such an IDE made this all worth while.

About a year ago I took my first dip into VI. I was hoping to find a light weight IDE and thought that I might be able to get what I needed with Vim and a few plugins. I really found it refreshing. … [more]

mongrel_cluster service is not starting the mongrel cluster

Posted over 9 years ago

I ran into an issue setting up a service to start mongrel_cluster on boot. I followed an excellent set of instructions that I found here, but I ran into a couple problems.

Problem 1: service mongrel_cluster start gives no output and does not start the cluster

I looked through the init script and found that the… [more]

How to VNC to the primary display in ubuntu (display :0)

Posted over 9 years ago

1) Install the package

sudo aptitude install x11vnc

2) Run the following command

ps wwaux | grep auth

This command should output something like this:

root      3838 10.1  1.7  13308  8840 tty7     Ss+  15:35   2:14 /usr/bin/X -br -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-LliKdB
erik      5156  0.0  0.1   2800   752 pts/0    R+   15:57   0:00 grep auth

Note the path after… [more]

New Features

Posted over 9 years ago

I just finished with a pretty major update to the site. Most of the new stuff is under the covers. The update was prompted by me wanting to play around with the new features in Rails 3, but I found a lot of other things to improve once I got into the code.


Poker subscriptions

I don’t have to maintain and manage an email list of people who want to know when I’m having a poker game. User’s can now subscribe to the mailing list and when I… [more]