All posts
Modern Python in Practice #4: Authentication — OAuth2 Password Flow + JWT
Password hashing (argon2/bcrypt), the OAuth2 password flow, JWT issuance/verification, and a clean current_user dependency for authenticated routes.
RHEL in Practice #2: Database Operations — PostgreSQL on RHEL
The second post in the RHEL in Practice track. Having stood up the web tier, we move to the data tier behind it: installing and initializing PostgreSQL via RHEL's AppStream modules. We cover the data directory and SELinux context, postgresql.conf / pg_hba.conf settings and the firewalld opening for remote access, and everything from creating users and databases to backup, recovery, and diagnosis when you get stuck — all from a real operations perspective.
Testing #4 — Async and Network Mocking with MSW
The post for components that fetch data. When to use findBy and waitFor, why we intercept the network layer with MSW instead of mocking fetch directly, writing handlers and happy-path / error-path scenarios, and the common async pitfalls.
TypeScript Advanced #7: Practical patterns and anti-patterns
Criteria that separate good types from over-typing — any/unknown/never, as const and satisfies, plus the anti-patterns people fall into and how to fix them.
Angular in Practice #1: Building the Dashboard Foundation
The first post in the practice series. We create the project with ng new, layer Angular Material on top, lay out the main layout with mat-toolbar and mat-sidenav, and stand up the lazy-loading routes — the skeleton.
AWS Certified Cloud Practitioner (CLF-C02) #3 Domain 1-2 Cloud Design — The Six Well-Architected Pillars
The second half of CLF-C02 Domain 1. We unpack the six pillars of the AWS Well-Architected Framework — Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization, and Sustainability — and organize the design principles and exam-scenario mappings for each. We also fix the common mistake of memorizing only five pillars and forgetting Sustainability, which was added in December 2021. From #4 onward we head into Domain 2 Security, the 30% giant.
AWS in Practice #2: RDS Integration and Migration Operations
RDS Postgres Multi-AZ inside the VPC, Security Group design, password injection through Secrets Manager, the operational side of Alembic / Django migrations, and blue/green-compatible migration patterns.
Django DRF #1: Getting Started — Serializer, ViewSet, Router
The standard for laying a REST API on top of Django — DRF Serializer/ViewSet/Router fundamentals in one place.
K8s Advanced #5: Observability — Prometheus / Grafana / Loki / OpenTelemetry
Operational cluster observability is composed of three axes — metrics, logs, and traces. The K8s standard stack for each axis is nearly settled. Metrics with Prometheus + kube-state-metrics + node-exporter, logs with Loki (or EFK), traces with OpenTelemetry, visualization with Grafana, alerting with Alertmanager. This post organizes the three-axis model, the standard components for each axis, and operational principles like cardinality, retention period, and alert design — all in one cycle.
Modern Python in Practice #3: Connecting a DB — SQLAlchemy 2.x + Alembic
SQLAlchemy 2.x's new style — Mapped/mapped_column, async sessions, integration with FastAPI's dependency injection, and Alembic migrations.
RHEL in Practice #1: Running a Web Server — nginx, systemd, SELinux Policy
The first post in the RHEL in Practice track. It brings together the systemd, SELinux, and firewalld knowledge from the basics, intermediate, and advanced series, and walks one full cycle of standing up an nginx web server properly on RHEL. Package install and service registration, SELinux context and port labels, opening firewalld, plus the spots where non-standard ports and document roots most often trip people up — all covered from a real operations angle.
Testing #3: React Testing Library — See Like a User
RTL's philosophy and your first component test. Where render and screen fit, the priority order of queries like getByRole/getByLabelText/getByText, why you don't reach for querySelector, and how jest-dom matchers help.