Beyond ‘Punk Rock Git’ in Eleven Steps

Punk Rock Git? I’ve spent the last couple of years teaching Git, mostly to users that I like to call ‘punk rock’ Git users. They have three commands, and they can get by with them. They’re not terribly interested in Merkle trees or SHA-1 hashes, but are interested in what a ‘detached HEAD‘ is, or understanding … Read more

Sandboxing Docker with Google’s gVisor

  gVisor Someone pointed me at this press release from Google announcing a Docker / container sandbox for Linux. I was intrigued enough to write a ‘quick look’ article on it here What Does That Mean (tl;dr)? It’s a way of achieving: VM-like isolation while using containers for app deployment and achieving multi-tenancy, and SELinux/Apparmor/Seccomp security … Read more

Unprivileged Docker Builds – A Proof of Concept

I work at a very ‘locked-down’ enterprise, where direct access to Docker is effectively verboten. This, fundamentally, is because access to Docker is effectively giving users root. From Docker’s own pages: First of all, only trusted users should be allowed to control your Docker daemon. Most home users get permissions in their account (at least in … Read more

Learn Git Rebase Interactively

If you’ve ever wondered what a rebase is, then you could try and read up on it and understand it from the man pages. Many people struggle with this, and I was among them. The man pages have been improved lately, but are still daunting to the casual user. A more effective way to learn … Read more

Terminal Perf Graphs in one Command

Sysstat and Graphs If you have the sysstat package set up on your server, then you likely already know you can get historical CPU performance information with sar like this: $ sar | head Linux 4.15.0-10-generic (cage) 27/03/18 _x86_64_ (4 CPU) 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:01:01 all 1.79 0.00 21.70 0.03 … Read more

git log – the Good Parts

If you’re managing a complex git codebase with multiple developers, then you may well be using a tool like GitHub or BitBucket to delve into the history and figure out branch and merge issues. These GUIs are great for providing a nice user interface for managing pull requests and simple histories and the like, but … Read more

Five Key Git Concepts Explained the Hard Way

If you’ve ever read a git man page, you’ll know that trying to understand git can be an intimidating experience. There’s even a git man page generator that produces joke git pages: If <upstream> is not specified, the upstream configured in branch.<name>.remote and branch.<name>.merge options will be used (see git-config(1) for details) and the –fork-point option … Read more

Create Your Own Git Diagrams

  Ever wondered how to create your own git diagrams? You know, the ones that look like this? I’ve created a Docker image to allow you to easily create your own. $ docker pull imiell/gitdags The git repo is here. How To Run The examples folder is a good place to start. A good way to … Read more

Five Things I Did to Change a Team’s Culture

Culture – Be Specific! People often talk about culture being the barrier to adoption of DevOps, but they are rarely specific about this. This was succinctly put by Charity Majors here: What to Do? Here I discuss a few things I did to try and change a culture a few years ago in a demoralised and dysfunctional … Read more

Centralise Your Bash History

Why? Have you ever run a command on one of your hosts and then wanted to retrieve it later? Then couldn’t remember where you ran it, or it’s lost from your history? This happens to me all the time. The other day I was hunting for a command I was convinced I’d run, but wasn’t … Read more