From Product Management to Product Marketing

I start 2018 in a new role at Chef, as director of product marketing. Five years is a long time to work at one software company, never mind a startup. I find I have to constantly reinvent myself in order to not get bored or complacent.

Prior to coming into product marketing, I’ve worked at Chef in professional services, engineering and product management. Now is the time for me to not only help with sales enablement, analyst and press relations, customer-facing materials, and so on, but to also learn how to build a high-quality sales pipeline. As someone who doesn’t hold an MBA but someday might want to start a company, these are critical skills for me to develop. Continue reading

An Elegy for Etsy

One of the biggest news events in 2017 for those of us working in devops was hearing about abrupt changes at Etsy. In April, institutional shareholders, disappointed by Etsy’s low share price, ousted CEO Chad Dickerson, and under new CEO Josh Silverman, proceeded to slash the workforce and reduce costs. Many talented engineers that I happen to know personally as well as CTO John Allspaw himself were either fired or saw the writing on the wall and made for the exits.

These events were discouraging on a number of levels. First, Etsy’s world-class engineering and web operations team scattered to the winds. Allspaw and many others contributed a great deal to the discipline of web operations by applying lessons learned from improving reliability in other fields, such as transportation engineering and nuclear safety. More importantly, though, is that Etsy’s very existence shone a light on whether it’s possible to build a socially-responsible company within the constructs of the current venture capital, and by extension, capitalist system. What is the place of the social democratic entrepreneur within these confines? Continue reading

Back to Blogging Again

I was recently re-reading Steve Yegge’s You Should Write Blogs post from 2005, and started thinking about why I don’t blog anymore. I used to be a pretty prolific blogger from before the days when these things were known as “blogs”. The archives here, in fact, go back to 2003, and although there is probably some pretty cringe-worthy content that far back, I’ve never deleted a single post.

So why did I stop? It comes down to a simple reason. As I’ve moved in my career from engineering roles into leadership roles, the topics I would consider blogging about have moved from systems and software to ones of organizational dynamics, individual behavior, and management’s role in facilitating the same. To properly write about these topics would require me to write about the actions of real people with whom I work. Although I would never name them, those folks would surely see themselves in my posts, and I’m afraid of being perceived as being mean when discussing everyone’s foibles. As my friend and colleague Adam Leff said, “No matter how much we collectively say we value honest opinion and transparency, we’re all still humans with brains capable of remembering what others say of us.” This makes it very difficult to talk about challenging topics openly.

Writing is especially tough in these partisan times. Fueled by hair-trigger social media, we are all too ready to jump to conclusions about the motivations of writers and ascribe specific intent to the choice of a particular word or placement thereof. We accuse people of “sub-tweeting” when they express their observations on Twitter, or label them as “toxic” on the basis of a small number of interactions. The halcyon days of 2005 Steve Yegge, where a blogger could just publish lightly-edited thoughts without suffering severe repercussions, seem long past.

I have, however, decided to return to blogging regularly. I will sometimes be writing about difficult issues, with the objective of sharing my experiences so that we can all learn and improve together. Yet I intend to treat everyone fairly and to be kind rather than “nice”. If you see yourself in these pages please try to bear this in mind. And since I have always spent almost as much time editing my posts as writing them in the first place, you can be confident that I’ve weighed all perspectives and I’m not just shooting my mouth off after having some drinks.

With that, onward. Next up this month will be a piece I’m working on in reaction to the New York Times’s recent article on what went wrong at Etsy. I hope you’ll read it.

Some thoughts on DACA

Both my wife and I are (prospective) immigrants to the USA, so I have a few thoughts on the matter of President Trump’s ending of DACA, the Deferred Action for Childhood Arrivals program. At the risk of the implications of wading into a debate that, like most modern political debates in this country, seems to lack nuance, I would like to share them with you.

We are economic migrants, here because we find better opportunities than in our country of origin, Canada, so we have this in common with Dreamers. At the same time, we are both obviously immigrants of a privileged class, and are not fleeing oppression, war, famine, or any of the other legitimate reasons that might spur individuals and their families to sneak across the border into America. Nothing I’m about to say implies that I lack compassion for these folks or their circumstances, either before or after they arrive in this country.

