Trainee Pre-work

What to send attendees before training day

TRAINER ONLY

Attendees do not build or fork the training website. They read modules, setup guides, and exercises on the hosted site. They fork the GitHub repo for lab code (Codespaces, dbt, notebooks) — that is the expected path for everyone. Lab source files exists only as a facilitator-approved emergency when GitHub is genuinely impossible before class.

Trainee-facing steps live on Prerequisites. This page is your comms runbook: URLs, timing, and what to verify before the room opens.


URLs to send

What URL
Training site (primary) https://mhp-data-engineer-2026.pages.dev/
Prerequisites (send this link) https://mhp-data-engineer-2026.pages.dev/setup/prerequisites.html
Snowflake setup https://mhp-data-engineer-2026.pages.dev/setup/snowflake-setup.html
Databricks setup https://mhp-data-engineer-2026.pages.dev/setup/databricks-setup.html
dbt setup https://mhp-data-engineer-2026.pages.dev/setup/dbt-setup.html
Code repo to fork https://github.com/jinjuewei/MHPDataEngineerWorkshop
Mirror (optional preview) https://site-lemon-zeta.vercel.app/token only, no My Workshop or check-in

Send the workshop token (WORKSHOP_TOKEN) out of band — same value on Cloudflare and Vercel. On Cloudflare, trainees also enter the email address you registered on the roster when the Workshop Access prompt appears. The Vercel mirror accepts the token only (content preview).

Portal link (per cohort): manage roster in Trainee managementCopy portal link…/trainee-portal.html?cohort=YYYYMMDD-slug. Trainees use My Workshop to copy ATTENDEE_ID and secrets.

Check-in link (training morning): …/sign-in.html?cohort=YYYYMMDD-slug — same cohort id. Trainees check in before Module 1; co-trainer monitors Attendance.


GitHub fork access (trainer runbook)

Trainees need a personal fork of MHPDataEngineerWorkshop for Codespaces, dbt, and notebooks. If the source repo is private or fork access is restricted, you must invite each trainee on GitHub before they can fork.

1. Collect GitHub identity on the roster

In Trainee management, for every trainee row fill at least one of:

Column Use when
GitHub user You know their @handle (no @ needed in the form)
GitHub email You only have the email on their GitHub account — GitHub can match invites by email

The roster Email column is for Workshop Access sign-in on the training site. It may differ from their GitHub account email — keep both when they differ.

Ask for GitHub handle in your 1–2 weeks before email (template below). Update the roster as replies arrive.

2. Grant fork access on GitHub

Do this before you tell trainees to complete Prerequisites § Step 2 — typically 1–2 weeks before class, same window as Databricks invites.

  1. Open the source repo: github.com/jinjuewei/MHPDataEngineerWorkshop
  2. Settings → Collaborators (or Manage access on an org repo)
  3. Add people — search by GitHub username or GitHub account email from the roster
  4. Role: Read (enough to fork and clone; no write needed on the upstream repo)
  5. Repeat for every trainee; same-day additions: add row in Trainee management → invite on GitHub → tell them to accept before forking

Trainees receive a GitHub email to accept the invite. They fork after acceptance.

3. Verify before class

Checklist mirror: Pre-class checklist § Trainee roster & portal.


Emergency fallback — no GitHub (rare)

Default expectation: every trainee has GitHub, accepts your collaborator invite, forks, and uses Codespaces. Do not offer Lab source files in the main pre-class email.

Use the emergency path only when someone truly cannot use GitHub before class (org block, no account possible in time) and you approve it. Then send them Lab source files directly — do not broadcast it to the cohort.

Normal path Emergency alternative (your approval)
Fork + Codespace Download module ZIP from Lab source files; unzip locally
Databricks Git folder Manual notebook import from ZIP
Snowflake Git workspace Copy SQL via View & copy on Lab source files
dbt in Codespace Local Python 3.13+ + uv pip install from unzipped bundle
GitHub roster columns Leave GitHub user / GitHub email blank; note “emergency — lab sources” in your own tracker

If you approve emergency access

# Task Where documented
1 Training site + token + roster email Prerequisites § Step 1
2 Skip fork — Lab source files per module Lab source files
3 Local Python + deps from unzipped bundle Prerequisites § Emergency fallback
4–8 Same as main table: Snowflake trial, Databricks; .env + dbt debug before Module 4 Prerequisites · Exercise: dbt § Configure .env

Allow extra facilitator time in Modules 2–3 for manual import and SQL copy-paste.


When to send what

When Send Purpose
1–2 weeks before Site URL + token + roster email reminder + Prerequisites link + GitHub handle request + fork/Codespace instructions after GitHub invite Databricks invite can go in the same email; send GitHub collaborator invites first
Day before Short reminder + day-of checklist below Catch stragglers on Snowflake trial (.env waits until Module 4)
Training morning Check-in link + portal link (same ?cohort=) Attendance + credentials
Module 2 Databricks workspace URL (if not already in invite) · ADLS2 storage account access key (verbal/printed) Notebook 00_setup.py
Module 3 ADLS2 SAS token (printed card) Snowflake external stage
Module 3 Verbal reminder: run 05_cortex_access.sql on personal trial Cortex LLM (Module 6) and ML (Module 9) — facilitator has no Snowflake login
Module 6 Reminder: trial payment method optional — needed to run AI_COMPLETE(); review-only OK without card Exercise: AI Features
Module 8 Aiven URI + certs Streaming optional

