The Cloud Native Craftsman#
Welcome to my website. I’m Mischa, a Cloud Native Engineer from Amsterdam.
Here I share thoughts and learnings about technical topics such as Microsoft
Azure, Kubernetes, Cloud Native technologies, DevOps and Linux. I’m also very
interested in anything that increases my productivity, so you will also find
writings on Zettelkasten, (Neo)vim, study techniques and anything that has to do
with taking notes.
In 2024 I was awared the Microsoft MVP title for my efforts of sharing knowledge
with the community.
Years of sharing knowledge on YouTube and this blog have uncovered a talent for
tackling difficult technical topics and explaining them in simple terms to
others.
In other words, I’ve found out that I have a knack for teaching. Following this
curiousity I started a Skool Community
where I create video courses on Kubernetes, Productivity, DevOps and much more.
My courses are also available on
Udemy
My courses have been received very well and I receive plenty of positive
feedback.
This blog is also available for your preferred RSS reader. Use
this link.
Sign Up For My Free Newsletter#
Socials#
📚 My Skool Community
🐦 Twitter - X
💻 LinkedIn
💾 GitHub
🎥 YouTube

Most Recent Posts#
Did some website housekeeping today. Spent the entire morning on a few tasks that I intended to do for a while. I added a search page and reorganized the menu, and I added a “Start Here” page.
I hope that the new “Start Here” page will do a better job of explaining the how and why of my website, and that the search function will help you nagivate my website better.
...
I do all of my writing in markdown. I keep my diaries in my Second Brain, I constantly write notes on the topics I’m studying, and my entire blog is written in markdown.
Some of the writing is done in Obsidian but I’m moving away from Obsidian step by step. I’ll still keep my second brain compatible with it, but I want to be able to do all of my writing in (neo)vim.
...
[[Neovim]]
I find myself quoting words very often in vim when I’m writing bash code. I used to do this by simply navigating around the word and typing them, but I knew there had to be a better way.
I found this vim command:
ciw""<Esc>P
“c” deletes into register and enters insert mode. “iw” stands for “inner word” and selects the word.
So we delete the entire word and enter insert mode. Then we type two quotes, and we press “P” to paste the register (containing the word) before the cursor.
...
A module is generally associated with a single git repo.
You can have a module with multiple packages, and each package would get its own subdirectory.
You should always name your main file main.go
creating a module Use the go mod init {{your path here}} command to initiate a module.
multiple modules I was running into some trouble with this because I want to have one big repo where I will store all my go projects.
...
Today was meal-prepping day and I cut up some vegetables for the coming week. I’m on a strict caloric restriction regimen and need to meticulously track and plan all the food that I consume.
I cut up three kinds of vegetables and wrote down how many grams of each I cut up so I could divide them by three and add them to my calorie tracking application.
As I took out my phone to pick up my calculator to divide each number, my inner engineer started complaining about the fact that I had to do three calculations and that it would be much better to loop over an array of these values.
...
I do all my coding and note taking in the terminal using tmux and neovim. I picked up a nice trick from Rob Muhlenstein today.
You can use this command in a split window to keep running a Go file. It will update when you save the file.
entr -c bash -c "go run main.go" <<< main.go
Entr runs commands when files change. Here we are feeding it only one file, but you can also feed it a directory like so:
...
Deploying to subscriptions and management groups To tell Bicep which scope to deploy to, use the targetScope keyword, for example, managementGroup.
You’re not specifying which management group exactly, this is done during deployment of the template file.
targetScope can be set to resourceGroup, subscription, managementGroup or tenant.
If it is not set, Bicep assumes resourceGroup.
create a resource group targetScope = 'subscription' resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-01-01' = { name: 'example-resource-group' location: 'westus' } To deploy you use az deployment group create for resource groups, but you use az deployment sub create for subscriptions, mg for management group and tenant for tenant.
...
The past few days I’ve been trying out a few options to run Docker containers and a Kubernetes clusters on my new MacBook Pro M2.
Unfortunately you can’t just run brew install docker and expect it to work. Additionally, Docker desktop requires that you purchase a license if you use it for work purposes.
Minikube works fine as well, but the networking driver for qemu is not fully supported yet, and I haven’t tried any of the other alternatives because I found something better.
...
Today I finished the Intermediate Bicep module. Here are my notes.
Child and Extension You can also use Bicep to refer to resources that were created outside the Bicep file itself. For example, you can refer to resources that your colleagues have created manually by using the Azure portal, or from within another Bicep template or module, even if they’re in a different resource group or subscription. By using these features of Bicep, you can unlock the ability to create powerful templates that deploy all aspects of your Azure infrastructure.
...
I’ll be working with Bicep during my next contract, so I’m working through the Bicep modules on Microsoft Learn to prepare. I must say that these modules are particularly helpful. They are well structured and they provide you with free sandbox environments to practice deploying the templates you create.
Why Bicep? Resources in Azure are deployed by the Azure Resource Manager (ARM). These resources are JSON objects under the covers, and ARM templates are a way to generate these JSON objects. However, JSON is not really meant to be edited by humans, and the ARM templates are not very suitable for editing either. Thus, Bicep was developed to allow for a better editing experience and better readability and reusability.
...