All posts

Angular Intermediate #1: Reactive Forms and Form Validation
8 min read

Angular Intermediate #1: Reactive Forms and Form Validation

Wrapping up Reactive Forms — the standard for production Angular forms. FormGroup, FormControl, Validators, plus custom Validators, FormArray, and async validation, all in one go.

AWS Intermediate #2: EC2 Operations — security group, key pair, SSM
10 min read

AWS Intermediate #2: EC2 Operations — security group, key pair, SSM

The daily tools of EC2 operations — designing Security Group rules, how NACLs sit differently, the limits of key pairs and SSM Session Manager, plus baking your AMI to harden the instance skeleton.

Django Intermediate #1: Class-Based Views in Depth
8 min read

Django Intermediate #1: Class-Based Views in Depth

From FBV to CBV — Generic CBVs (ListView/DetailView/CreateView/UpdateView/DeleteView), Mixin patterns, and the override points you need to know.

Docker Advanced #1: BuildKit and buildx — What the Builder Actually Is
8 min read

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
16 min read

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)
6 min read

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
11 min read

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
5 min read

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
7 min read

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
11 min read

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
7 min read

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
9 min read

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.