Full credential timing: Pre-class checklist § Credential distribution.


What trainees should finish before training day

Use this as your pre-class expectation and as the body of your attendee emails.

Must complete before the workshop starts

# Task Where documented
1 Open the training site (Cloudflare URL + workshop token + your roster email) and bookmark Prerequisites Prerequisites § Step 1
2 Accept GitHub collaborator invite, then fork MHPDataEngineerWorkshoplabs only, not for reading modules Prerequisites § Step 2 · GitHub fork access § 2
3 Create a Codespace from the fork and confirm the terminal opens Prerequisites § Step 3
4 Snowflake trial + Git workspace or copy-paste; setup per Exercise: Snowflake § account setup Snowflake setup
5 Accept Databricks invite and confirm login (email sent 1–2 weeks before) Databricks setup
6 Before Module 4: Exercise: dbt § Configure .env in Codespace dbt setup
7 Run bash .devcontainer/setup-environment.sh or restart the Codespace after editing .env Same section
8 dbt --version shows dbt-core 1.11.8, dbt-databricks 1.12+, dbt-snowflake 1.11.5+; dbt debug --target snowflake passes (Snowflake vars only is OK pre-class) Root pyproject.toml · Exercise: dbt § Configure .env

Trainer provides during class (not pre-work)

Item When
ATTENDEE_ID Module 1 — needed when configuring Exercise: dbt § Configure .env before Module 4
Databricks PAT + HTTP path (if not done yet) Module 2 / 4
ADLS2 storage account access key Module 2
ADLS2 SAS token Module 3
Cortex access (05_cortex_access.sql) Module 3 — trainee runs on their own trial; facilitator reminds and troubleshoots only
Cortex trial payment method (optional) Module 6 — add card in Admin → Billing & Terms to run AI_COMPLETE(); review SQL only without card
Aiven credentials Module 8

Optional (not required for main day)

Task Notes
Power BI Desktop (Windows) Self-paced after Module 4 — Power BI setup
Local clone instead of Codespaces Supported; see Prerequisites

Trainer verification (day before or morning)

Walk through this before you send the day-before reminder — or spot-check one volunteer machine:

Checklist items also on Day before and Materials § Attendee comms.


Email templates

Note

Replace {DATE}, {TOKEN}, {EMAIL}, and trainer contact details. Do not put ADLS2 storage account access keys or ADLS2 SAS tokens in email — distribute per credential schedule.

Each attendee must sign in with their own roster email (the address you add in Trainee management) plus the shared workshop token.

1–2 weeks before

Subject: MHP Data Engineer Masterclass — setup before {DATE}

Hi everyone,

Please complete setup before we meet on {DATE} (about 30–45 minutes).

Reply with your GitHub username (@handle) or the email on your GitHub account
so we can grant access to the lab repository before you fork it.
(Create a free GitHub account if you do not have one — that is required for labs.)

1) Training website (modules, exercises, setup guides)
   https://mhp-data-engineer-2026.pages.dev/
   Access token: {TOKEN}
   Sign in with token + the email we registered for you (example: {EMAIL})
   Start here: https://mhp-data-engineer-2026.pages.dev/setup/prerequisites.html

   You do not need to build the website from GitHub — use this URL only.

2) Lab environment (GitHub Codespaces)
   Wait for our GitHub invite email, accept it, then fork:
   https://github.com/jinjuewei/MHPDataEngineerWorkshop
   Then: Code → Codespaces → Create codespace on main

3) Snowflake trial (your own account)
   https://signup.snowflake.com/
   Choose: AI Data Cloud (not Cortex Code CLI) · Azure · West Europe · Enterprise
   (Cloud, region, and edition cannot be changed after signup.)
   Snowflake emails an activation link — check Spam/Junk if you don't see it within ~10 minutes.

4) Save your Snowflake login details — you will paste them into `.env` in the Codespace **before Module 4** (not now):
   https://mhp-data-engineer-2026.pages.dev/exercises/ex-dbt.html#configure-env
   We will give you your ATTENDEE_ID on the training day (needed for the same step).

Databricks: watch for a workspace invite email from us.

Questions? Reply to this thread.

{Trainer names}

Day before

Subject: Reminder — workshop tomorrow ({DATE})

Tomorrow we start at {TIME}.

Before you arrive, please confirm:
☐ GitHub collaborator invite accepted and repo forked
☐ Training site opens (https://mhp-data-engineer-2026.pages.dev/) with token {TOKEN} and your roster email
☐ Codespace opens from your fork
☐ Snowflake trial login works
☐ Before Module 4: `.env` configured — https://mhp-data-engineer-2026.pages.dev/exercises/ex-dbt.html#configure-env
☐ dbt debug --target snowflake passes (after `.env` step)

Full pre-class steps: https://mhp-data-engineer-2026.pages.dev/setup/prerequisites.html

We will assign your ATTENDEE_ID at the start of the day.

See you tomorrow,
{Trainer names}