All posts

TypeScript Basics #4: Union / Literal / Narrowing
5 min read

TypeScript Basics #4: Union / Literal / Narrowing

Union types and literal types for expressing values that are one of several possibilities, plus narrowing patterns to refine the type inside branches — all in one place.

Angular Basics #6: Router Basics
7 min read

Angular Basics #6: Router Basics

How to lay out the skeleton of a multi-page SPA with Angular Router. From provideRouter setup to routerLink, dynamic parameters, child routes, and lazy loading — all in one place.

AWS Basics #7: CloudWatch Intro — Logs and Metrics
10 min read

AWS Basics #7: CloudWatch Intro — Logs and Metrics

CloudWatch Logs / Metrics / Alarms / Dashboards, log groups and retention, Metric Filters, and the basics of Logs Insights queries — the eyes of every production system.

Django Basics #6: Forms and ModelForm
8 min read

Django Basics #6: Forms and ModelForm

Validation, error display, and CSRF in one Django Form, auto-generate forms from models with ModelForm, and the file-upload pattern.

Docker Intermediate #5: Environment Variables and Secrets
8 min read

Docker Intermediate #5: Environment Variables and Secrets

The shapes of env-var injection, .env files and variable interpolation, env_file vs. environment, compose secrets, BuildKit build-time secrets, and the most common mistake of baking secrets into an image.

K8s Basics #3: kubectl and Your First Pod
13 min read

K8s Basics #3: kubectl and Your First Pod

Time to put your first workload onto the cluster from [#2](/en/posts/k8s-basics-2). We pin the kubectl command pattern in one table, bring up a first Pod imperatively with kubectl run, then rewrite the same shape as a YAML manifest. We inspect the Pod with describe / logs / exec, and end on the question — why one Pod is not enough, which is exactly why the next post needs Deployment.

Modern Python Intermediate #1: dataclass and __slots__
4 min read

Modern Python Intermediate #1: dataclass and __slots__

Every option of @dataclass for short, safe data classes — frozen, kw_only, field() — and __slots__ for memory savings.

RHEL Intermediate #2: LVM — PV/VG/LV, Snapshots, Expansion
13 min read

RHEL Intermediate #2: LVM — PV/VG/LV, Snapshots, Expansion

LVM, the standard for RHEL 9 disk operations, covered in depth. The abstraction layer between physical disks and the filesystem, the three-layer relationship of PV/VG/LV, the full flow of adding a new disk to expand an LV, capturing a pre-backup state with snapshots and rolling back, and thin provisioning and RAID options — all in one post.

TypeScript Basics #3: interface and type alias
5 min read

TypeScript Basics #3: interface and type alias

Two tools for naming and reusing object types — interface and type alias — how to use them, the differences, and when to pick which.

Why Simple-Looking Features Take So Long — Development Estimates and Technical Debt
5 min read

Why Simple-Looking Features Take So Long — Development Estimates and Technical Debt

This post answers the question, "It's just adding one button, so why does it take two weeks?" Without any code, it unpacks the work hidden behind a small visible change, and what technical debt is and how it eats into development speed.

Angular Basics #5: Service and Dependency Injection
8 min read

Angular Basics #5: Service and Dependency Injection

Service and dependency injection (DI) — the tools that pull business logic and shared state out of components in Angular.

AWS Basics #6: Security Basics — MFA, Key Rotation, Least Privilege
11 min read

AWS Basics #6: Security Basics — MFA, Key Rotation, Least Privilege

Enforcing MFA on root and IAM users, automating access-key rotation, auditing permissions with IAM Access Analyzer, least-privilege patterns, and the incidents you actually see in production.