There is no easy answer to solving the problem of illegal immigration to America, short of Congress actually passing legislation to rectify the situation. (I’m not a big fan of the euphemism “undocumented migration”, by the way, but evidently even the terminology we use is politically fraught.) If you believe in more open borders and compassionate immigration policy, you might be a DACA supporter simply because of the downstream effects, which, no doubt, are good for both Dreamers and the American economy.

But the way in which DACA was enacted is bad for the republic. Allowing it to stand would signal that it’s acceptable for the executive branch to enact policies instructing law enforcement to ignore any statute which is on the books. This creates a terrible precedent. Suppose President Trump would like to exempt certain elements of his white supremacist base from being prosecuted for violent crimes. Should he be allowed to create a “DAWS” program — Deferred Action for White Supremacists — that suspends prosecution of certain felonies in defiance of the laws that are on the books?

While I completely agree that the motivations of Trump in ending DACA are odious, and pander to an intolerant electoral base, I believe that DACA as an executive order cannot stand. So it had to go, sooner rather than later.

Smart cities need smart government

Several weeks ago I had the opportunity to attend the Smart Cities NYC conference. Urban planning, sustainable design, cities, transportation systems: these obviously have nothing to do with Chef, but have been interest areas of mine for a very long time. I came away with some insights, particularly about the relative roles of government and private sector, and one thing stuck with me. If we don’t reform the civil service for the wired cities of the future, we risk turning over the fabric of our society to private corporations — to the extent that isn’t already happening. Continue reading

When Is Dogfooding Appropriate?

In technology, we often use the term “dogfooding” (or “eating your own dog food”) to mean that we should use the products we make, in order to develop empathy for our customers and expedite fixing problems. In other words, we fix the pain we inflict on customers because we are inflicting it upon ourselves. This concept has been described by many writers; if you’re not yet familiar with the concept, I invite you to check out the Wikipedia page. I want to spend some time now talking about when dogfooding is appropriate and when it is not. Continue reading

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

Creating a Local ISO Storage Repository in XenServer 7.0.0

I recently installed XenServer 7.0.0 to check out its capabilities around unikernels & running native Docker containers. Unfortunately, one major limitation — at least for lab use — is that XenServer does not let the administrator create a storage repository (SR in XenServer terms) right on the machine, to store ISO images for the various operating systems you’re going to install. Normally it requires that your ISO SR live on either a CIFS or NFS share, which is impractical for the home hobbyist who doesn’t want to maintain yet another piece of infrastructure.

Fortunately, there’s a way you can hack a local ISO SR onto the server. The directions have changed a little bit for XenServer 7.0.0, since by default it sets the LVM groups’ metadata as read-only, which inhibits you from adding a volume group to store ISOs. So, in between steps 1 and 2 on the instructions page, you need to edit /etc/lvm/lvm.conf and change the metadata_read_only setting from 1 to 0. Then, after performing step 6, change it back.

Redux: Raspberry Pi as Cheap AirTunes Server

A couple of years ago I set up a Raspberry Pi as a cheap AirTunes server using Shairport. In the intervening time, I’ve also noticed a couple of defects with Shairport: high network utilization causes playback to be interrupted, it crashes occasionally, and the volume control synchronization is somewhat laggy.

Unfortunately, the Shairport project has been abandoned in the interim, so I started looking for a fork that I could use instead. Enter Shairport Sync, which is actively maintained and fixes a lot of these problems. I decided to spend a couple hours packaging it properly for Raspbian and publish packages.

If you’re running Raspbian and want to use Shairport Sync, just add the following source to your /etc/apt/sources.list:

deb https://dl.bintray.com/juliandunn/deb wheezy main

and type sudo apt-get install shairport-sync. It should start up automatically and then you’ll be able to play to a source named “Shairport Sync on [hostname of Pi]” from your iTunes. Happy listening!