I am a firm believer that UI should always supersede functionality, especially in the case of new webapps. People generally lash out when I say such things, but when you're starting a small company or launching a new product, a fully functional website does you no good if people don't know how to use it. Conversely, a buggy website with helpful, encouraging error handlers will encourage users to keep coming back.| Seth Vargo
If you have a custom short domain, bit.ly provides the opportunity to use your own custom short domain for free.| Seth Vargo
You would think less than a month after a very popular HackerNews article on how Dropbox hacks your Mac, the file sharing company would be careful about their software distribution. They just distributed an update that hacks your UI and presents a Yahoo-like banner from 2004.| Seth Vargo
If you recently upgraded to Apple's OSX Yosemite, you may notice Safari only shows the root URL portion of a web address.| Seth Vargo
Sometimes the green Merge Pull Request button on GitHub just does not get the job done. Thankfully, GitHub exposes an easy way to checkout a remote Pull Request to your local machine where you can edit, rebase, and merge back to master.| Seth Vargo
The keyboard shortcut for focusing the address bar in Chrome, Safari, and Firefox is all the same, but finding the keyboard shortcut to focus the address bar is often difficult. In this blog post, I demonstrate the keyboard shortcut to focus the address bar in Chrome, Safari, and Firefox on Mac OS X and Windows.| Seth Vargo
Chef has long supported Ruby 1.8.7 and REE, even beyond the announced EOL periods from the Ruby maintainers. The continued support for Ruby 1.8 has been a burden for cookbook developers who want to use the new Ruby 1.9 features, but must retain support for Ruby 1.8.| Seth Vargo
I recently delivered one of my favorite talks - Living with OCD at [BACON 2014](http://devslovebacon.com/). This talk covers my OCD tendencies as well as how I cope with them.| Seth Vargo
I was invited by the Carnegie Mellon Information Systems Department to speak about DevOps. These are the slides from that talk.| Seth Vargo
Originally given at ChefConf 2014, this talk simply titled Chef Sugar covers the who, what, when, where, and why for Chef Sugar.| Seth Vargo
If Faraday is unable to connect to a server, it throws a really nasty error. I whipped up a tiny middleware to handle this error.| Seth Vargo
Optimizing for the important things is one of my serious lightning talks. Originally given at Ignite Pittsburgh, this 5-minute motivational talk has been given in many cities including San Francisco and Portland.| Seth Vargo
Fletcher Nichol discusses what infrastructure as code means to a developer at DevOps Days: Portland.| Seth Vargo
Ruby 2.0 is no longer a work in progress! Ruby 2.0 Release Candidate 1 was released today! Here's how to get it!| Seth Vargo
Ruby 2.0 is still a work in progress, but it's already at preview 2. If you're looking to play with it, here are some steps to install Ruby 2.0 Preview 2 on Mac OSX Mountain Lion (and older OSX versions)| Seth Vargo
Automating the creation of servers which require confirmation of an SSH known host can be painful. This blog post details the steps required to set an SSH known host using a Chef LWRP.| Seth Vargo
Cancan ability.rb files can become cumbersome to track different resources and roles inside a Rails application. This post details a new, object-oriented approach to creating CanCan ability files.| Seth Vargo
960 used to be hard. I just did it in like 10 minutes!| Seth Vargo
Today the most iconic leader of our time passed away. He challenged everything, always striving for new and innovative ways to change the world. He believed strongly that he could change the world with technology. I feel confidently that he did.| Seth Vargo
This post details how to unhide hidden `~/Library` in OSX Mountain Lion.| Seth Vargo
Not only has Apple taken us a few steps back in terms of the operating system, but they've also broken my favorite memory-leaking image-manipulation tool - ImageMagick!| Seth Vargo
Are you annoyed that you need to wait almost 3 seconds for the stupid Apple Mail animation to complete when replying/forwarding a message? Thankfully you can turn off that behavior with a little command line...| Seth Vargo
A few days ago, I wrote Powify) - a simple gem for managing 37 Signal's POW.| Seth Vargo
Have you ever wanted to see the resulting SQL of a query in Rails console? Well, unfortunately there's not really an 'easy' way to do this, other than hacking the console, so here we go.| Seth Vargo
Go 1.21 has some awesome new functionality that improves the developer experience and performance.| Seth Vargo
There is no need to pay for a link shortening service when you can easily run your own in Rails!| Seth Vargo
Remember the good old days of PHP? Mastering a redirect was nearly impossible without complicated PHP code or writing a server instruction (`.htaccess`). Let's take a minute to examine the past and present, and then compare and contrast some of the advantages and disadvantages of each.| Seth Vargo
Information is raw data - it's unprocessed, unfiltered, and often uninteresting. More specifically, information is often the collection or aggregation of raw data. It often answers questions that begin with which, what, or where. Which company paid the highest dividend on stocks in 2010? Where is the most densely populated African American population in the United States?| Seth Vargo
The cost of producing a physical newspaper is significantly higher than providing that same information digitally. News produced digitally is available to anyone, especially if placed on the Internet. Various online news providers can cover their costs entirely through advertising. Others charge a monthly subscription fee; that fee, however, is often a fraction of a monthly newspaper subscription.| Seth Vargo
Time is money. We often hear this phrase in a metaphorical sense, but what if it were actually true? What if time could be considered a medium of exchange just like the US Dollar, The Yen, or the Euro? Throughout this thought paper, we will explore why time is an excellent medium for exchange in information markets.| Seth Vargo
Hundreds of years ago, humans were required to memorize vast quantities of information. This is why stories and legends were often converted to rhymes or rhythms so they could be easily remembered. With the advent of written communication, the necessity to store superfluous volumes of information became obsolete.| Seth Vargo
Connectors save time. Rarely will a connector know the answer to an organization's question, but he or she will always know where to find the answer. Librarians are an excellent example of this principle - they do not know all the information of every book in their library, but they know where to find every book.| Seth Vargo
I'm honestly sick of the discrepancies that exist between versioning. As such, I'm proposing a universal versioning scheme with actual definitions that are easy to understand and follow.| Seth Vargo
Working on Envelope lately, I realized the need for custom form helpers. We use Twitter Bootstrap for the form styles and layout, but the markup is just absurd. 5-6 lines of code for a single form element is a bid absurd, in my opinion.| Seth Vargo
In Ruby, we can pass blocks as directly as variables using `&`. This allows us to transform really simple map operations like this...| Seth Vargo
If you've been working with Chef in your organization for awhile, you've probably accumulated a bunch of cookbooks in a giant repository. With great tools like Berkshelf out there, it's become customary to rely on external community cookbooks, git repositories, and your own Chef Server for cookbooks. Essentially cookbooks have been extracted as a first-class object.| Seth Vargo
With many popular websites providing two factor authentication, why shouldn't you add two-factor authentication to SSH? Public-key, Private-key encryption is generally considered to be very secure, but why not take an extra step?| Seth Vargo
Let's talk about testing. Testing is fun, it's awesome, and if you want to be agile, it's a necessity. But chances are, you're doing it wrong. Before we dive into Chef, let's look at a small Ruby example. Consider a class writes a downloads an HTML page from a website and writes the contents to a file:| Seth Vargo
I spoke at Chef Summit a few months ago and received a lot of questions about ChefSpec. It's very difficult to demonstrate the value in a Unit test when everyone is thinking at a higher level (acceptance testing).| Seth Vargo
Create customizable, extensible OmniAuth authentication and policy-based authorization easily using this object-oriented approach and examples.| Seth Vargo
Amazon Opsworks supplies its users with a nice collection of starter cookbooks on GitHub. Berkshelf prefers users treat each cookbook as its own software project, but for Opsworks users, that is not an option. Let me demonstrate a few ways you can use Berkshelf in tandem with Amazon Opsworks.| Seth Vargo
A few months ago, I was having a discussion with some colleagues internally and CHEF-494 came up. In short, the ticket was created by Seth Chisamore and proposed creating a core cookbook that included some useful primitives for common patterns...| Seth Vargo
The Berkshelf Berksfile is often viewed as a black box, but it is actually a Ruby-interpreted DSL. The power of Ruby is at your fingertips! Learn a few tips and tricks that can increase your Berkshelf productivity.| Seth Vargo
As the cookbook wrapper pattern becomes more prevalent, the need to change resources in a wrapped cookbook becomes more apparent. This post describes how to search for a Chef resource and tweak its attributes from another recipe.| Seth Vargo
Installing gems with Chef is relatively painless. Most of the time, you can use the gem_package resource, which behaves very similarly to the native package resource...| Seth Vargo
The wait is over! Chef recipe code coverage is now in ChefSpec! Easily find which resources have not been touched and generate a comprehensive coverage report at the end of each run.| Seth Vargo
This post discusses the future of Berkshelf and the Vagrant Berkshelf plugin.| Seth Vargo
Since the initial release of Chef Sugar, I thought it was done. Turns out - I was wrong. In working with Chef on a daily basis, I found a continued need to add more sugars. I am happy to announce Chef Sugar v1.2.0 has hit the market and includes some of the freshest new produce for consumption.| Seth Vargo
Introducing Chef cookbook badges to the Chef ecosystem!| Seth Vargo
There are many ways to work with Berkshelf. In this post, I discuss the Berkshelf workflow of the Releasing Engineering team at Chef with Berkshelf, Test Kitchen, GitHub, and a Chef Server.| Seth Vargo
I recently experienced one of my most negative interactions with the humans of StackOverflow. I try not to rant or rave on my blog as much as possible, but I simply cannot let this go.| Seth Vargo
Writing functional tests for a piece of software, like git, which generates a unique SHA based on a number of factors, is often incredibly difficult. This post demonstrates an easy way to unit and functional test your git-based Ruby applications and tools.| Seth Vargo
If you have ever had a Chef Client run fail with a mysterious Authentication Failed error after a few minutes of execution, then this post is for you! Because of the way the Chef Client loads resources, it is possible for authentication headers to timeout midway through a run. Thankfully there is an easy solution.| Seth Vargo
Ruby is an excellent programming language for creating and managing custom DSLs, but how can you securely evaluate a DSL while explicitly controlling the methods exposed to the user? Our good friends instance_eval and instance_exec are great, but they expose all methods - public, protected, and private - to the user. Even worse, they expose the ability to accidentally or intentionally alter the behavior of the system! The cleanroom pattern is a safer, more convenient, Ruby-like approach for l...| Seth Vargo
After almost two years at Opscode/Chef, I am leaving. Friday (August 29, 2014) is my last day as an employee of Chef Software. Until further notice, I am taking a software engineering sabbatical.| Seth Vargo
This post will detail the steps for getting an A+ SSL rating using Nginx with intermediate certificates and TLS protocols. This guide will detail creating the certificates, choosing protocols, choosing ciphers, enabling OSCP stapling, and more.| Seth Vargo
Although not officially coined until 2009, DevOps ideals have [been explicitly discussed since at least 2006. Recently, however, the term DevOps has gained increasing popularity across a variety of fields and industries. DevOps is not a development methodology or technology; DevOps is an ideology. It is a way to facilitate organizational prosperity and growth while increasing each individual employee's happiness along the way. As DevOps has gained in prominence, a gap has been created between...| Seth Vargo
Vagrant is an excellent tool for Rails development, but you might not be getting the best performance from your Virtual Machine. In this post I will detail some tips and tricks that can drastically improve your development experience.| Seth Vargo
Carnegie Mellon is complacent in facilitating an incredibly stressful environment propagated by a culture that encourages overworking, overcommitting, and overexerting. There is no such thing as a 40-hour week.| Seth Vargo
Authoring client libraries is hard, but testing and preventing regressions can be even more challenging. This post discusses using RSpec example filtering to test different upstream versions seamlessly using metadata.| Seth Vargo
For some applications, the default Dock and file icon can be bland, so you might want to spice it up a bit! Changing icons by hand is a multi-click, copy-and-paste operation, but this post will show you how to automate it!| Seth Vargo
I travel a lot. I spend a lot of nights in hotel rooms, a lot of miles in rental cars, and, mostly importantly, a lot of time on airplanes. As I approach my millionth mile this year, it feels appropriate to compile a list my 10 commandments of air travel.| Seth Vargo
Serverless applications and cloud functions often need to communicate with an upstream API or service. This post describes common patterns and approaches for managing secrets in serverless such as encrypted environment variables, IAM, and Google Cloud Storage.| Seth Vargo
Terraform is a popular tool for infrastructure as code, but what if that infrastructure is serverless? In this post, you will learn how to use Terraform to configure a Google Cloud Run service.| Seth Vargo
This post explores how to code and publish GitHub Actions using Docker so you can write in any language - including Go.| Seth Vargo
This post explores how to format Java source files using google-java-format in Visual Studio Code.| Seth Vargo
Terraform is a popular tool for infrastructure as code, but what if your infrastructure needs secrets like API keys or credentials? In this post, you will learn how to use Terraform to access Google Secret Manager secrets.| Seth Vargo
Terraform is a popular tool for infrastructure as code, but what if your infrastructure needs to create or delete secrets like API keys or credentials? In this post, you will learn how to use Terraform to manage secrets in Google Secret Manager.| Seth Vargo
Google Cloud can automatically obtain and renew Domain Validation (DV) certificates for your domains, but adding and removing new domains could cause downtime. This post explores how to add or remove domains with zero downtime.| Seth Vargo
Getting Sirius to cancel the free subscription that came with my car was one of the most painful experiences I've endured.| Seth Vargo
Audit logs are very useful for retroactive analysis following a security incident, but what if they could also be used to proactively alert before a security incident occurs?| Seth Vargo
Go is one of my favorite programming languages, but it is still far from perfect.| Seth Vargo