All posts

Docker in Practice #3: React/Next.js Build Containers — standalone and the NEXT_PUBLIC Place
8 min read

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

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

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

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

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

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

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

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

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

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

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

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.