← All courses

⚙️ 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

  1. 01

    Linux — Why Data Work Lives on This OS, and at a Prompt

    corebeginnercoming soon
  2. 02

    The File System — Paths, ls, cp, mv, find and Where Your Data Lives

    corebeginnercoming soon
  3. 03

    ps, df, systemctl & journalctl — Reading the Machine Your Job Runs On

    corebeginnercoming soon
  4. 04

    cat, less, head, tail & wc — Look at Data Without a Database

    corebeginnercoming soon
  5. 05

    Pipes & Redirection — Compose Tiny Tools into a Pipeline

    corebeginnercoming soon
  6. 06

    cut, grep, sort & uniq — Slice Columns and Rows on the Command Line

    corebeginnercoming soon
  7. 07

    sed & awk — Reshape CSV and TSV Text Streams

    corebeginnercoming soon
  8. 08

    ssh, scp & rsync — Move Data Between Machines

    beginnercoming soon
  9. 09

    Connection Failures — Host, Port, Firewall, Credentials and TLS

    corebeginnercoming soon
  10. 10

    Permissions, Users & Environment Variables — Secrets a Job Can Read

    corebeginnercoming soon
  11. 11

    Docker — Images, Containers, and the Commands You Actually Type

    corebeginnercoming soon
  12. 12

    VS Code — Remote-SSH, Dev Containers, and Editing Where the Data Is

    corebeginnercoming soon
  13. 13

    code-server — VS Code in a Browser, SSH FS, and AI Chat on the Box

    beginnercoming soon
  14. 14

    cron & systemd Timers — Turn a Script into a Nightly Job

    corebeginnercoming soon
  15. 15

    File Backups — tar, rsync Snapshots, Rotation, and Proving a Restore Works

    corebeginnercoming soon
  16. 16

    Git — Version Control for the Scripts and Config That Run Your Data

    corebeginnercoming soon
  17. 17

    Bash Glue — Variables, Loops, Exit Codes & Logging for ETL

    corebeginnercoming soon
  18. 18

    VPS & Cloud Compute — Getting a Linux Box, and Sizing It for Data

    corebeginnercoming soon
  19. 19

    S3 Object Storage — Backblaze, R2, rclone, and the Offsite Copy

    corebeginnercoming soon
  20. 20

    NGINX — One Public Door for Everything Listening on localhost

    corebeginnercoming soon
  21. 21

    Let's Encrypt — HTTPS in Ten Minutes, and the Renewal That Fails Silently

    corebeginnercoming soon
  22. 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

  1. 01

    Transactions & ACID — BEGIN, COMMIT, ROLLBACK and What They Guarantee

    coreintermediatecoming soon
  2. 02

    Isolation Levels: The ANSI Four — Dirty Reads, Phantoms & What Postgres Really Does

    coreintermediatecoming soon
  3. 03

    MVCC, Bloat & VACUUM — Why Postgres Keeps Old Row Versions

    coreintermediatecoming soon
  4. 04

    Locks & Deadlocks — Why Your UPDATE Is Hanging

    coreintermediatecoming soon
  5. 05

    Connections & Pooling — PgBouncer and the Limit You Will Hit

    coreintermediatecoming soon
  6. 06

    Configuration & Memory — shared_buffers, work_mem and Defaults Worth Changing

    intermediatecoming soon
  7. 07

    Backup & Restore — pg_dump, PITR, and Proving It Actually Restores

    coreintermediatecoming soon
  8. 08

    Schema Migrations Without Downtime — Locks, Defaults & the Safe Order

    coreintermediatecoming soon
  9. 09

    Roles, Grants & Row-Level Security — Least Privilege for Data Access

    coreintermediatecoming soon
  10. 10

    Replication & Upgrades — Read Replicas, Failover and Major-Version Moves

    intermediatecoming soon
  11. 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

  1. 01

    Scheduling at Scale — Choosing Between cron, systemd Timers and an Orchestrator

    coreadvancedcoming soon
  2. 02

    Rundeck — What It Is, What Data Teams Use It For, and Running One in Docker

    coreadvancedcoming soon
  3. 03

    Jenkins — What It Is, Why Data Jobs End Up on It, and Running One in Docker

    advancedcoming soon
  4. 04

    Logging & Structured Output — Make a Failure Readable at 3 a.m.

    coreadvancedcoming soon
  5. 05

    Monitoring & Metrics — Watch Postgres, Disk and Job Health

    advancedcoming soon
  6. 06

    Alerting & On-Call — Page a Human Only When It Matters

    advanced#google-srecoming soon
  7. 07

    Freshness & Volume Checks — Catch a Pipeline That Silently Stopped

    coreadvancedcoming soon
  8. 08

    Incident Response & Postmortems — Diagnose, Fix, Write It Down

    advanced#google-srecoming soon
  9. 09

    Capacity, Storage & Retention — Disk, Partitions and TTL

    advancedcoming soon
  10. 10

    Cost Control — Compute, Storage and Where the Money Goes

    advancedcoming soon
  11. 11

    Project — Put a Northwind Pipeline On Call

    coreadvanced#projectcoming soon

Where this leads


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