Trainee Pre-work
What to send attendees before training day
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 management → Copy 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.
- Open the source repo: github.com/jinjuewei/MHPDataEngineerWorkshop
- Settings → Collaborators (or Manage access on an org repo)
- Add people — search by GitHub username or GitHub account email from the roster
- Role: Read (enough to fork and clone; no write needed on the upstream repo)
- 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 MHPDataEngineerWorkshop — labs 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
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}