Designing Great Command-Line User Experiences

Back in June, Chef launched Habitat, the product that I’ve been working full-time on since fall 2015. Habitat is a system for building and running applications in a way that makes them portable across a wide range of infrastructure platforms, anything from bare metal and virtual machines all the way up to PaaS and containers. Along the way, you get clustering, secrets management, service discovery, runtime configuration injection, and a whole host of other features for free. You can learn more about Habitat at habitat.sh.

Today, I’d like to spend a moment and talk about Habitat’s user experience design, and specifically, how we put a great deal of thought into making the command-line UX awesome. Continue reading

Unlimited vacation. Minimum vacation. Aren’t we right back at the beginning?

South Beach. CC-BY-NC, by Thomas Hawk - https://www.flickr.com/photos/thomashawk

South Beach. CC-BY-NC, by Thomas Hawk – https://www.flickr.com/photos/thomashawk

A couple of weeks ago, Mathias Meyer wrote an article entitled “From Open (Unlimited) to Minimum Vacation Policy“, detailing how his company, Travis CI, has moved from away from an “unlimited” vacation policy. Mathias found that the dangers of unlimited vacation policies were coming true: Engineers weren’t taking any or enough vacation to avoid burning out. So, he decided to move Travis to a model where a minimum amount of vacation is required. Sounds great, but doesn’t it seem like we’re right back where we started? Isn’t this just a traditional vacation policy couched in different terms? And what was so bad about traditional vacation policies, anyway? Continue reading

Building the Data General Eclipse MV/8000, or, lessons from product development in the 70’s

A couple of weeks ago I finished reading Tracy Kidder’s 1981 Pulitzer Prize-winning book, The Soul of a New Machine, in which he followed Data General (DG) engineers around for over a year while they tried to pull a miracle minicomputer, codenamed “Eagle”, out of the company. The firm’s survival was on the line. They were being slaughtered by Digital Equipment Corporation’s VAX 11/780 and they needed a winner, badly.

DG’s “new machine” ultimately became the Eclipse MV/8000, a name that, like the CDC 6600, is nearly unrecognizable to anyone today besides old computer nerds like myself. In other words, it’s damn hard to build a company that lasts. Both DG and its main rival, DEC, are gone, shoved aside by the PC revolution and the march towards inexpensive, x86-based servers running Linux. And so if you work in technology, you probably feel (or should feel) an immense sense of urgency, because there is always a surplus of discontinuous innovations just around the corner to disrupt whatever you’re working on right this instant. And those disruptors will in turn be disrupted by others, and then by yet others… Continue reading

Good to Great: Pretty good, 13 years later.

This is another in a series of reviews on management & leadership books that I’m doing on the blog.

Last week I finally sat down and read Jim Collins’s Good to Great: Why Some Companies Make the Leap… and Others Don’t. Obviously, at Chef we’re trying to build a great company, and I thought this book would show us a way forward.

Good to Great was written in 2001, so you might be wondering why it’s taken me 13 years to crack it open. Well, quite honestly, I once had a co-worker and friend who was given this book upon starting a new job, and he scoffed at it. In retrospect, I think he did so because it was obvious that his employer was most definitely not on the path to greatness. The notion that handing out copies of a business book could fix their dysfunctional culture & failure to execute is laughable. It’s about as useful as giving anti-drug pamphlets to a meth user. In any case, I associated his mockery with the conclusion that the book is bad, which it most definitely is not. Continue reading

How to be CEO: Ben Horowitz’s “The Hard Thing about Hard Things”

This is the beginning of a continuing series of reviews about books on management and leadership. Think of it as a “papers we love” but for folks who have chosen to pursue a non-technical path in their engineering careers.

