All posts
Docker Advanced #1: BuildKit and buildx — What the Builder Actually Is
A step deeper into the BuildKit we left turned on in Intermediate. The structure of LLB and frontends, buildx builder instances (docker-container vs. docker), the many shapes of --output, and using docker buildx bake to declaratively orchestrate multi-target builds.
K8s Basics #5: Service — ClusterIP / NodePort / LoadBalancer
[#4](/en/posts/k8s-basics-4) got 3 Pods running, but how traffic reaches them is still empty. Pod IPs change every time, no load balancing across the 3 Pods of one Deployment, and an external browser cannot get in at all. This post fills that gap with the Service abstraction — stable IP and DNS, how selector / Endpoints work, and the trade-offs across the three types ClusterIP / NodePort / LoadBalancer.
Modern Python Intermediate #3: Context managers (with, contextlib)
How with collapses try/finally, building your own context manager with __enter__/__exit__, the concise @contextmanager form, and practical tools like ExitStack and suppress.
RHEL Intermediate #4: Networking — NetworkManager (nmcli), bonding, teaming
RHEL 9 networking is unified under NetworkManager. This post covers: setting a static IP, DNS, and gateway with nmcli; bonding that bundles two NICs for fault tolerance; bridge as the foundation of virtual machine and container networks; and why teaming was deprecated — all in one post.
TypeScript Basics #5: Function Types
How to express function types precisely — optional/default/rest parameters, function signatures, overloads, and a first encounter with generics.
Angular Basics #7: Calling APIs with HttpClient
Learn to talk to a backend API using HttpClient — Angular's standard communication tool — and round it out with modern patterns using Observable and toSignal.
AWS Intermediate #1: EC2 and VPC Basics
The oldest building blocks in the cloud — EC2 and VPC. Instance types and AMIs and EBS, plus how VPC, subnets, route tables, IGW, and NAT all weave into one picture. We lay out the first skeleton of operational infrastructure.
Django Basics #7: Django Admin and Built-in Authentication
Django Admin auto CRUD UI, ModelAdmin customization, the built-in User model, login_required and permissions — all in one place.
Docker Intermediate #6: Logging and Debugging
Handling logs from many containers together, switching log drivers, and using exec, inspect, stats, and dive to look inside containers and images. The wrap-up of Docker Intermediate.
K8s Basics #4: Deployment and ReplicaSet — Declarative Deploys and Rolling Updates
A follow-up to the closing line of [#3](/en/posts/k8s-basics-3) — Pods are mortal, they just disappear when they die. This post writes a controller manifest for the first time. We pin down the three layers Deployment / ReplicaSet / Pod, watch auto-recovery when one Pod is deleted under replicas: 3, see how a one-character image-tag change drives a rolling update, and roll back a bad version with one command.
Modern Python Intermediate #2: typing in earnest — Generic, Protocol, TypedDict, Literal
The next step from basics type hints — Generic for parameterizing types, Protocol for precise duck typing, TypedDict for dict shapes, and Literal for narrow unions.
RHEL Intermediate #3: Advanced Storage — Stratis, NFS, Samba
Storage operations that reach beyond a single machine. Stratis is a storage manager built on top of LVM+XFS that lets you handle thin provisioning and snapshots with ease. NFS is the standard for sharing directories between Linux machines, and Samba is the file-sharing protocol that Windows clients can use. This post covers the setup and operation of all three tools in one place.