Chef Local Cookbook Development Badge

I'm lucky to have been able to work for some unique and amazing companies over the years. I can say without a doubt that I'm in the most unique and challenging role I've ever been in at Linux Academy as a devops course author. At Linux Academy I get a chance to have an impact on peoples lives by helping them go from where they are, to where they want to be. I'm excited to have had the opportunity to create an entire course for those seeking Chef certification to obtain the Chef Local Cookbook Development Badge.

The Chef Local Cookbook Development Badge course builds on the knowledge gained in the Chef Basic Fluency Badge and gets you into the ChefDK tools in more depth. I'm looking forward to taking it even further with the Extending Chef Badge.

Jekyll Notes

I've been happy with Jekyll over the past few months and wanted to capture some notes how I've recently converted my deployment to use S3 static site hosting. Since Jekyll generates static content and S3 supports static html it seemed like a good way to cost effectively host a site.


Jekyll is a static html generator which parses simple markdown formatted text files and outputs html after running it. S3 supports delivery of static websites which makes it an ideal place to host a website inexpensively. Jekyll doesn't have native support for uploading to S3, another tool called s3_website is used to accomplish this task. The s3_website tool supports Jekyll sites out of the box and will automatically find the html site content and upload it to S3. Since Jekyll posts are just a collection of text files it makes some sense to use Git for versioning. Git can be leveraged with a post-commit hook to invoke Jekyll to build any new content and upload it to S3 with s3_website.

Below is a list of software which I needed to either install, configure or modify:

gem install pygments.rb # Syntax highlighting
gem install jekyll-compose # Easier post creation
gem install jekyll-paginate # Pagination support
  • Create an IAM user, S3 bucket and bucket policy.
  • Configure a Route53 alias record to point to your publicly available bucket URL.
  • Create IAM roles which grant bucket and object access.
  • Create an s3_website configuration file and edit it.
  • Create and configure a Jekyll site or use a nice template like Lanyon.
  • Initialize a git repository.
  • Configure a post-commit hook to deploy the site using s3_website push
  • jekyll post "Hello World"
  • Use 'jekyll serve' to test out the site.
  • Use 'jekyll build' and 's3_website push' to deploy to S3 in a post-commit hook.
  • Edit the site and commit the changes when satisfied.

On Principle

Amazon has a set of core leadership principles which are often written about and can be found on their careers site. There is one particular principle which I initially resisted but have come to know as true and valuable. That is the idea that leaders are right a lot, that they have strong business judgment and good instincts. Out of context this idea seemed to me initially like some kind of blanket justification one could wrap around any managerial decision, but it goes deeper than that.

During a recent visit to 37signals Jeff Bezos talked about this principle in a little more depth...

During one of his answers, he shared an enlightened observation about people who are “right a lot”. He said people who were right a lot of the time were people who often changed their minds. He doesn’t think consistency of thought is a particularly positive trait. It’s perfectly healthy — encouraged, even — to have an idea tomorrow that contradicted your idea today.

He’s observed that the smartest people are constantly revising their understanding, reconsidering a problem they thought they’d already solved. They’re open to new points of view, new information, new ideas, contradictions, and challenges to their own way of thinking.

I find I often interact with people who affix their view to a narrow set of facts which support that view. They're often jumping to conclusions without taking the time to examine all of the available information and in the end they suffer for it. These few facts are usually small details which they can't seem to let go of or won't reconcile easily and so they cling to what they know about a problem. Staying connected to details is important but it is also important to be open to the idea that what you knew yesterday may not be as important as what you might learn today. It's not so easy to help someone to this kind of understanding, often it is easier to persuade them directly through technical merit, knowing that each time you will have to climb the same mountain. Like a good climber, you will always seek to find a better route.

Disclaimer: I have previously worked for Amazon (AWS) and still admire Amazon greatly.


I was lucky to have seen some amazing places over the last year.


I've made the switch to Jekyll for content management.

I've found I don't really need all the overhead of wordpress, especially since I'm finding I don't update as often as I used to. Jekyll is much simpler and requires almost no maintenance at all. Jekyll parses simple markdown formated files and generates html from templates, that's about all there is to it. Because the output html is static, pages load much faster. Only a bare minimum webserver is required. The consequence of all this simplicty is that the barrier to entry requires some understanding of coding. If you understand templating concepts and are comfortable with editing markdown and html and have a bit of command line experience it's well worth the effort.