At some point I figure I’d like to be CEO of my own company. So it was with great interest that I picked up Ben Horowitz’s “The Hard Thing about Hard Things”, which is partly a memoir about his time running LoudCloud and Opsware, which he eventually sold to HP in 2007 for about $1.6 billion. Along with Marc Andreessen he then went on to found the well-known Silicon Valley venture capital firm Andreessen Horowitz, which has invested in Facebook, Foursquare, GitHub, Pinterest and Twitter, among others.

From this CV it sounds like he has been wildly successful as an entrepreneur and CEO. But like all Hollywood stories (and Wikipedia articles) it glosses over the twists and turns in his career that, for instance, almost saw LoudCloud go bankrupt several times. (He also pivoted the company from being a cloud services and hosting company to a product company, nearly bankrupting it again.) Horowitz claims that many management books out there only give you advice about the happy path, but don’t teach you how to deal with adversity. That’s where the book comes in: no-nonsense advice about the many difficult situations you’ll find yourself in as a CEO. Continue reading

Canada’s mobile network: hostile to visitors

Cutting edge phones in Canada. Just kidding. (CC BY-NC 2.0, Flickr user bec.w)

Cutting edge phones in Canada. Just kidding. (CC BY-NC 2.0, Flickr user bec.w)

Recently my wife and I returned to Toronto for our Christmas holidays. Though we haven’t lived in Canada for over two years, I remember the cellular plans being outrageously expensive compared to the United States or Europe. Since then, it appears they’ve gotten slightly better, but only for residents who have long-term contracts. Visitors, sadly, are out of luck.

Both of us own unlocked iPhone 4Ses, so I thought we could just waltz right into a carrier’s store, buy a SIM card, plunk down some money and get some data for the week. After all, this is what we did over in the United Kingdom in September. Each of us paid £10 for a SIM and got 1 GB of data. (Actually, they give the SIMs away for free. The £10 was just for usage.)

Astonishingly, there’s no such option in Canada. All the plans, even the so-called “prepaid” ones, are designed for long-term-residents. I was told by Virgin and Fido representatives that I’d need a Canadian billing address (!) and the only way to get service for a month would be to sign up and cancel within 30 days. Furthermore, the data rates are outrageous. Here’s what Fido is charging for Data Add-ons for a month:

fido-data-pay-per-use

$35 for 1 GB for a month? Are you kidding me? That’s almost the price of my entire cellular phone plan in the United States for a month!

As a last resort, I went to talk to a third-party reseller, the ones who represent multiple carriers. I told the rep what I wanted. He laughed, then said, sheepishly, “It’s not possible. Canada’s cellular phone companies don’t have pay-per-use data plans.” Then he told me to call Verizon and get a data roaming plan! “It’ll be easier that way,” he said.

If you want to see how good the pay-as-you-go plans are in the UK — and they really mean pay-as-you-go, as in you don’t need a billing address — go check out T-Mobile UK’s “SIM Card Only” page. Reading it again made me think: if Canada Post is saving all this money by killing off door-to-door mail delivery, why don’t they start a telco that’ll give Canada some real competition in cellular services?

Autoscaling Builds with Jenkins’ EC2 Plugin and Chef

One of my last projects at SecondMarket was to automate and rebuild the Jenkins infrastructure. We’d previously had a static setup in the NYC office with a build master and three slaves that ran all the time, but this handled developer check-in storms very poorly. For example, when developers were trying to make code cutoff for a feature, many builds would be queued for lack of available executors. But at other times, these agents would be completely idle. It made more sense to move the entire setup to the cloud and implement some kind of auto-scaling for Jenkins. Continue reading

When Application and Library Cookbooks Fail

Apologies in advance if you’re not interested in a post about the guts of Opscode Chef.

I recently started to adopt Bryan Berry’s application & library cookbook model as outlined in his excellent and funny blog post, "How to Write Reusable Chef Cookbooks, Gangnam Style". But I quickly ran into a blocker, because people are trying to solve problems using the compile phase and not the execute phase of Chef. Perhaps this calls into question the entire viability of compile-phase providers like chef_gem. Continue reading