All posts
Docker in Practice #3: React/Next.js Build Containers — standalone and the NEXT_PUBLIC Place
Wrapping a Next.js app into a container. The deps → build → runner three-stage pattern with standalone output, the build-time-baking issue with NEXT_PUBLIC env vars, the static-export option, and hosting a Vite SPA with nginx.
K8s Intermediate #6: Autoscaling — HPA / VPA / Cluster Autoscaler
The model covered through [#5](/en/posts/k8s-intermediate-5) was at the dimension of a single Pod's resources and health signals. But operational load swings with time, user patterns, and events, and having a person manually adjust `replicas` each time quickly hits a wall. This post walks through the three dimensions of autoscaling that fill that gap — `HPA` which auto-scales Pod count, `VPA` which auto-recommends and adjusts a Pod's resource requests/limits, and `Cluster Autoscaler` which auto-adds and removes nodes themselves — in one cycle. The metrics-server precondition, HPA's `autoscaling/v2` manifest and algorithm, the asymmetric `behavior` of scale up/down, custom metrics and KEDA, VPA's three components, HPA/VPA conflict, Karpenter — all included.
Modern Python Advanced #4: Async in depth — event loop, gather/wait, async generator
The next step from intermediate intro — how the event loop actually works, the difference between Future and Task, gather vs wait, async generator, and async iteration.
RHEL Advanced #2: Kernel Tuning — sysctl, tuned, kdump
How to use sysctl to adjust kernel behavior at runtime, separating permanent settings into /etc/sysctl.d/, swapping workload profiles in one line with tuned, and capturing memory dumps at the moment of a kernel panic with kdump and analyzing them with crash — all in one cycle. Common keys like vm.swappiness and net.core.somaxconn, and the differences between tuned profiles, are covered together.
TypeScript + React in Practice #6: Fetch and API response typing
The limits and risks of generic fetchers, and patterns for truly safe handling of external data using zod runtime validation.
Angular Advanced #1 Change Detection — Default, OnPush, Zoneless
A walk-through of Change Detection — the heart of Angular performance — from start to finish. We cover the Default and OnPush strategies, the role of NgZone and zone.js, and Zoneless Angular, which arrived on the back of Signals.
AWS Advanced #2: ECR — Image Registry
Amazon ECR private / public, IAM auth, docker push / pull, image scanning, lifecycle policies, multi-architecture (linux/amd64 + arm64) — where the images that ECS and Lambda will pull actually live.
Django Advanced #1: Async views and ASGI
Django's async camp — async def view, ORM's a-prefixed methods, async middleware, sync_to_async/async_to_sync, and ASGI servers.
Docker in Practice #2: Django + PostgreSQL compose — Two Containers as One
Bundling a Django app and PostgreSQL into one docker compose file. Migration entrypoint, depends_on relying on healthcheck, data volumes, .env separation, and collectstatic — a production-shaped compose setup.
K8s Intermediate #5: Health Checks — liveness / readiness / startup probes
If [#4](/en/posts/k8s-intermediate-4) covered the Pod's resource model, this post covers the model of how K8s judges whether a container is "alive" and "ready to take traffic." Three kinds of probes — liveness, readiness, startup — each play a different role, and misconfiguring them leads directly to operational incidents like infinite restart loops, traffic misses, and startup failure. This post walks through `httpGet` / `tcpSocket` / `exec` check methods, common parameters like `initialDelaySeconds` / `periodSeconds` / `failureThreshold`, the cascading failure that happens when external dependencies are put into liveness, and the graceful shutdown drawn by `terminationGracePeriodSeconds` and the PreStop hook — all in one cycle.
Modern Python Advanced #3: Metaclasses — when do you really need them?
Classes that build classes — what type really is, division of labor with __init_subclass__, what class decorators can solve, and the narrow places where you really need a metaclass.
RHEL Advanced #1: Boot Process — GRUB2, dracut, Recovery Mode
Step-by-step organization of the entire flow from a RHEL machine being powered on to the login prompt appearing. UEFI/BIOS, GRUB2 configuration with grub2-mkconfig, initramfs and dracut regeneration, systemd targets and default.target, rescue/emergency mode, and the procedure to recover the root password by editing GRUB — all covered in one cycle.