Docker Details - dumb-init

If you don’t control the “init” process of docker then you are doing it wrong. But don’t worry there is an easy fix. Before I explain the solution, I should explain the issue. Almost every process you run in Linux will likely run at least 1 child process. And Linux expects that every parent will properly care for its children by propagating kernel signals like SIGTERM, and by cleaning up child zombie processes. If all else fails the Linux init process will do that on behalf of Linux and all is happy.

However, programmers generally don’t know the requirements of dealing with child processes, and linux clean up after itself so unless you already know what to do testing won’t show issues. The issue comes because Docker doesn’t provide an init process for the container, so your child processes will not get signals, zombies will be created, and eventually things will terminate uncleanly.

Read more

Managing base Docker Images

Docker is a great way to package your code such that you can be sure it will run on any machine that has docker installed. However, maintaining your docker containers and publishing them to docker hub can be a bit of a challenge. The following are two ways I do it.

Read more

Packer OVA

Recently I have started using Packer to build AMI images. It works like a champ, but then I tried to make VMWare images and it produced machine images, not machine exports. This makes the exports nearly useless. However, with a little post-processing magic this can be fixed.

Read more

Git Flow Simple

Gitflow is a great workflow to ensure you maintain constant ever increasing version numbers with enough room to fix mistakes. The downside is the slowness of deploying new features. GitFlowSimple is a simplified version which can be expanded to standard GitFlow when needed, but is less effort when deploying new features.

Read more

Story Points Done Wrong

  • “How many hours per Point?”
  • “How many days is a 3 point story?”
  • “Why can’t we just use hours?”

Ever said or heard something like that? If so…

To be honest Story Points are probably the trickiest part of Scrum largely because everyone “wants” them to be something that they are not. But once you understand them they are far more useful and accurate then any other form of estimation (that I have seen).

Read more

Forcing Factor

A forcing factor is any factor that forces you to make a choice. They are often thought of as bad because when you are forced to make a choice that choice is not likely going to be a good one.

“Check” in the game of chess is one such negative forcing factor. Global climate change is another. However, they can be used for good if you take control of them.

Read more

Hugo Blog Deployment

Hugo does a great job of separating out configuration, content, themes, and local overrides. Each getting their own file or directory. But it provides no deployment scripts.

For comparison, Octopress/Jekyll leaves it as an exercise for the developer to separate configuration, content, themes, and local overrides, but it provides a deployment script.

Using GitHub pages and a little bit of git wizardry and the deployment process is pretty easy.

Read more

New Hugo Blog

For those of you actually monitoring my site you will have noticed that I have not updated the site in quite some time. The reason is that I was unable to get OctoPress (my previous blog generator) to work on my upgraded computer.

I have switched to Hugo as my blog software and plan to start migrating the pages from the old blog. Please bear with me, and sorry if it screws up your RSS feeds.

Read more

Emacs Full-screen

On a Mac the short cut to put a window into full-screen mode is ctrl + cmd + f. Unfortunately this does not work directly for emacs. Here I will explain how I made it work.

Note: This is only applicable to windowed versions of Emacs!

Read more