Feed

Everything recently published or updated on iximiuz Labs — the same stream the RSS and Atom feeds show, but with a browser-friendly look.

Your feed — All new posts

PlaygroundPublished: Sep 19, 2026

SilverStack WordPress Server

Production-grade WordPress 7.1 on Ubuntu 24.04 - systemd-booted, Nginx FastCGI, PHP 8.3-FPM, MariaDB 10.11, Redis 7 Object Cache, WP-CLI, and Cloudflare-ready with zero manual setup.

Shell GymPublished: Sep 16, 2026
Linux 101: List Files and Use Patterns (cover image)

Linux 101: List Files and Use Patterns

Inspect directory contents from the Linux terminal, read what a listing tells you, sort it to find the entry you need faster, and use shell patterns to name groups of files.

Shell GymPublished: Sep 16, 2026
Linux 101: Create Files and Directories (cover image)

Linux 101: Create Files and Directories

Create files and directory structures from the Linux terminal. Practice using touch and mkdir, building nested directory trees, working with tricky names, and creating groups of files in one go.

Shell GymPublished: Sep 14, 2026
Linux 101: Navigate the Filesystem (cover image)

Linux 101: Navigate the Filesystem

Your third hands-on session in a Linux terminal. Learn how the Linux directory tree is organized and practice navigating it with absolute paths, relative paths, and common shell shortcuts.

Shell GymPublished: Sep 13, 2026
Linux 101: Get Unstuck in the Shell (cover image)

Linux 101: Get Unstuck in the Shell

Your second hands-on session in a Linux terminal. Find out what a command name really runs, learn how to get help with --help and man pages, and stop or suspend commands that do not give the prompt back.

TutorialPublished: Sep 9, 2026
Secure Machine-to-Machine Access with mTLS and Pomerium (cover image)

Secure Machine-to-Machine Access with mTLS and Pomerium

Run a GitHub Actions-compatible continuous integration (CI) job on a private runner and protect its internal API call with mutual TLS (mTLS) and Pomerium. Build separate server and client trust chains, authorize one machine certificate by fingerprint, then revoke, restore, and rotate its credentials through live policy changes.

ChallengeUpdated: Sep 10, 2026 (Published: Sep 8, 2026)
Pick and Deploy the Least Permissive NetworkPolicy (cover image)

Pick and Deploy the Least Permissive NetworkPolicy

The security team left five NetworkPolicy files on the workstation. Only one of them lets the frontend reach the backend while granting nothing more. Identify it and deploy it, unchanged.

Shell GymPublished: Sep 7, 2026
Linux 101: Meet the Linux Shell (cover image)

Linux 101: Meet the Linux Shell

Your first hands-on session in a Linux terminal. Practice running commands, reading their output, using arguments and options, checking whether commands succeed or fail, and chaining commands together. No prior Linux experience is required.

PlaygroundPublished: Sep 7, 2026
Doom Perf Lab (cover image)

Doom Perf Lab

