We had the chance to see quite a bit of clusters in our years of
experience with kubernetes (both managed and unmanaged - on GCP, AWS
and Azure), and we see some mistakes being repeated. No shame in
that, we’ve done most of these too!
I'll try to show the ones we see very often and talk a bit about how
to fix them.
I learned about socat a few years ago and am generally surprised
more developers don’t know about it. Perhaps I appreciate it all the
more since I saw it being used for the first time to fix a
production issue, and these sort of incidents leave a lasting
impression on one’s mind.
socat has a bit of a learning curve compared to tools such as
netcat. While I still often use netcat and friends (in no small part
due to muscle memory), socat truly is the Swiss Army Knife of
network debugging tools.
Have you ever wondered what the weather was like, but not wondered
enough to run some web app that takes 120 seconds to load a bunch of
post I'll show you what is in my opinion the best way to get your
weather report. First though, we need some tools.
Putting together the bits and pieces of a backup and restore
concept, while not being rocket science, always seems to be a little
bit ungrateful. Most Admin Handbooks handle this topic only within
few pages. After replacing my old Mac Mini's OS by NetBSD, I tried
to implement an automated backup, allowing me to handle it similarly
to the time machine backups I've been using before. Suggestions on
how to improve are always welcome.
Once you’ve developed a Python application on your laptop and want
to scale it up in the cloud (perhaps with more data or more GPUs),
the next steps are unclear, and unless you have an infrastructure
team that’s already set it up for you, “Just use kubernetes” is not
I came across a
on Cloudflare Blog where the author was describing his experience on
tackling the issue of removing duplicate lines from a large
file. The following text is a comment sharing my experience and
alternative approach to the task that yields performance results
similar to the author’s but without going down the route of coding
in C. Funnily, this comment was rejected by Cloudflare Blog
moderators. Thus, not to lose a couple of hour’s worth of work, I am
putting it out here.
KVM is a virtualization technology that comes with the Linux
kernel. In other words, it allows you to run multiple virtual
machines (VMs) on a single Linux VM host. VMs in this case are known
as guests. If you ever used QEMU or VirtualBox on Linux - you know
what KVM is capable of.
This post is meant to be a counterpart to the previous
KVM post, but about containers
instead. The idea is to show how exactly containers work by running
a busybox Docker image in our own small container runner.
Sudo is one of the most powerful and
dangerous tools in the Unix or Linux system administrator's
toolbox. With it, an ordinary user can run commands just as if he or
she were the superuser or any other user. Now, One
Identity, the company behind the
utility, has released a new version of sudo, called sudo
1.9, which gives it better
auditing, logging, and security than ever before.
Most developers early in their careers learn an important
programming principle called Don’t Repeat
(DRY). For most engineers this basically means avoid writing the
same lines of code more than once, and realistically that’s the best
place to start when learning how to write efficient code. While DRY
is an important code-writing concept, it’s far from the whole story.
In this post, we’re going to employ one simple natural language
processing (NLP) algorithm known as bag-of-words to classify
messages as ham or spam. Using bag of words and feature engineering
related to NLP, we’ll get hands-on experience on a small dataset for
Errors are under-appreciated. I discovered that on a greenfield
project when it occurred to me that I had essentially no tools in my
developer utility belt for architecting them.
Sure, I write code for handling errors every day, and every
programming language has built-in tools for handling errors. But the
majority of error architecture that I’ve seen is not exactly
graceful. Instead, it seems like programmers (myself included) opt
to handle errors totally ad-hoc, as if they’re not an integral part
of the larger piece of software.
Not long ago there was some buzz around how WebKit handles 100vh in
CSS, essentially ignoring the bottom edge of the browser
viewport. Some have suggested avoid using 100vh, others have come up
to work around the problem. In fact, this issue goes further back a
few years when Nicolas Hoizey filed a bug with
on the subject (the short of it: WebKit says this is “intentional”