All posts

Django Intermediate #7: Testing — Django TestCase, fixtures, pytest-django
8 min read

Django Intermediate #7: Testing — Django TestCase, fixtures, pytest-django

TestCase and Client, fixtures vs factory_boy, the fixture model of pytest-django — Django ecosystem testing tools, all in one place.

Docker in Practice #1: Containerizing FastAPI — uv, Multi-stage, non-root
8 min read

Docker in Practice #1: Containerizing FastAPI — uv, Multi-stage, non-root

First post of the practice series. Containerizing the most common scenario — a FastAPI app. Slim base on uv, multi-stage to separate build from runtime deps, a non-root user, and HEALTHCHECK — in a shape that goes straight to production.

K8s Intermediate #4: resources.requests / limits — Pod Resource Requests and Limits
17 min read

K8s Intermediate #4: resources.requests / limits — Pod Resource Requests and Limits

[#3](/en/posts/k8s-intermediate-3) covered the path of external traffic into the cluster. This post moves the viewpoint back inside the Pod — the model of how a container requests and is limited on CPU and memory. `resources.requests` is what the scheduler sees when picking a node; `resources.limits` is the runtime cap kubelet enforces. This post walks through the separation of the two, QoS classes (Guaranteed / Burstable / BestEffort), the difference between CPU throttling and OOMKilled, JVM/Go runtime cgroup awareness, and the pattern of setting namespace defaults via `LimitRange` — all in one cycle.

Modern Python Advanced #2: Descriptors and __set_name__
3 min read

Modern Python Advanced #2: Descriptors and __set_name__

How property works — the __get__/__set__ protocol and data/non-data descriptors, and clean validation fields with __set_name__.

RHEL Intermediate #7: Intro to Containers — Podman/Buildah/Skopeo
11 min read

RHEL Intermediate #7: Intro to Containers — Podman/Buildah/Skopeo

RHEL 9's container standard is Podman. This post looks at how it uses nearly the same commands as Docker while running without a daemon, defaulting to rootless mode, and integrating naturally with systemd — all from an operational perspective. Also covered: building images with Buildah and moving them between registries with Skopeo.

TypeScript + React in Practice #4: Typing events and forms
3 min read

TypeScript + React in Practice #4: Typing events and forms

What types to use for React event objects and how to type controlled/uncontrolled forms in TypeScript — with practical patterns.

Angular Intermediate #6: Guards and Resolvers
9 min read

Angular Intermediate #6: Guards and Resolvers

Angular's Guards and Resolvers — tools that intercept the flow before a route is entered. Function-based canActivate, canMatch, canDeactivate, plus Resolvers that pre-fetch data.

AWS Intermediate #7: CloudFront for static site delivery
10 min read

AWS Intermediate #7: CloudFront for static site delivery

AWS's global CDN, CloudFront. The Origin / Behavior / Cache Policy flow, the S3 + CloudFront static-hosting pattern, how OAC fronts S3 safely, and the operational side of invalidations.

Django Intermediate #6: Static/Media Operations and Storage Backends
8 min read

Django Intermediate #6: Static/Media Operations and Storage Backends

The difference between STATIC_* and MEDIA_*, the meaning of collectstatic, and storage backends like S3/WhiteNoise — the place where development crosses over to production.

Docker Advanced #6: Production Operations — graceful shutdown, healthcheck, restart
9 min read

Docker Advanced #6: Production Operations — graceful shutdown, healthcheck, restart

PID 1 signal handling, the precise SIGTERM graceful shutdown flow, where init and dumb-init fit, restart policies in depth, liveness vs. readiness — the small details that keep one container running steadily in production. The wrap-up of Docker Advanced.

K8s Intermediate #3: Ingress and Ingress Controller — The External Entry Point
18 min read

K8s Intermediate #3: Ingress and Ingress Controller — The External Entry Point

[K8s Basics #5](/en/posts/k8s-basics-5) covered LoadBalancer as the standard external entry point, but when dozens of Services need external exposure, spinning up one cloud LoadBalancer per Service quickly inflates cost and management overhead. Routing by domain or path also can't be solved with a single LoadBalancer. This post follows the object that gathers that burden in one place — `Ingress` — and the Ingress Controller (nginx / Traefik / GKE Ingress / AWS ALB Controller) that turns those manifests into actual traffic, walking through the two-layer model, host/path-based routing, `pathType`, TLS termination, and `IngressClass` in one cycle.

Modern Python Advanced #1: Magic methods in depth and protocols
4 min read

Modern Python Advanced #1: Magic methods in depth and protocols

Every hook where Python objects integrate with language features — __call__, __getitem__, __hash__, __format__, __getattr__ — gathered in one place.