Explore live host CPU/Memory/Disk/Network telemetry as an interactive Doom diagnostics lab. All the elements in the game react to system signals (eg, the cpu cores glow red when there's high utilization).

ChallengePublished: Sep 1, 2026
Kubernetes - Multi-Container Pod Design Patterns (cover image)

Kubernetes - Multi-Container Pod Design Patterns

Build five ways to combine containers in one Pod: a sidecar that extends the app, an init container that finishes before the app starts, a native sidecar with a startup guarantee, an ambassador that mutates an outbound call, and an adapter that translates an inbound one.

ChallengeUpdated: Sep 2, 2026 (Published: Sep 1, 2026)
CKA Practice: Renew Expiring Control Plane Certificates (cover image)

CKA Practice: Renew Expiring Control Plane Certificates

kubectl is dead: the kube-apiserver certificate expired and the control plane is down, while the workload quietly keeps serving. Diagnose the expiry offline, renew the certificates, bring the control plane back, and prove the cluster recovered.

ChallengeUpdated: Sep 2, 2026 (Published: Sep 1, 2026)
Issue Per-Pod mTLS Certificates with PodCertificateRequest (cover image)

Issue Per-Pod mTLS Certificates with PodCertificateRequest

Kubernetes 1.37 can hand every pod its own short-lived X.509 identity, no service mesh and no sidecar involved. The API is served out of the box, but it issues nothing without a signer, and a request nobody answers leaves the pod waiting forever. Get a stalled workload its certificates, give its client an identity of its own, and make the server actually enforce mutual TLS.

ChallengeUpdated: Sep 15, 2026 (Published: Aug 19, 2026)
Copy Config Files from a Running Pod (cover image)

Copy Config Files from a Running Pod

A Deployment is running in the platform namespace with 3 replicas. Each pod has configuration files at /app/config/. Copy those files to /home/laborant/config/ on the local machine.

ChallengePublished: Aug 16, 2026
Expose the Snake Game via TLS Ingress (cover image)

Expose the Snake Game via TLS Ingress

A Snake game Deployment and ClusterIP Service are already running in the snake namespace. Create a Traefik Ingress that serves the game over HTTPS using an existing cert-manager-issued TLS Secret.

PlaygroundPublished: Aug 15, 2026
Rust Programming (cover image)

Rust Programming

A disposable Rust development environment with stable, beta, and nightly toolchains, cargo-watch, rustfmt, clippy, rust-analyzer, and the musl target pre-installed.

Blog postPublished: Aug 9, 2026

Thoughts on OpenAI's accidental attack against Hugging Face

OpenAI gave a presentation about "the Hugging Face Incident", and Simon Willison, my favorite AI journalist, reconstructed the incident's timeline from the video. I recommend reading it in full, and here are my thoughts pertaining to the domain I'm working in - Linux, containers, and security.

TutorialPublished: Aug 9, 2026
Change Your Root: Chroot Basics (cover image)

Change Your Root: Chroot Basics

Understand how the chroot system call changes the root directory for a process, learn how dynamic linkers resolve dependencies inside a jail, and see what an isolated process perceives as its filesystem root.

ChallengePublished: Aug 6, 2026
Port-Forward a Kubernetes Service to localhost (cover image)

Port-Forward a Kubernetes Service to localhost

A Deployment running a distroless Chainguard nginx image (cgr.dev/chainguard/nginx) is deployed in the namespace webapps, fronted by a ClusterIP Service. Port-forward that Service to localhost port 3333 on cplane-01, use curl to save the response body to /home/laborant/index.html, and verify the file is accessible and contains the expected content.

PlaygroundPublished: Aug 5, 2026
NixOS (cover image)

NixOS

A ready-to-use NixOS server for exploring the full Nix experience without installing it on your own machine.

ChallengeUpdated: Aug 6, 2026 (Published: Aug 5, 2026)
Debug a Failing Kubernetes Job (cover image)

Debug a Failing Kubernetes Job

A Job manifest at /home/laborant/batch-job.yaml is exiting with a non-zero exit status. The Job has limited retries configured. Inspect the cluster and the manifest to find the bug, fix it, and reapply.

ChallengePublished: Aug 4, 2026
Extend kubectl with a Custom Image-Inspection Plugin (cover image)

Extend kubectl with a Custom Image-Inspection Plugin

A helper script that lists every container image running in the cluster — along with its on-disk size and the workload that uses it — has been downloaded to cplane-01. Install it as a kubectl plugin named kubectl-images so that kubectl images works from any directory.

TutorialUpdated: Aug 4, 2026 (Published: Aug 3, 2026)
Using Go for Systems Programming (cover image)

Using Go for Systems Programming

Discover how Go functions under the hood as a modern systems programming language. Learn how Go makes system calls directly, resulting in self-contained binaries that have no libc dependencies.

ChallengePublished: Aug 3, 2026
Utilize POSIX Threads for Concurrency (cover image)

Utilize POSIX Threads for Concurrency

Refactor a slow, single-threaded C file downloader that fetches files sequentially into a multi-threaded program using POSIX Threads (pthreads) to achieve concurrent downloads.

TutorialPublished: Aug 1, 2026
Managing Podman Instances Remotely (cover image)

Managing Podman Instances Remotely

Learn how you can control multiple podman instances on remote machines without SSHing into them manually. Also learn to deploy your Compose application stacks without SCP / SSH with podman remote feature and Docker Compose v2

TutorialPublished: Jul 31, 2026
Build a Custom Rootfs Image That Boots as a microVM, Not a Container (cover image)

Build a Custom Rootfs Image That Boots as a microVM, Not a Container

A container image and a bootable root filesystem are not the same artifact. This tutorial builds both from the same Dockerfile so you can see exactly where they diverge: what a plain ubuntu:24.04 is missing, the five requirements an iximiuz Labs playground rootfs has to satisfy, and how to prove an image would boot without being able to boot it. Ends with the same image built the easy way, from the official rootfs base.

ChallengePublished: Jul 31, 2026
Inject a Config File Without Overwriting the Image's Existing Directory (cover image)

Inject a Config File Without Overwriting the Image's Existing Directory

A webapp deployment in the prod namespace is stuck in CrashLoopBackOff. The application's startup probe checks that its existing config directory is intact before the container is marked healthy. Fix the deployment so configuration is injected correctly and the pod reaches Running state with its health check endpoint responding on port 8080.

PlaygroundPublished: Jul 26, 2026
ShellGym (cover image)

ShellGym

Try ShellGym - an interactive Linux command-line trainer - in a ready-made Ubuntu VM: daemon running, web UI open, sample learning path loaded.

TutorialUpdated: Aug 6, 2026 (Published: Jul 26, 2026)
Linux Processes: Understanding Signals (cover image)

Linux Processes: Understanding Signals

Explore Linux/Unix signals in Go, how signals act as asynchronous notifications, who can send them, default kernel behaviors, sending signals with kill and Go, graceful signal handling with os/signal, and why SIGKILL cannot be trapped.

TutorialUpdated: Aug 3, 2026 (Published: Jul 26, 2026)
Linux Processes: Threads & Concurrency (cover image)

Linux Processes: Threads & Concurrency

Explore what a thread actually is in Linux, how threads relate to processes, how the Linux kernel treats both as tasks (task_struct), and how kernel scheduling enables concurrency.

TutorialPublished: Jul 25, 2026
Podman with Kubernetes: Play Before You Apply (cover image)

Podman with Kubernetes: Play Before You Apply

This tutorial provides an in-depth know-how of working with Pods (group of container) with Podman. It also gives insights into how the podman CLI works well with Kubernetes, albeit in limited capacity to develop better Container Workflows.

ChallengeUpdated: Jul 26, 2026 (Published: Jul 24, 2026)
Count Optimized Assembly Instructions (cover image)

Count Optimized Assembly Instructions

Compile a small C loop with -O2 -S, inspect the generated assembly, report how many add instructions gcc produced and see how much it has optimized the equasion.

TutorialUpdated: Jul 26, 2026 (Published: Jul 24, 2026)
Writing a (valid) C program without main() (cover image)

Writing a (valid) C program without main()

Walk through the C compilation pipeline: preprocessor, compiler, assembler, and linker. Start with a normal hello world, inspect macros and generated assembly, and end by producing a running binary that has no main() function.

ChallengeUpdated: Aug 6, 2026 (Published: Jul 24, 2026)
Access the Kubernetes API Server via kubectl proxy (cover image)

Access the Kubernetes API Server via kubectl proxy

Use kubectl proxy to open a local, already authenticated HTTP endpoint to the Kubernetes API server, then use curl to list every Secret in the gliese-581 namespace and save the raw JSON response to /home/laborant/secret-list.json.