⚙️ Data Ops
The terminal, the scheduler, and the database that has to stay up — Linux glue, running PostgreSQL in production, and keeping pipelines reliable.
No lessons published yet — this is the roadmap, so you can see exactly what the course will cover before it lands.
Before you start: Learn SQL — Series 1. Series 2 is PostgreSQL under load — transactions, locks, MVCC. You need to be able to write and read the queries you are watching block each other.
Short on time? The 34 episodes marked core are the shortest path to being productive at work. Start there and pick up the rest whenever a job asks for them.
Series 1 · Linux for Data
do real data work from the terminal, with shell tools alone
- 01
Linux — Why Data Work Lives on This OS, and at a Prompt
corebeginnercoming soon - 02
The File System — Paths, ls, cp, mv, find and Where Your Data Lives
corebeginnercoming soon - 03
ps, df, systemctl & journalctl — Reading the Machine Your Job Runs On
corebeginnercoming soon - 04
cat, less, head, tail & wc — Look at Data Without a Database
corebeginnercoming soon - 05
Pipes & Redirection — Compose Tiny Tools into a Pipeline
corebeginnercoming soon - 06
cut, grep, sort & uniq — Slice Columns and Rows on the Command Line
corebeginnercoming soon - 07
sed & awk — Reshape CSV and TSV Text Streams
corebeginnercoming soon - 08
ssh, scp & rsync — Move Data Between Machines
beginnercoming soon - 09
Connection Failures — Host, Port, Firewall, Credentials and TLS
corebeginnercoming soon - 10
Permissions, Users & Environment Variables — Secrets a Job Can Read
corebeginnercoming soon - 11
Docker — Images, Containers, and the Commands You Actually Type
corebeginnercoming soon - 12
VS Code — Remote-SSH, Dev Containers, and Editing Where the Data Is
corebeginnercoming soon - 13
code-server — VS Code in a Browser, SSH FS, and AI Chat on the Box
beginnercoming soon - 14
cron & systemd Timers — Turn a Script into a Nightly Job
corebeginnercoming soon - 15
File Backups — tar, rsync Snapshots, Rotation, and Proving a Restore Works
corebeginnercoming soon - 16
Git — Version Control for the Scripts and Config That Run Your Data
corebeginnercoming soon - 17
Bash Glue — Variables, Loops, Exit Codes & Logging for ETL
corebeginnercoming soon - 18
VPS & Cloud Compute — Getting a Linux Box, and Sizing It for Data
corebeginnercoming soon - 19
S3 Object Storage — Backblaze, R2, rclone, and the Offsite Copy
corebeginnercoming soon - 20
NGINX — One Public Door for Everything Listening on localhost
corebeginnercoming soon - 21
Let's Encrypt — HTTPS in Ten Minutes, and the Renewal That Fails Silently
corebeginnercoming soon - 22
Project — A Nightly Job Written Only With Shell Tools
corebeginner#projectcoming soon
Series 2 · Running PostgreSQL in Production
run PostgreSQL yourself — backups, locks, migrations, users
- 01
Transactions & ACID — BEGIN, COMMIT, ROLLBACK and What They Guarantee
coreintermediatecoming soon - 02
Isolation Levels: The ANSI Four — Dirty Reads, Phantoms & What Postgres Really Does
coreintermediatecoming soon - 03
MVCC, Bloat & VACUUM — Why Postgres Keeps Old Row Versions
coreintermediatecoming soon - 04
Locks & Deadlocks — Why Your UPDATE Is Hanging
coreintermediatecoming soon - 05
Connections & Pooling — PgBouncer and the Limit You Will Hit
coreintermediatecoming soon - 06
Configuration & Memory — shared_buffers, work_mem and Defaults Worth Changing
intermediatecoming soon - 07
Backup & Restore — pg_dump, PITR, and Proving It Actually Restores
coreintermediatecoming soon - 08
Schema Migrations Without Downtime — Locks, Defaults & the Safe Order
coreintermediatecoming soon - 09
Roles, Grants & Row-Level Security — Least Privilege for Data Access
coreintermediatecoming soon - 10
Replication & Upgrades — Read Replicas, Failover and Major-Version Moves
intermediatecoming soon - 11
Project — Migrate a Live Table Without Blocking Anyone
coreintermediate#projectcoming soon
Series 3 · Reliability
keep jobs running, and find out fast when one stops
- 01
Scheduling at Scale — Choosing Between cron, systemd Timers and an Orchestrator
coreadvancedcoming soon - 02
Rundeck — What It Is, What Data Teams Use It For, and Running One in Docker
coreadvancedcoming soon - 03
Jenkins — What It Is, Why Data Jobs End Up on It, and Running One in Docker
advancedcoming soon - 04
Logging & Structured Output — Make a Failure Readable at 3 a.m.
coreadvancedcoming soon - 05
Monitoring & Metrics — Watch Postgres, Disk and Job Health
advancedcoming soon - 06
Alerting & On-Call — Page a Human Only When It Matters
advanced#google-srecoming soon - 07
Freshness & Volume Checks — Catch a Pipeline That Silently Stopped
coreadvancedcoming soon - 08
Incident Response & Postmortems — Diagnose, Fix, Write It Down
advanced#google-srecoming soon - 09
Capacity, Storage & Retention — Disk, Partitions and TTL
advancedcoming soon - 10
Cost Control — Compute, Storage and Where the Money Goes
advancedcoming soon - 11
Project — Put a Northwind Pipeline On Call
coreadvanced#projectcoming soon
Where this leads
- Continuous Delivery — starts from Series 1 · 43, and Series 3.
- Kubernetes for Data Workloads — starts from Series 1, and Series 1 · 37 in particular.
- Storage for Data — starts from Series 1.
- Terraform & Pulumi — starts from Series 1, and Series 1 · 46 and Series 1 · 47 in particular.
- Virtualization for Data — starts from Series 1.
Not here, on purpose
- Writing and tuning the queries themselves — covered in Learn SQL, Series 3 — EXPLAIN, indexes and the query-tuning project
- Row-level data quality, dedup & conformance — covered in Learn ETL & Data Pipelines — here we watch whether the pipeline ran at all
- Schema design & normalization — covered in Learn Data Modeling; this track only migrates a schema safely
- Kubernetes, Terraform and infrastructure as code — not covered; this track is the machine, the database and the job — the things a data person is actually handed. In this course, Series 1 · 46 is how you obtain one machine and size it for data work, and Series 1 · 47 is the object storage beside it. Both stop there
- Python as a language for writing the jobs — covered in Python for Data. In this course, Series 1 is the shell tools you reach for when there is no Python on the box
- Building the pipeline's logic — covered in ETL & Data Pipelines — here it already exists and has to keep running
- Continuous integration, deployment pipelines and shipping a change safely — covered in Continuous Delivery, which owns the whole subject. In this course, Series 3 · 04 is the CI server used as a job runner, which is the opposite subject
- Expressing a pipeline as a DAG of dependent steps — covered in ETL & Data Pipelines, Series 2 · 45, which is how a pipeline expresses its own dependencies. In this course, Series 3 · 00 is choosing what runs it and keeping that thing alive