All posts

RHEL Basics #7: Basic Security — firewalld, SSH Hardening
11 min read

RHEL Basics #7: Basic Security — firewalld, SSH Hardening

RHEL's firewall abstraction firewalld and its zone model, the firewall-cmd command set (permanent vs runtime), the four standard SSH hardening steps — disable password auth, key-based auth, lock down root login, change the port, split sshd_config.d. The final post of the series.

TypeScript Basics #1: Getting Started and Setup
8 min read

TypeScript Basics #1: Getting Started and Setup

What TypeScript is, why you would use it, and how to compile and run your first piece of code — all in one go.

Angular Basics #3: Data Binding and Events
8 min read

Angular Basics #3: Data Binding and Events

How Angular templates exchange data and user input — the four binding styles, plus reactive state management with signals.

AWS Basics #4: AWS CLI and SDK Setup
9 min read

AWS Basics #4: AWS CLI and SDK Setup

Installing aws cli v2, aws configure, profiles and the credentials file, how SDKs like boto3 / aws-sdk-js fit in, and the order in which the credential chain flows.

Build a Blog with Next.js #5: SEO and Deployment (Wrap-up)
8 min read

Build a Blog with Next.js #5: SEO and Deployment (Wrap-up)

Optimize for search engines with the metadata API, build sitemap and RSS, and deploy to Vercel. Wrap up with a retrospective across the series and the 31 React posts in total.

Django Basics #3: Models and ORM Basics
7 min read

Django Basics #3: Models and ORM Basics

Define Django models, walk the migration flow, set up ForeignKey/ManyToMany, and use QuerySet filter/get/exclude/order_by — all in one place.

Docker Intermediate #2: Build Cache — BuildKit and Layer Ordering
8 min read

Docker Intermediate #2: Build Cache — BuildKit and Layer Ordering

BuildKit-era build caching, in earnest. Spotting where layer cache breaks, sharing npm/pip caches across builds with --mount=type=cache, parallelizing builds with COPY --link, and external caches via GHA / registry.

Modern Python Basics #5: Functions — argument patterns
5 min read

Modern Python Basics #5: Functions — argument patterns

Defaults, *args/**kwargs, positional-only(/), keyword-only(*) — every tool for writing function signatures expressively.

RHEL Basics #6: Filesystem Basics — XFS, mount, /etc/fstab
10 min read

RHEL Basics #6: Filesystem Basics — XFS, mount, /etc/fstab

RHEL 9's default filesystem XFS and how it differs from ext4, viewing disks with lsblk / df / du, the full cycle of partitioning a new disk, formatting with mkfs.xfs, mounting it, registering permanently in /etc/fstab via UUID, and managing swap.

What Do Developers Actually Do — A Map of Development Roles
8 min read

What Do Developers Actually Do — A Map of Development Roles

We call them all "developers," but front-end, back-end, DevOps, data, and AI engineers do completely different work. This post maps out what each role actually does, for people weighing a career and for people who work alongside developers.

Angular Basics #2: Components and Template Syntax
8 min read

Angular Basics #2: Components and Template Syntax

Create your first Angular project with Angular CLI, then walk through the structure of a component, interpolation, and how to assemble components.

AWS Basics #3: Cost Management — Billing Alerts, Cost Explorer, Free Tier
10 min read

AWS Basics #3: Cost Management — Billing Alerts, Cost Explorer, Free Tier

The limits of the Free Tier, setting up AWS Budgets / billing alerts, analyzing the bill with Cost Explorer, and a tag strategy that holds up in production — the guardrail that prevents first-bill shock.