
Short, interactive courses on the things I actually work with — Linux, containers, and the infrastructure underneath. Free, no signup, and your progress is saved in your own browser.
The command line, from zero. Learn how the shell actually works, how to move around a filesystem, and how to read the permissions and processes that everything else in Linux is built on.
Write shell scripts that survive contact with a real machine. Variables, quoting, exit status, loops, functions, and redirection — in portable POSIX sh, the shell that exists in every container and CI image.
Docker from zero, correct for the current release. Containers and images, Dockerfiles, layers and the build cache, volumes, networking, and Compose — with the traps that most tutorials are still teaching wrong.
The working engineer’s Docker: multi-stage builds, BuildKit cache and secret mounts, multi-platform images, Bake, the Compose features a real project needs, lifecycle done properly, and build cache that survives CI.
Build a container by hand from the Linux primitives underneath it — namespaces, cgroups, chroot, veth pairs, NAT, and copy-on-write snapshots. No container runtime is installed at any point, and by the end the whole stack stops being magic.
What changes when containers carry real traffic: the daemon’s internals, dropping privileges, resource limits, SBOMs and provenance, Scout, hardened base images, Sigstore signing, observability, and running AI models with Model Runner.