{"@attributes":{"version":"2.0"},"channel":{"title":"f4z3r's blog","link":"https:\/\/f4z3r.github.io","description":{},"generator":"Zola","language":"en","lastBuildDate":"Thu, 29 Oct 2026 00:00:00 +0000","item":[{"title":"Rendering GitOps: how we built an ArgoCD repository with KCL","pubDate":"Thu, 29 Oct 2026 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/rendering-gitops-build-argocd-repo\/","guid":"https:\/\/f4z3r.github.io\/rendering-gitops-build-argocd-repo\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/kcl-gitops\/banner.webp\" alt=\"A prism transforming stacked shapes into orderly sets of cubes.\" class=\"center\" style=\"margin:-9% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>Our GitOps repository needed Go templates, Kustomize overlays, CUE schemas, and Python scripts just\nto make configuration changes reasonably safe. Even then, removing a redundant override could\nbriefly trigger a downgrade. We decided to rethink how we assembled our Argo CD applications, using\nKCL to generate and validate their definitions before they reached the cluster. In this post, I walk\nthrough the component model we built, how it changed our review workflow, and where the additional\nmachinery earns its keep.<\/p>"},{"title":"Why Is No One Talking About Repository Structure?","pubDate":"Thu, 30 Jul 2026 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/open-source-and-monorepos\/","guid":"https:\/\/f4z3r.github.io\/open-source-and-monorepos\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/monorepos\/multi-repo-vs-monorepo.webp\" alt=\"Dependent repositories versus a single monorepository.\" class=\"center\" style=\"margin:-10% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>Over the last couple of months, I have been more involved in contributing to open source again.\nHelping maintainers improve their products is such a rewarding and eye-opening experience. It is an\nopportunity to learn how others solve complex problems and work on projects that tend to be\nsignificantly more mature than most enterprise software regarding engineering practices and\nautomation.<\/p>\n<p>I was quite hyped when assigned a task to implement a small feature with actual end-user impact. It\nwas nothing fancy: essentially, adding a flag to a CLI command to slightly modify user-facing\nbehavior.<\/p>"},{"title":"Why KCL Matters for Platform Engineers","pubDate":"Sat, 02 May 2026 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/why-kcl-matters-for-platform-engineers\/","guid":"https:\/\/f4z3r.github.io\/why-kcl-matters-for-platform-engineers\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/kcl\/banner.webp\" alt=\"A robot working on a computer writing code.\" class=\"center\" style=\"margin:-9% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<blockquote>\n<p><strong>Author\u2019s Note<\/strong>: I have contributed to the <a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/www.kcl-lang.io\/\">KCL<\/a> project and have run\nthousands of KCL programs while exploring the language and executing its test suite. These\ninsights and benchmarks come from hands\u2011on experience. While I currently do not use KCL in\nproduction, I've focused on solving real platform engineering challenges with it.<\/p>\n<\/blockquote>\n<h1 id=\"the-pain-of-yaml-sprawl\">The Pain of YAML Sprawl<\/h1>\n<p>As teams adopt Kubernetes and GitOps, they wrestle with thousands of YAML files. YAML is\nhuman\u2011readable but offers no abstraction, so companies build their own templating and validation\ntools, leading to fragile, hard\u2011to\u2011validate manifests that drift over time.<\/p>\n<p>The result? A monolithic repo full of brittle YAML that breaks at deployment. Teams use Helm,\nKustomize, or custom Python scripts, but validation still happens at runtime, creating a painful\n\"write \u2192 validate \u2192 deploy\" cycle. When was the last time you updated a Helm values file to realise\nafter deployment that the change has no effect because you have a typo in the YAML structure and\nHelm silently ignored the entire thing? Or even better: you created a Kustomize patch that lead to\nan invalid Kubernetes resource definition, leading to a\n<a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/argo-cd.readthedocs.io\/en\/stable\/\">ArgoCD<\/a> sync failure?<\/p>\n<p>I have seen this firsthand on a project. We use Go templating in ArgoCD ApplicationSets with <code>dig<\/code>\nexpressions for lookups and default values. However, as our platform definition is pure YAML, we\nfelt the need to introduce <a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/cuelang.org\/\">CUE<\/a> for schema validation and custom Python\nscripts to ensure <code>dig<\/code> expressions resolve. At this point, we are using more than three complex\ntechnologies just create abstractions in a relatively safe manner.<\/p>\n<p>KCL tackles this head\u2011on. It \"compiles\" KCL source files into plain YAML. While doing so, it\nvalidates schemas, enforces constraints, and guarantees correct abstraction usage.<\/p>"},{"title":"Architecting Portable Systems on Open Standards for Digital Sovereignty","pubDate":"Mon, 23 Mar 2026 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/architecting-portable-systems\/","guid":"https:\/\/f4z3r.github.io\/architecting-portable-systems\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/architecting-portable-systems\/banner.webp\" alt=\"A hand holding a ship.\" class=\"center\" style=\"margin:-8% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<blockquote>\n<p>This article was originally posted on\n<a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/www.infoq.com\/articles\/portable-systems-sovereignty\/\">InfoQ<\/a>.<\/p>\n<\/blockquote>\n<p>Digital sovereignty isn't about building everything yourself; it's about having a valid \"Plan B\".\nWhat would your \"Plan B\" be if your vendor for a critical system suddenly decided to\n<a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/www.ciodive.com\/news\/broadcom-vmware-acquistion-vcf-private-cloud\/733800\/\">quadruple its price tag<\/a>\nor if it decided to abandon product development and suddenly communicated a\n<a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/techcrunch.com\/2022\/08\/17\/google-cloud-will-shutter-its-iot-core-service-next-year\/\">product \"end-of-life\" deadline<\/a>?\nHow would you feel if your government were utterly reliant on another geopolitical entity in order\nto sustain basic (digital) operations? What if your access to a SaaS provider were suddenly revoked\ndue to international sanctions?<\/p>\n<p>In this article I will dive into three aspects of digital sovereignty and illustrate how\narchitectural choices and constraints can help address the scenarios described above. I will share\nsome insights into the benefits and risks of building \"sovereign systems\", and illustrate high-level\nexamples why this architectural choice might be more challenging than most people expect. As a\nsoftware architect working for various large enterprises, I share insights into open standards as\none of the main pillars to achieve sovereignty. It should, however, be noted that sovereignty is a\nmuch larger topic overall.<\/p>"},{"title":"Beyond the Pod: Why wasmCloud and WebAssembly Might Be the Next Evolution of the Platform","pubDate":"Thu, 09 Oct 2025 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/beyond-the-pod-webassembly-and-wasmcloud-next-platform-evolution\/","guid":"https:\/\/f4z3r.github.io\/beyond-the-pod-webassembly-and-wasmcloud-next-platform-evolution\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/wasmcloud\/assembly-line.webp\" alt=\"An assembly line with robot arms.\" class=\"center\" style=\"margin:-7% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>Over the past few months I have invested some time to contribute to an open source project I find\nfascinating: <a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/wasmcloud.com\/\">wasmCloud<\/a>. As a platform engineer and architect, I am very\nfamiliar with how software platforms are typically built in practice. However, with the ubiquity of\nKubernetes, you run the risk to being stuck in the \"doing it the Kubernetes way\" line of thinking.\nBut then again, are there any better ways? This is where wasmCloud caught my attention. A modern\nplatform building on proven concepts from Kubernetes, but with some significant differences. In this\narticle I want to introduce wasmCloud, how it compares to Kubernetes, what its internal architecture\nlooks like, and what ideas are, in my humble opinion, a step up from \"the Kubernetes way of things\".<\/p>"},{"title":"Dissecting Kubewarden: Internals, How It's Built, and Its Place Among Policy Engines","pubDate":"Sat, 03 May 2025 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/dissecting-kubewarden-internals-built-comparison\/","guid":"https:\/\/f4z3r.github.io\/dissecting-kubewarden-internals-built-comparison\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/kubewarden\/knight.jpeg\" alt=\"A knight in armor striding forward with his sword drawn.\" class=\"center\" style=\"margin:-15% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>Kubernetes offers amazing capabilities to improve compute density compared to older runtimes such as\nvirtual machines. However, in oder to leverage the capabilities of the platform, these tend to host\napplications from various tenants. This introduces a strong need for properly crafted controls and\nwell-defined compliance to ensure the tenants use the platform correctly and do not affect one\nanother. The RBAC capabilities provided out of the box by Kubernetes are quickly insufficient to\naddress this need. This is where policy engines such as <a rel=\"noopener nofollow noreferrer external\" target=\"_blank\" href=\"https:\/\/www.kubewarden.io\/\">Kubewarden<\/a>\ncome into play. In this post we will look at how Kubewarden can be leveraged to ensure correct usage\nof a platform, how it compares to other policy engines, and how to best adopt it.<\/p>"},{"title":"The Tortoise and the Hare: do AI Agents Really Help for Software Development?","pubDate":"Sat, 19 Apr 2025 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/the-tortoise-and-the-hare-do-ai-agents-really-help\/","guid":"https:\/\/f4z3r.github.io\/the-tortoise-and-the-hare-do-ai-agents-really-help\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/ai-agents\/robot-ai.jpeg\" alt=\"A robot working on a computer writing code.\" class=\"center\" style=\"margin:-20% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>Making my development workflow as fast as possible is a big passion of mine. From customizing my\ndevelopment setup to get the last inkling of efficiency out of it, to thinking how to manage notes\nand knowledge resources to access them as quickly as possible. With the sudden ubiquity of AI in\ndevelopment tools, I came to wonder how AI could help me write code faster. Being quite the skeptic\nwhen it comes to AI actually generating code for me (using tools such as Cursor or GitHub Copilot),\nI came to investigate AI agents which specialise in code reviews. In this blog post I will share my\nexperience using such an agent on a real world case. I will explore where such agents shine and\nwhere they are severely lacking.<\/p>"},{"title":"A Comprehensive Guide to Managing Large Scale Infrastructure with GitOps","pubDate":"Sun, 30 Mar 2025 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/a-comprehensive-guide-to-managing-large-scale-infrastructure-with-gitops\/","guid":"https:\/\/f4z3r.github.io\/a-comprehensive-guide-to-managing-large-scale-infrastructure-with-gitops\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/gitops-intro\/old-wooden-trading-ship.webp\" alt=\"An old wooden trading ship navigating the wide ocean\" class=\"center\" style=\"margin:-30% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>GitOps is getting adopted more and more. However, there still seems to be some confusion as to what\nGitOps is, how it differs from regular CI\/CD pipelines, and how to best adopt it. In this post we\nwill quickly cover what GitOps is, and the three main lessons learned from using GitOps to manage\ninfrastructure at scale both on premise and in the cloud.<\/p>"},{"title":"A Very Deep Dive Into Docker Builds","pubDate":"Tue, 26 Nov 2024 00:00:00 +0000","author":"Unknown","link":"https:\/\/f4z3r.github.io\/a-very-deep-dive-into-docker-builds\/","guid":"https:\/\/f4z3r.github.io\/a-very-deep-dive-into-docker-builds\/","description":"\n  \n  \n    \n    \n  \n  <div style=\"overflow:hidden;width:100%;height:300px;\">\n    <img src=\"https:\/\/f4z3r.github.io\/img\/docker-builds\/diver.webp\" alt=\"A man diving deep into the depths of the sea.\" class=\"center\" style=\"margin:-25% 0\" decoding=\"async\" loading=\"lazy\"\/>\n  <\/div>\n\n\n<!--\nvim: ft=liquid\n-->\n<p>Containers are everywhere. From Kubernetes for orchestrating deployments and simplifing operations\nto Dev Containers for flexible yet reproducible development environments. Yet, while they are\nubiquitous, images are often built sub-optimally. In this post we will be looking at a full example\nof a Docker build for a Python application and what best practices to consider.<\/p>"}]}}