Your Largest Organ

Ever since I can remember I’ve had skin problems on my hands around this time of year. Problems start with annoying peeling of large chunks of skin and end with cracked, bleeding, and painful hands. I’ve tried countless lotions and medications, but none of them fixed the problem, they just lessened the pain at best. So here I am for a 3-4 week period in the fall with nasty, greasy hands waiting for this year’s episode to pass and thinking ‘that is just what my hands do’.

Enter my latest fad of being health and diet conscious. It started (as far as I can tell) mid-summer with my Jawbone UP and making me more mindful of my standard programmer lifestyle. It progressed through calorie counting, getting the ‘proper’ ratio of macro-nutrients as determined by our all knowing, ever loving government, learning that’s all a bunch of crap, the 4 hour body for fat loss, and finally the holy grail of paleo and my favorite flavor of paleo: the primal blueprint.

My fad is now nearly 5 months old and is entering the phase where it’s just the way I live. Which brings me back to my hands which are perfectly normal now. I’m about a month past the time that I normally have these problems so I’m calling this one a great success. I’m pretty confident that your diet can fix most of the problems that we encounter today dealing with our bodies. It’s frustrating to believe and experience this while the vast majority of people are oblivious to how important their diet is.

So I’ll just end it with…

Works On My Machine


Ever since my wife decided to dunk our camera into a strawberry daiquiri 2 years ago we have been an iPhone as a primary camera family. Remember back when you used to have an electronic device that it’s primary purpose was to take pictures? The current iPhones are good enough now to be a primary camera for most people which is great for convenience. My problem had always been getting those photos off of the phones and into my library.

My phone was fine since I’d remember to plug it in every week or two and get the pictures off. My wife’s phone was a different story. First, I’d remember to plug it in every couple months. Second, she takes a bunch of photos…some of questionable quality. Combine that with my ocd-like behavior of needing to tag every photo resulted in marathon photo tagging sessions. That sucked.

Then I found a small app called CameraSync.


CameraSync does what the title says, it syncs your photos to the cloud wirelessly. So I set it up on both phones to sync new photos to a Dropbox folder and now the photos just magically appear on my desktop. Small batches FTW.

But there’s more! CameraSync also does that cool background job thing once you enter a geofence. I set it up to sync every time I arrive at my house. So now there is zero interaction with the app, it just does it’s thing by itself.

~ Heroku's Ugly Secret

In mid-2010, Heroku redesigned its routing mesh so that new requests would be routed, not to the first available dyno, but randomly, regardless of whether a request was in progress at the destination.
The unfortunate conclusion being that Heroku is not appropriate for any Rails app that’s more than a toy.

Great analysis of Heroku’s routing.

I love the service that Heroku provides, but I probably wouldn’t put too many of my eggs in their basket.


~ The Riddle of the Gun

As I said at the outset, I do not know how we can solve the problem of gun violence. A renewed ban on “assault weapons”—nearly the only concrete measure that anyone is talking about—will do very little to make our society safer. It is not, as many advocates seem to believe, an important “first step” in achieving a sane policy with respect to guns. It seems likely to be a symbolic step that delays real thinking about the problem of guns for another decade or more. By all means, let us ban these weapons. But when the next lunatic arrives at a school armed with legal pistols and a dozen ten-round magazines, we should be prepared to talk about how an assault weapons ban was a distraction from the real issue of gun violence.


Installing PostgreSQL 9.1 on Debian 6.0 with Chef

11/8/2014 Update: Ignore all the babbling below and just install it from the PGDG repo.

node.set[:postgresql][:enable_pgdg_apt] = true
node.set[:postgresql][:version] = '9.1'
node.from_file(run_context.resolve_attribute('postgresql', 'default'))

include_recipe 'postgresql::server'

Original content follows…

On a project I’ve been working on I needed to get PostgreSQL updated from 8.4 to 9.anything on a Debian 6.0 system. 8.4 is the most up-to-date package on this particular system. Googling around didn’t turn anything up so this is a documentation of what I did to get it installed using Chef.

I’m assuming you’re using the postgresql cookbook and the apt cookbook.

One of the first things that you’ll probably run into while searching for a solution is the Debian Backports project. This is a repository of backported packages that will run on an older Debian system. This is where you’ll find packages for PostgreSQL 9.1. You’ll need to add this repository to APT. Add a new file called cookbooks/postgresql/recipes/squeeze_backports.rb with the following contents

apt_repository "squeeze-backports" do
  uri ""
  distribution "squeeze-backports"
  components ["main"]

You could add this recipe everywhere you use postgresql::server or postgresql::client, but I chose to just include it at the top of each of those recipes

include_recipe "postgresql::squeeze_backports"

Now with that repository you can install the packages using the -t option of apt-get. Unfortunately I couldn’t find an easy way for the package resource in chef to do this unobtrusively since it doesn’t look in our backports repository to figure out what version to install. I did find a bug report in Chef discussing this and a fix for it, but it wasn’t fixed in the version I was using. So we’ll do it the DevOps way and hack it…in cookbooks/postgresql/recipes/client.rb I replaced:

node['postgresql']['client']['packages'].each do |pg_pack|
  package pg_pack


execute "install postgresql-client from backports" do
  command "apt-get -t squeeze-backports install postgresql-client -y"
  not_if "dpkg-query -W postgresql-client|grep -q postgresql-client.+"

execute "install libpq-dev from backports" do
  command "apt-get -t squeeze-backports install libpq-dev -y"
  not_if "dpkg-query -W libpq-dev|grep -q libpq-dev.+"

and in cookbooks/postgresql/server_debian.rb I replaced:

node['postgresql']['server']['packages'].each do |pg_pack|
  package pg_pack


execute "install postgresql-server from backports" do
  command "apt-get -t squeeze-backports install postgresql -y"
  not_if "dpkg-query -W postgresql|grep -q postgresql.+"

One last thing you’ll need to do is make sure the PostgreSQL version is set correctly in cookbooks/postgresql/attributes/default.rb which just means removing the check for debian 6.0 so it defaults to 9.1. It ends up looking something like:

when "debian"

  when node['platform_version'].to_f <= 5.0
    default['postgresql']['version'] = "8.3"
    default['postgresql']['version'] = "9.1"

Given all of those changes and if all the moons line up then on your next chef client run you should have version 9.1 installed. Good luck and please add a comment if there is a more elegant way that I missed.