I’ve just gotten back from the Apollo 11 movie, which I saw in IMAX. The film is a documentary that is all about Apollo 11 and steps you through in a very linear view the progress of the Apollo 11 mission. The story is told without narration or interviews, and features many segments that are shown in real time. Some of the things that I think are so incredible about this film are that it shows the people behind the mission.
Not in Prod - Or - Why I Won't Put a Compiler on a Webserver
I was recently asked by a few different people about why I have such strong feelings about Python in production on Void’s infrastructure. I’ve also been asked at work about why I’m unhappy with using Ansible even though it ticks all the boxes for being a pretty good host management tool. I figure its high time to look at why I care about languages in production. So at first this doesn’t seem like it should matter.
What Is Production Grade?
I recently decided to try the Caddy webserver project’s implementation of a webserver written in Golang. It had many interesting things going for it, including automagic certificate renewal via ACME and Let’s Encrypt; “plugins” written in a sane language; dramatically simplified configuration; and perhaps in one of the most boastful statements I’ve seen of any software recently, it claims to be “Production-Ready” (features page, right hand side). Given that it took me the better part of a day to get a functional Caddy role for Ansible, I really question this claim.
As anyone who’s spent more than 10 minutes around me knows, I’m fascinated by software and by the development and management of the infrastructure that surrounds it. While I’m usually more interested in the machinery and software that surrounds projects I work on, the human machinery is also fascinating, especially when it breaks down. When I joined the Void project I started out managing the Kansas City mirror, and configuring it with Ansible and other tools.
Faster Than Light - Ansible Mitogen
Ansible is a configuration and systems management tool from RedHat. The general idea is that you express in Ansible the state you would like the machine to be in, and then when you run Ansible against a host the state will be applied. For example, you don’t say you want to restart a service, you define its state as “restarted” and then Ansible will ensure that this happens at some point.