Posts

Bootstrapping Kubernetes Before the Registry Exists - Pre-Tagging Images for containerd

Bootstrap a Kubernetes cluster before the private registry exists. Pre-tag side-loaded container images with the future registry path so Helm values, containerd cache, and kubelet pulls all reference the same string.

When systemd-resolved Picks the Wrong DNS Server

systemd-resolved treats all configured DNS servers as equivalent. Here's why that breaks private DNS resources in VMs and how I worked around it.

Giving Your AI the Right Context with Model Context Protocol (MCP)

How to build a small MCP server in Go that lets AI models discover and query your data directly, replacing manual copy-pasting with structured tool calls.

Writing a BPF packet filter on macOS in Go

How to use Berkeley Packet Filter on macOS to filter raw packets in the kernel, reducing 10,000 frames to 100 with six BPF instructions and golang.org/x/net/bpf.

Solving Keycloak Internal vs External Access in Kubernetes with hostname-backchannel-dynamic

Introduction

Building a Simple DNS Forwarder for VMs in Go

From Swagger UI to React: Building qcontroller's Frontend

In previous articles, I introduced qcontroller, a powerful tool for managing the complete lifecycle of QEMU VM instances—creating, starting, stopping, and removing VMs with database-like...

Network Namespaces: Isolating VM Networking

In my previous articles, I discussed various networking approaches for Linux virtualization. I developed qcontroller, a tool responsible for managing the complete lifecycle of QEMU...

Running QEMU VMs on ARM64: UEFI Requirements

In my previous notes, I’ve discussed how QEMU serves as a versatile and flexible tool for creating and managing virtual machines. One of QEMU’s greatest...

Local DNS Resolution for Docker Containers in Development

The challenge: service discovery in containers

Introducing qcontroller: Declarative VM Management with QEMU and Go

QEMU QAPI Client for Go — Native Code-Gen Straight from QEMU

Ever glued together socat, raw JSON, and a prayer just to talk to QEMU from Go? I did—until one missing comma killed an overnight CI...

Automating Bridge + TAP Networking with a Go Binary (No Bash, No Fuss)

TL;DR: In my previous article, I manually set up Linux bridge + TAP networking for VMs. This time, I built a Go tool that automates...

How to customize PostgreSQL Docker Initialization the Right Way

Dockerizing Postgres is easy - until you need to initialize multiple databases with different dumps. Here is a clean way to do it using just...

Setting Up VM Networking on Linux: Bridges, TAPs, and More

Setting Up a Simple Two-Node Kubernetes Cluster in No Time

Kubernetes is now a crucial tool for developers. Regardless of the field of software development, Kubernetes will likely be involved. Even if you’re not directly...

QEMU networking on macOS

Introduction

Automating the Building of VMs with Packer

Introduction

Component Generation with Figma API: Bridging the Gap Between Development and Design

Introduction In today’s fast-paced software development world, efficient workflows and clear responsibilities between development and design teams are crucial. One way to streamline these workflows...

Offscreen Rendering

Off-screen rendering (rendering to a texture) is a crucial technique in computer graphics and game development. It allows you to render scenes or objects without...

Simulating GPIO Sysfs Interface with FUSE and C++

Interacting with General-Purpose Input/Output (GPIO) pins is a core part of embedded development. The GPIO sysfs interface is a standard way to access and manipulate...

Rendering list views on a web page efficiently: A technique to display big datasets

Recently, I needed to implement a web widget that displays a collection of items. In some cases, the collection happened to have 7 million items....

Simplify networking with socat

socat is a versatile tool that can transfer data between two endpoints. These endpoints can be network sockets, serial devices, files, or even other processes....

FastAPI and Two-Factor Authentication

FastAPI is a modern Python framework for backend development with great support for authentication out of the box. In this article, we’ll build a simple...

Building C++ projects: Know what you build, how you build it and where you build it.

Arguably, CMake is the standard tool to structure and build C++ projects. The tool is very easy and intuitive to use. But sometimes it might...

subscribe via RSS