After receiving a Rubik’s cube for free at KubeCon NA, I decided to teach my six year old daughter how to solve them, but first, I had to teach myself. It took approximately 2 hours of watching Youtube videos to learn. Around half of that time was spent finding a tutorial that didn’t suck. I taught my daughter over the course of a few evenings. She picked it up like a baws and impresses the…
I attend too many a lot of demos. Over the years, I’ve observed that engineers have a tendency to jump into complex solutions without providing sufficient context first. When confronted with this approach, audiences often disengage, especially people leaders who can be several steps removed from technical implementation details. It’s frustrating to see a great solution not get the…
I recently read this remarkable anecdote about Isaac Newton in the refereshingly irreverent A Short History of Nearly Everything by Bill Bryson: As a student, frustrated by the limitations of conventional mathematics, he [Newton] invented an entirely new form, the calculus, but then told no one about it for twenty-seven years. In like manner, he did work in optics that transformed our…
…be a tail unto lions, and not a head unto foxes. – Ethics of our Fathers, 4:15 I heard a remarkable anecdote on a podcast the other day. Admired for her beauty, Jennie Jerome (Winston Churchill’s mother) glided through the loftiest social circles in Great Britain. Once, on consecutive nights, Ms. Jerome dined with England’s premier politicians: Prime Minister Benjamin Disraeli and…
The goal of this article is to convey an approach to solving data structure and algorithm problems. My hope is that it helps you in a situation where you might otherwise draw a blank. I want to start by stating an obvious but important truth: your brain is amazing. You are constantly and rapidly solving unimaginably complex problems that make even the most challenging FAANG whiteboard interview…
The problem I was recently working on a Golang API that imported the Kubernetes client. I implemented Skaffold to streamline the local development cycle, but rebuilds after source code changes consistently took 50 seconds, no matter how small the change. That’s unacceptably long, in my opinion, so I set about the task of improving the development cycle by optimizing the Docker build time.…
The problem https://leetcode.com/problems/coin-change/ You are given coins of different denominations and a total amount of money. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1. Explanatory matrix Given the following input: coins = 1, 2, 5 amount = 11 We can construct…
Introduction I’ve been thinking about starting an ELI5 (Explain It Like I’m Five) Computer Science blog for a while now. I enjoy simplifying obscure, abstract concepts and making them intuitive and accessible. A wise friend once told me that complexity is easy; simplicity is hard. I hope this post succeeds in that goal. If not, I can always stick to my day job. The Kubernetes…
I recently wrote a CLI using Cobra, a widely adopted CLI framework for Golang that’s used in Kubectl, Docker, Terraform, Hugo, and other industry-standard CLIs. I wanted to use Logrus, a highly regarded structured logging framework for Go. I wanted informative, colorized, leveled logs, but I also wanted to be able to log simple, user-facing output without all of the bells and whistles. I was…
Explainshell I stumbled into this brilliant tidbit in a post by LostCharacter on ycombinator. Here’s the actual code: explain () { if [ '$#' -eq 0 ] then while read -p 'Command: ' cmd do curl -Gs 'https://www.mankier.com/api/explain/?cols='$(tput cols) --data-urlencode 'q=$cmd' done echo 'Bye!' elif [ '$#' -eq 1 ] then curl -Gs 'https://www.mankier.com/api/explain/?cols='$(tput cols)…