All posts

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.

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.