In preparation for the CKA exam, I’ve started running through CKA scenarios on Killercoda. They have a free tier but I went ahead and paid $10/month for access to the environment which mimics the actual exam.

Rio Kierkels, one of the members of the Skool community I’m a part of, presented a really powerful solution today, showing us the amazing tool called Task which is a task runner / build tool.

His presentation was done with presenterm, a TUI markdown terminal slideshow tool.

Awesome stuff… both the topic of the presentation as well as the presentation tool itself.

If you are interested in Kubernetes, DevOps, and productivity, check out the Skool community. There is a free tier and a paid tier, which I happily pay for because the community is amazing and I’m learning a lot from it.

Went to a play called The Prom the other night with my family. It was fun! I laughed out loud several times. I really like the plays we’ve seen at the Town Hall in Littleton.

I am committing to studying four hours a day, Mon-Fri, for the CKA exam. I intend to take the exam before the end of June.

Taking time today to get my Obsidian notes vault in order. It’s been a mess for a while now and I’m tired of the chaos.

Kubernetes taints and tolerations, node selectors, and node affinity. All of these allow us to attain granular control over pod placement on nodes.

Taints and tolerations are used to set restrictions on which pods can be scheduled on a node.

To associate a pod to a node to run on, we add nodeSelector to the pod definition.

If we need more advanced operators such as OR/AND then we need to turn to node affinity to ensure pods are hosted on specific nodes.

Pinstachio for Pinboard looks like a good Pinboard app. Giving it a go.

In Obsidian, I’m starting to leverage callouts and I like them.

Callout in Obsidian

Kubernetes Lessons for today

Today’s Kubernetes learnings focused on scheduling as well as labels and selectors.

Every pod has a field called nodeName that by default is not set. The scheduler looks at all pods. If it finds one that does not have this field property set, it will rely on the scheduling algorithm to find the right node for this pod. The scheduler will create a binding object and assign a node to the pod.

Labels are found under the metadata section in a definition file. They are essential to configuring Kubernetes and we can setup configurations that leverage the labels. Here’s an example of how we might view pods with the label `app: App1’

kubectl get pods --selector app=App1

I drove an orange MG Midget. I bought an orange iMac. It barely fit in the trunk but I made it work.

As I make my way through the ‘Learn Object Oriented Programming’ course on Boot.Dev, the sections on Inheritance and Polymorphism are quite challenging. I am only a few chapters away from completing the final section on polymorphism and have decided to go back to the start of the inheritance section and start this part over. Why? I don’t know it well enough. I’m not interested in going through the motions simply to move to the next course. I need to fully grasp it or else I’m wasting my time.

While I have been taking notes throughout, I’m going to take a more detailed approach to my note-taking going forward. I’m going to write my notes on each topic as though I were explaining things to another person. In this way, I hope to really understand the topic at hand before moving on to the next chapter.

To symlink my dotfiles, I use GNU Stow. Most tutorials I have encountered assume you are placing your dotfiles directory at $HOME/dotfiles and thus, the command in that case would be…

stow .

since by default, the target directory is the parent of stow dir.

In my case, I keep my dotfiles directory at /Users/dw/Repos/github.com/donovanwatts/dotfiles so I need to explicitly define home directory as the target using the -t option.

stow -t /Users/dw .

On my Mac I use Hyperkey to remap some keys. In particular, I remap left control to a hyper key, caps lock to left control, and a quick press of the caps lock key to escape.

This morning, I tried opening Arc via Hyper-A but it didn’t work. That’s odd, I thought. Then I tried creating a split in tmux and that wasn’t working either. WTF! Why is this happening?

Then I remembered… last night Hyperkey had an update and didn’t restart itself afterwards for whatever reason. I’ve can’t function without my custom keys, man.

Hyperkey settings

Finished the Learn Git course on Boot.Dev. That’s Part One. I’ve updated my global git config to keep a linear history:

git config --global pull.rebase true

Perhaps my favorite learning is displaying a tight log with:

git log --oneline

When I want to see a fancy ASCII art representation, I type this:

git log --oneline --graph --all

About 80% complete with the new Git course on Boot.Dev by The Primeagen. I feel like my basic Git chops are pretty strong. This course has already upped my skills ten fold. Looking forward to part two in a month or so when it is released.

I’ve been rocking tmux default key binds for a few weeks now. It’s fine. I had no problem getting used to them and my life is simpler for it.

Ricoh…

We would like to inform you that the distribution and support of our driver software “ScanSnap Manager” will be terminated in October 2024, as we have already ceased the provision of its new functions.

But I like ScanSnap Manager. I imagine ScanSnap Home is going to be a pile of crap.

Diving into Prometheus and Grafana this morning. Installed the Helm chart to Rancher Desktop.

Today I learned about K9s to go spelunking around in my Kubernetes cluster. I’m glad I’m learning how to manage the cluster from the command line but I see the power and efficiency of being able to hop around in K9s as well.

When my brain starts to hurt from learning I turn to MST3K on Twitch. Always streaming.