All posts
Build a Blog with Next.js #4: Comments (Server Actions)
Let users comment on each post. Handle form submission and validation with Server Actions, polish UX with useActionState, and apply the patterns to a real build.
Django Basics #2: Project Setup — uv + django-admin startproject
Create a Django 5 project with uv, lay down the first structure with startproject/startapp, and reach runserver in one breath.
Docker Intermediate #1: Multi-stage Builds and Image Slimming
Splitting build dependencies from runtime dependencies inside a single Dockerfile. Multi-stage patterns for Go, Node, and Python, all the way to distroless and scratch — the workflow that takes images from gigabytes down to tens of megabytes.
Modern Python Basics #4: Collections and comprehensions
The role of list/tuple/dict/set, plus comprehensions and generator expressions for building new collections in a single line.
RHEL Basics #5: Users / Groups / Permissions — UID/GID, sudo, ACL
The shape of /etc/passwd and /etc/shadow, the useradd / usermod / groupadd family, what rwx means and chmod's two notations, ACL (getfacl / setfacl) when finer-grained control is needed, and least-privilege sudo — all in one post.
Angular Basics #1: What Is Angular?
For Angular beginners, this post walks through what Angular is, why it was built, and the kind of problems it solves.
AWS Basics #2: IAM — Users, Groups, Roles, Policies
The four elements of IAM — Users, Groups, Roles, Policies. JSON policy syntax, the essence of AssumeRole, and permission design patterns that hold up in production.
Build a Blog with Next.js #3: Tags and Search
Add a per-tag post list page and a search feature driven by URL query parameters. Two dynamic-route patterns (generateStaticParams vs searchParams) appear together.
Django Basics #1: What is Django — Why Django and Where It Fits Next to FastAPI
Why Django was built and where it fits, with a comparison to FastAPI that nails down the value of the full-stack monolith.
Docker Basics #6: .dockerignore and the Build Context — Using the Cache Well
The most common reason builds get slow or images get bloated is mishandling the build context. What it is, how to trim it with .dockerignore, and how to find where the layer cache breaks so you can order your instructions well. Wrap-up for Docker Basics.
Modern Python Basics #3: Control flow — if, while, for, match-case
Indentation-based blocks, range/enumerate/zip, and match-case pattern matching that has a different feel from switch.
RHEL Basics #4: Intro to systemd — Services, Targets, journalctl
systemd is RHEL's PID 1. Starting and stopping services with systemctl, enabling auto-start on boot, selecting the system's mode via targets, writing your first .service unit by hand, and reading every log in one place with journalctl.