Tutorials

Hands-on deep dives into DevOps and server-side topics, with every command runnable in an attached remote playground.

Tutorial

How Kubernetes Operators Work: Building a Controller From Scratch

Build a Kubernetes operator for a small Pet API, first as a 15-line bash loop and then as a Go controller with controller-runtime. Every Pet gets a Pod to live in, gets hungry as time passes, and runs away if nobody feeds it. Along the way, you'll see how the reconcile loop works.

How Kubernetes Operators Work: Building a Controller From Scratch (cover image)
Tutorial

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.

Using Go for Systems Programming (cover image)
Tutorial

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.

Linux Processes: Understanding Signals (cover image)
Tutorial

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.

Writing a (valid) C program without main() (cover image)
Tutorial

All The Ways To Loop and Iterate in eBPF

In this tutorial you will learn different ways to implement loops in eBPF, explaining how iteration evolved from manual loop unrolling to modern mechanisms like bounded loops, helper functions, and open-coded iterators. It walks through the limitations, kernel version requirements, and practical examples for each approach so you can choose the most appropriate looping method for your eBPF programs.

All The Ways To Loop and Iterate in eBPF (cover image)
Tutorial

Different Ways To Deliver Kernel Events from eBPF to User Space

In this tutorial, you’ll learn how eBPF applications send kernel events into user space using perf buffer and ring buffer, exploring their design, trade-offs, and performance implications. You’ll also learn how moderns solutions like Jibril handle high-throughput event delivery.

Different Ways To Deliver Kernel Events from eBPF to User Space (cover image)
Tutorial

Hands-On with XDP: eBPF for High-Performance Networking

In this tutorial, you’ll learn the fundamentals of eBPF and XDP through example code that parses packets across different protocol layers, demonstrates how XDP actions work, and shows how these building blocks form the foundation for high-performance networking applications.

Hands-On with XDP: eBPF for High-Performance Networking (cover image)
Tutorial

eBPF Tracepoints, Kprobes, or Fprobes: Which One Should You Choose?

In this tutorial, we’ll look at how different eBPF tracing mechanisms work in practice by focusing on a single use case: capturing execve system call events. We’ll start with tracepoints, move on to raw tracepoints, and then cover kprobes and fprobes, showing how each attaches to the kernel and what data they expose. Along the way, we’ll compare their trade-offs in terms of stability, performance, and portability.

eBPF Tracepoints, Kprobes, or Fprobes: Which One Should You Choose? (cover image)
Tutorial

Inspecting and Monitoring eBPF Applications

In this tutorial, you’ll learn how to inspect eBPF programs and maps loaded into the kernel with bpftool, gaining deeper visibility into how your eBPF application runs. We’ll also explore bpftop, a top-like interface that lets you monitor eBPF program activity in real time.

Inspecting and Monitoring eBPF Applications (cover image)
Tutorial

Storing Data in eBPF: Your First eBPF Map

In this tutorial, you’ll learn how to store and update data inside the kernel, turning a simple eBPF Hello World program into one that tracks useful state. We’ll also briefly learn a few basics of bpftool, a handy CLI tool that will allow us to list and inspect our eBPF map.

Storing Data in eBPF: Your First eBPF Map (cover image)
Tutorial

From Zero to Your First eBPF Program

In this first tutorial, you’ll run a pre-coded eBPF program and see it in action without writing any code yourself. We’ll walk through the important parts of the program so you understand how eBPF hooks and runs in the kernel. The goal is to get familiar with the workflow and core concepts before you start writing your own eBPF programs.

From Zero to Your First eBPF Program (cover image)