Blind Squirrel

Once in a while, even a blind squirrel finds a nut.

Custom SSL Certificates With Chef 11 Server

While setting up Chef 11 Server on a CentOS 6.4 box, I realized I wanted that it defaults to using self-signed SSL certificates. Since we have existing wildcard certificates through GoDaddy, I wanted to switch over to those. It look a little bit of digging and some help from IRC #chef to get things working.

Pushing to Maven Central With Sonatype

Getting your opensource JAR published to Maven Central is free, but requires a little bit of up front work. I use Sonatype to help publish the jars for metrics-statsd, which makes life much easier. Most of the process is documented by Sonatype, which you can read about here:

There were a few tricky parts that either weren’t documented well or I just found confusing. I have tried to document some of these parts below.

Distributed Graphite on EC2

Some time ago, we switched from Cacti to Graphite for tracking and graphing system metrics. In our Amazon EC2 environment, we frequently startup new servers and shut down old servers. While Cacti did a decent job, the amount of manual effort required to setup new graphs made it a challenge to use. Since Graphite simply tracks anything you throw at it and easily handles applying aggregate functions across multiple metrics, we found Graphite to be a much better fit with EC2 and our usage patterns. With a solid web interface and a variety of alternate front-ends and awesome dashboard tools like Graphene, we quickly fell in love with Graphite.

Testing Logstash Grok Filters

Logstash is an outstanding tool for collecting and parsing logfiles. In particular, the grok filter is extremely useful to extract specific pieces of data from your logfiles. Once you pull data out of the logfiles into fields, you can easily search on those fields. Unfortunately, I find the format for patterns in grok filter challenging to write correctly. If you mess up your pattern, you will end up with the dreaded “_grokparsefailure” tag on your log entry. What you need is a way to test your patterns before adding them to Logstash.

Why PostgreSQL?

Quick overview of what PostgreSQL brings to the table that is not available in MySQL.

Different Content in Rails Based on UserAgent

I was recently working on a website built using Rails that needed to render different content for certain user agents. Specifically, we needed simpler versions of certain pages for BlackBerry devices. Here’s how I accomplished it.

Tomcat Init Script for Ubuntu

Recently I spent some time working on improving my init scripts for Tomcat 6.x in a production environment running Ubuntu. One of the major problems we had encountered was that occasionally Tomcat refuses to shut down completely and requires a kill -9 to stop it. The standard init scripts I had seen didn’t solve this problem at all.

To Rewrite or Not to Rewrite: The Ugly Question

I recently had a discussion about the idea of rewriting software from scratch. I actually played the devil’s advocate and argued against ever throwing out and rewriting, which really got me thinking about the whole concept.