Deploying code for Fun and Profit
The Big Red Button was mounted on Casetext's office wall. When pressed, it deploys the latest changes to production.
The button is connected to GPIO on a Raspberry Pi. The lights around it are a small strip of addressable RGB LEDs (LPD8806 PWM chips connected via SPI).
When code is ready to deploy (merged in to master
after PR review), the button lights up purple.
To start a deploy, a key is inserted in to the button and turned. This initializes the deployment. The lights blink green and yellow when ready.
The button is then pressed, starting a Heroku deploy.
(If necessary, deploys could still be started—with much less excitement—from the command line. The Button is basically a dramatic git push
.)
When the deploy is complete, a summary of changes (issue/PR titles) are published to the #releases
Slack channel by 🤖 DeployBot, serving as an automatic internal changelog. The engineering team would add additional color when necessary.
Impact
This thing may seem a little silly at first, but this button had an outsized impact on company culture.
When a new feature's work was complete and merged, there would be an almost ceremonial Pressing of The Button. The person who put the most work in to the feature would have the honor of pressing the (literal) button to release the feature to the world. It would be an occasion for the whole company to celebrate an accomplishment.
Between the Slack bot and the physical act of someone getting up to press the button, it helped to keep everyone in the loop about new changes. The sales and support teams would get particularly excited when someone wandered over to the button — “oh what's going out?”
It also served as a recruiting tool to help the company stand out from the crowd. The above video was on our careers page, and I heard frequently from engineering candidates, “that button is so cool!”