All posts

IT Literacy for Non-Developers #5: Git and Version Control — How Many People Edit One Codebase
5 min read

IT Literacy for Non-Developers #5: Git and Version Control — How Many People Edit One Codebase

This post explains, without any code, what developers mean by commit, push, merge, and PR. It closes the series by unpacking Git and version control - the way many people edit the same code without losing track of versions - at a non-developer's level.

K8s Basics #7: Namespaces and Labels — Organizing the Cluster
13 min read

K8s Basics #7: Namespaces and Labels — Organizing the Cluster

One thing slipped past quietly through this series — every Pod, Deployment, Service, ConfigMap, and Secret we created landed in the default namespace. And labels have been with us since [#4](/en/posts/k8s-basics-4)'s selector but never got their own pass. This post wraps the series with the two tools — Namespace and labels — that turn a cluster into something a human can read, and previews the next track (K8s Intermediate).

Modern Python Intermediate #5: Decorator patterns
4 min read

Modern Python Intermediate #5: Decorator patterns

Every form of decorators that wrap functions — basic form, parameterized decorators, functools.wraps, class decorators, and ParamSpec.

TypeScript Basics #7: Utility Types and tsconfig
5 min read

TypeScript Basics #7: Utility Types and tsconfig

Standard utility types you will use every day (Partial/Pick/Omit/ReturnType, etc.) and the key tsconfig.json options that control compile behavior — wrapping up the series.

Angular Intermediate #2: Template-driven Forms and a Comparison
7 min read

Angular Intermediate #2: Template-driven Forms and a Comparison

Angular's other form approach — Template-driven Forms — and how it compares to the Reactive Forms we just covered. Which one to pick when, and why.

AWS Intermediate #3: S3 — static hosting and presigned URLs
9 min read

AWS Intermediate #3: S3 — static hosting and presigned URLs

AWS's oldest object storage, S3. The shape of a bucket and the global uniqueness of names, policies and Public Access Block, static site hosting, presigned URLs, and how to lower cost with storage classes.

Django Intermediate #2: ORM Advanced — annotate, aggregate, F/Q, prefetch_related
8 min read

Django Intermediate #2: ORM Advanced — annotate, aggregate, F/Q, prefetch_related

The proper Django ORM tools — aggregation, expressions, complex conditions, relation prefetch. The N+1 problem and how to solve it.

Docker Advanced #2: Multi-Architecture Images — amd64 and arm64 Together
7 min read

Docker Advanced #2: Multi-Architecture Images — amd64 and arm64 Together

The "image built on Apple Silicon doesn't run on the production server" incident vanishes with one multi-arch build line. The shape of a manifest list, the cost of QEMU emulation, native ARM builders, and verifying results with docker buildx imagetools.

K8s Basics #6: ConfigMap and Secret — Splitting Out Configuration
15 min read

K8s Basics #6: ConfigMap and Secret — Splitting Out Configuration

Through [#5](/en/posts/k8s-basics-5), one thing in our manifest is still awkward — image tags, ports, and domains are written directly into it. This post pulls those out into two objects: ConfigMap and Secret. The K8s way to apply the 12-factor "store config in the environment" rule, three injection methods (env / envFrom / volume), the one-line caveat that Secret is not actually encryption, and why a Pod restart is needed when config changes.

Modern Python Intermediate #4: Iterables/generators/yield from
4 min read

Modern Python Intermediate #4: Iterables/generators/yield from

How for works — the iterable protocol, generator functions and expressions, delegation with yield from, and send/throw — all in one place.

RHEL Intermediate #5: Log Management — journald, rsyslog, log rotation
11 min read

RHEL Intermediate #5: Log Management — journald, rsyslog, log rotation

RHEL 9 uses journald as the primary log tool and rsyslog as the secondary, with text log files rotated automatically by logrotate. This post covers journald's retention policy and disk usage control, rsyslog's continuing role as the old-guard standard, the flow of collecting logs on a central server, and how to write logrotate rules from scratch — all from an operational perspective.

TypeScript Basics #6: Generics in Depth
4 min read

TypeScript Basics #6: Generics in Depth

Tools that draw out the real expressive power of generics — constraints, multiple type parameters, generic interfaces/classes, keyof, and indexed access types.