Newsletter (Data Profession Weekly)
Each weekly issue is one file in _newsletter/, named by its Monday date (_newsletter/2026-10-26.md). It is published at /newsletter/2026-10-26/, and /newsletter/ lists every issue with the newest first. The issue is pure front matter: the layout (_layouts/newsletter.html) renders it, so a new issue needs no HTML.
Issues are drafted by a scheduled Claude task each Monday, which opens a pull request. The issue goes live when the PR is merged.
Reader form
Each issue sits behind a short form asking for name, email, company and title. It posts to the forms endpoint in _config.yml (see forms.md), which saves a row to the Newsletter readers tab. A checkbox (ticked by default) asks whether they want meetup invitations; the Meetup invites column records Yes or No, so only email the Yes rows. A second checkbox (unticked by default, so readers must actively agree) records in Share with sponsors whether their details may go to KCDP sponsors; share only the Yes rows. Once a reader fills it in, their browser remembers them and every issue opens. This is a soft gate: GitHub Pages is static, so the issue is still in the page source and visitors without JavaScript see it directly. If the endpoint fails or takes more than 5 seconds, the issue opens anyway so readers are never locked out; only a blank field or an invalid email sends them back to fix it. Story links that aren’t http or https are shown as plain text.
After changing apps-script/Code.gs, redeploy the web app (Deploy > Manage deployments > edit > New version) so the live endpoint accepts the newsletter form.
File format
---
title: "Iceberg v4 takes shape and Fabric opens up" # headline for the issue
date: 2026-10-26 # issue date
intro: "Two sentences on the theme of the week."
top_stories: # exactly 3
- title: "Story headline"
url: "https://example.com/specific-article"
source: "Databricks blog"
published: "Oct 22, 2026"
summary: "2 to 3 plain-language sentences."
why: "One sentence on what it changes for people doing the work."
sections: # all sections, in order
- name: "Data Engineering"
items: # 0 to 4 items
- title: "..."
url: "..."
source: "..."
published: "..."
summary: "..."
- name: "Streaming and Real-Time"
items: [] # empty shows "Quiet week here."
talking_points: # 1 or 2 meetup discussion prompts
- "..."
---
All text is plain text (it is HTML-escaped when rendered), so do not put Markdown or HTML in the values. Quote any value that contains a colon.