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