Five Things I Wish I’d Known About Git

Git can be utterly bewildering to someone who uses it casually, or is not interested in things like directed acyclic graphs. For such users, the best thing you can do is buy my book (free sample available), which guides you through the usage of git in a practical way that embeds the concepts ready for daily … Read more

Eleven bash Tips You Might Want to Know

Here are some tips that might help you be more productive with bash. 1) ^x^y^ A gem I use all the time. Ever typed anything like this? $ grp somestring somefile -bash: grp: command not found Sigh. Hit ‘up’, ‘left’ until at the ‘p’ and type ‘e’ and return. Or do this: $ ^rp^rep^ grep … Read more

Learn Bash Debugging Techniques the Hard Way

In this article I’m going to give you a hands-on introduction to standard bash debugging techniques. In addition, you’ll learn some techniques to make your bash scripts more robust to failure. This article uses the hard way method, which emphasises hands-on-keyboard work to embed the learning. You’re going to have to think and type to … Read more

Why Are Enterprises So Slow?

tl;dr In this article I want to explain a few things about enterprises and their software, based on my experiences, and also describe what things need to be in place to make change  come about. Have you ever found yourself saying things like: Why are enterprises so slow? How do they decide what to buy? … Read more

Anatomy of a Linux DNS Lookup – Part IV

In Anatomy of a Linux DNS Lookup – Part I, Part II, and Part III I covered: nsswitch /etc/hosts /etc/resolv.conf ping vs host style lookups systemd and its networking service ifup and ifdown dhclient resolvconf NetworkManager dnsmasq In Part IV I’ll cover how containers do DNS. Yes, that’s not simple either… Other posts in the series: Anatomy of a Linux DNS Lookup – Part I Anatomy of … Read more

Anatomy of a Linux DNS Lookup – Part III

In Anatomy of a Linux DNS Lookup – Part I I covered: nsswitch /etc/hosts /etc/resolv.conf ping vs host style lookups and in Anatomy of a Linux DNS Lookup – Part II I covered: systemd and its networking service ifup and ifdown dhclient resolvconf and ended up here: A (roughly) accurate map of what’s going on Unfortunately, that’s not the end of the story. There’s still more things … Read more

Anatomy of a Linux DNS Lookup – Part II

In Anatomy of a Linux DNS Lookup – Part I I covered: nsswitch /etc/hosts /etc/resolv.conf ping vs host style lookups and determined that most programs reference /etc/resolv.conf along the way to figuring out which DNS server to look up. That stuff was more general linux behaviour (*) but here we move firmly into distribution-specific territory. I use ubuntu, but a … Read more

Anatomy of a Linux DNS Lookup – Part I

Since I work a lot with clustered VMs, I’ve ended up spending a lot of time trying to figure out how DNS lookups work. I applied ‘fixes’ to my problems from StackOverflow without really understanding why they work (or don’t work) for some time. Eventually I got fed up with this and decided to figure … Read more

A Docker Image in Less Than 1000 Bytes

Here it is (base64-encoded): H4sICIa2A1sCA2IA7Vrrbts2FFYL7M9+7QUGGNyfDYhtkuJFFLAhWZOhBYJmaLMOWBAEFC+xVlkyJLpYEBjdY+0l+k6jfGvqtkEWp2qD8TMg8vAqnsNzDg9lQhhmEjHDhY4zgWJBBUQJ5ZnCGAubMUQMyhJqoRRMJxYbo7Q2CedYxlQO/myqMroeEEHICIngApspxohEKI4h5DHmGEUQQw7jqAejDjBtnKz9q2w7zubi7gkugazVKHdGuWltQArkWDMCdoCqSpufg/QSPK4aV8pxW+nL96uxzMu39G+NqRe5PeekGj13Oi9BamXRmCtl1dS9X2jqel147C7W+aOJKd8dZ04dlcqsSw7KVyA9Ab/uHT/+cTht6mFRKVkMmywv0yv0mnxbMc8sSP8Apzvg0ViDtJwWxQ54Mpbny5W9qIrp2DSrmt+r+mVenu/ny+UelK6+mFR56VYtjsqfp3mxHupQZqZYdp/NGeo850x99r9j7QloyWEz8kvpK//47vuymvzQ29vf79m8MKnIaIa8bUmwRdByw6TKREIoIzE3xBrjrY7MGDUilomQ3GrNrFaIKqSZ4lkvL3tD12sn/IQCrI10xtcC7C1kH9I+xseQpYilRAwoZ5AI9IcfWFfqpRfzK1M3eeUZDRAfQDGAfc/jHTDKG1fVXiInlzcfctnwLPP9Vszs9VXvUzFy5jlZV5WzTbtN3cWkZWkhL/yS2gXm1p7lumkl24wkpv51FbYcU0EZy7SV0ucEZowkiCjvLbAVikCaGUqhyjT0c0Lj/YrElmmSWANOZ7MooHPwRCiLRaJEzBXKFGTCy49lUHNKjEigVdD6H4uTzPj9wzDCSawU0TQT2ujhjVwjgZzSj/n/eX7D/xPm/T8N/v/Ll/+Lg2fPnxw93eL85xFvyB9Rn4TzXwdAAxiMYLD/t9f/7eM/xDja1P+YBf3vKP7L2+PnttsA/IfjcQiE7nkgdH18Ey4O7pjdH7ygmX0p9n8eFA5aG3pb+0/eP/9jzFmw/13AdTBHK3/OPx7/Ic4X8qecQ9K244QG/98JXh8c/vLwwYM1/TD6KWqpv6LdOb37gT67URKterTpVxu1V9PXq3lW1d8skn++9Y83f4cDeEBAQMBnwliWuTWNu8l33G38/3X3fzGk79wFQ4S4Lwr+vwOcXIJHy4ANkLv4L4APcJ6ZSXUsz+efh1xaSOf3VxstHS6+H/nSu4s6wOns9OugxrdG7WXV5K6qc9NEn0n/ESab+s9o0P+O7v9ce1WzVNI7uAiczYI6BgQEBNwD/AvqV/+XACoAAA== How I Got There A colleague of mine showed me a Docker image he was using to test Kubernetes clusters. It did nothing, just starts up as a pod and sits there until you kill it. ‘Look, it’s only 700kb! Really quick to download!’ This got me wondering what the … Read more