Once more a blow, a nasty one this time


I could not say this more than what the title says. I had a very severe blow to my already damanged left knee. Here and here is a bit of history It was on the 28th of September where I went for my first ever defensive sport training called "VingTsun". Inspired by my Phsio friend who is a beginner, I decided to give this training a try. I indeed watched few videos of it before commiting myself to joining him for the training session which starts around 20:00 Hours near to where I live.

Convinced that if during the training, should I need to use my legs a lot, I would talk to the trainer and avoid such moves, I happily started my session. Well guess, in the first 10 minutes where we were just warming up, I inflicted a severe blow to my left knee. What happened was, we were asked to run, run, stop, jump, run. Run was Okay, Run was Okay, Stop was Okay, but when I jumped (I guess it was the third time of my jump), and landed, my left kneww buckled and I fell down with such an excruciating pain. The pain was so intense that I could not breathe anymore and I was gasping for air.

My Phsio friend tried to help out by pressing his hand against my knee, but that did not help. For the next 10 minutes I was just shouting out loud without being able to bear the pain. I got some ice applied and I was just moved over to the corner of the room. Since my home is a few kilometers away and I was not in a position to travel back alone, I waited for the session to finish. My physio friend toed my on my bike back home.

Fast forward a week, I'm back with my crutches. I think it is time for me to think about getting this damn thing operated. The pain was there for almost a week and I still have the effect in my knee from the impact.

On Navigating the Pentatonic scale


Recently, I can say that I made very good progress playing across the neck of my guitar. I memorized few pentatonic shapes, but I was stuck the whole while on those specific boxes. The whole thing did not make any sense to me. Just wandering within those boxes is not pleasant music. Frustrated, I looked at Youtube for some motivational ideas on how to unstuck me from the boxes.

Luckily, this one video in Youtube that I found on a random search helped me immensly. https://www.youtube.com/watch?v=7xnBahYdWu8 The idea is to think in terms of triangles and move back and forth to those triangles. Man this was wonderful and I now get the idea!

Moved from Apple to Infinitybook a.k.a Tuxedo a.k.a Ubuntu


I have been using a Mac for over 7 years now and I have used about 3 Mac's where the 3rd one is still working fine. But I have kids at home and they feed food to it and because of that the keys on my Mac are out of order. So it was time for me to have some privacy and get one machine for myself.

Looking around the latest iteration of the Mac Book Pro 13", the configuration that I could get for the money and more importantly what I will be doing with it actually got me into thinking if I ever need a Mac at all? So I listed down my usual usage: 1. Browsing 2. Software Engineering (Running application servers, Kubernetes, Docker images etc.,) 3. Occasional photo editing 4. Skype calls

So given those needs above, I realized that a Mac is a bit pricey. So I started to search for alternatives. I could not tolerate a Windows machine, so the only option was to go for a Linux installed device. Fortunately, there are possibilities today to order one such Linux machine and run it out of the box. Yes, it is from Tuxedo computers. I purchased one of their business Laptops the TUXEDO InfinityBook S 14 v5. You can customize the hardware and I maxed out on the RAM as I know this is where my maximum needs are. It came fully pre-installed with their Ubuntu distro and they call it the "Tuxedo_OS 20.04 LTS 64 Bit" which is basically a Ubuntu Linux. Since it is LTS, it is guaranteed to receive updates for the next 5 years.

It took about 5 business days for the machine to reach me and I have it now with me. So far, I really do not miss my Mac Book Pro. This machine is wonderful. What is astounding for me is the battery life. I get about 12 to 13 hours of battery life with some moderate usage (videos, browsing, terminal, docker containers etc.,). I'm pretty much satisfied with this as it just costed me 1/3 of the price for a similarly spec'd Mac Book Pro.

A quick review of the machine: 1. The chassis feels flimsy, not sure if it is truly military grade as mentioned in the website from Tuxedo 2. The Audio quality is poor and the video is kind of Okay. But for the intended purpose of this machine, I'm fine with this! 3. It is very slender and light in weight. I like that 4. The fan is silent and could not be heard under load 5. Budgie desktop is pleasing to use and set up 6. Keys have a nice reflex and it really inviting to type, but the keys could have been a bit bigger in size

CI for Kubernetes resources


Recently I have been exploring more around the Kubernetes tooling, especially the ones that can do some pre-validation on the schema and the state of my Kubernetes deployment resources or more precisely the YAML files.

I came across a few of them like conftest, kubeval etc and a wrapper around such set of tools like the kube-tools project which can be used as a GitHub Actions in your GitHub project.

So basically what I did was to try this out on one of my projects that I have on my GitHub, the plant-simulator-deployment which contains the Kuebrnetes resurces to run the plant-simulator application in a Kubernetes cluster.

Since I'm using GitOps for managing my deployments to the production cluster, I wanted to be sure that the YAML files that I write are indeed valid both in terms of the schema (Kubeval) and in terms of the state (Conftest). What I want is some kind of CI, test and a failure mechanism that would prevent any invalid YAML files getting pushed into the master branch because as soon as anything lands on the master, GitOops kicks in and deploys it immediately. So I need to be sure to fail such deployments in case any of my YAML file in invalid. How do I do this?

So here is basically my approach: 1. Under your project repo in GitHub, under Settings / Branches, create a new "Branch protection rule". In our case, we want to protect the master branch as this is the one GitOps looks for!

2. I create a status check to pass before the changes from a feature branch be merged into master (as seen in the screenshot below)

3. To test if this works, I intentionally introduced an error in one of my YAML files and you can see below that it was caught by GitHub Actions:

4. Now I issue a pull request from this branch into master and you can now see from the screenshot below that the YAML validation failure shows up. So the guy who would do this merge / pull request would not merge it into the master! This is what we want!