diff --git a/docs/social-media-scheduling.md b/docs/social-media-scheduling.md index e03a18720..7514daad1 100644 --- a/docs/social-media-scheduling.md +++ b/docs/social-media-scheduling.md @@ -49,6 +49,11 @@ screenshotted with Puppeteer. ### Speaker cards +Speaker cards are generated per-session. Speakers with multiple qualifying +sessions (Talk, Tutorial, or other session types) get one card per session, +named `social-${slug}-${sessionCode}.png`. Single-session speakers get the +standard `social-${slug}.png`. + ```bash node scripts/download_social_speakers.cjs ``` @@ -59,6 +64,11 @@ Screenshots are saved to the current directory. Move them to the right place: mv social-*.png public/media/speakers/ ``` +When regenerating, skip files that already exist to avoid overwriting images for +speakers whose posts are already scheduled. If a speaker previously had one +session and now has a second, delete the old generic `social-${slug}.png` after +the per-session images are committed. + ### Sponsor & partner cards ```bash @@ -102,8 +112,33 @@ Regenerate it by hitting the API endpoint while the dev server is running: curl -s http://localhost:4321/api/media/combined_socials_queue > src/pages/api/media/combined_socials_queue.json ``` -This overwrites `src/pages/api/media/combined_socials_queue.json` with all 150+ -items sorted and interleaved. +This overwrites `src/pages/api/media/combined_socials_queue.json` with all items +sorted and interleaved. + +> **Note:** There are two queue files: +> +> - `combined_socials_queue.json` — the freshly generated queue, used as the +> source of truth and read by `buffer-scheduling.py` +> - `combined_socials_queue_2026.json` — the manually curated queue that +> preserves already-scheduled posts at the top; new entries are appended after +> the last scheduled position + +When new speakers or sponsors are added, regenerate +`combined_socials_queue.json` and then merge the new entries into +`combined_socials_queue_2026.json` manually — keeping already-posted entries +intact and appending only new/unposted ones. + +### Session types and labels + +The queue includes all qualifying session types — not just talks and tutorials. +The label used in post text is determined by session type: + +- `"Talk"` / `"Talk (long session)"` → `"talk"` +- `"Tutorial"` → `"tutorial"` +- Everything else (Poster, Summit, etc.) → `"session"` + +Speakers with multiple qualifying sessions get one queue entry per session, each +with its own per-session card image. ### Tier classification @@ -238,9 +273,11 @@ python src/pages/api/media/buffer-scheduling.py ### Channel notes - **Instagram**: requires `postType: post` — handled automatically -- **Sponsors/partners**: no Instagram channel (only x, linkedin, bsky, +- **TikTok**: supports photo posts with an optional `title` (set to the speaker + name) — handled automatically +- **Sponsors/partners**: no Instagram or TikTok channel (only x, linkedin, bsky, fosstodon) -- **Speakers**: all 5 channels including Instagram +- **Speakers**: all 6 channels including Instagram and TikTok - **Bluesky**: Buffer returns this as `"bluesky"` — normalized to `"bsky"` automatically @@ -249,12 +286,16 @@ python src/pages/api/media/buffer-scheduling.py After each successful run, note the last `QUEUE_END` value. The next run should set `QUEUE_START = previous QUEUE_END + 1`. -Already scheduled as of initial setup: +The script reads from `combined_socials_queue.json` by default. When switching +to the curated `combined_socials_queue_2026.json`, update `queue_path` in the +script accordingly. + +Already scheduled as of June 2026: -- Positions 1–3: Abhik Sarkar, Abhimanyu Singh Shekhawat, Abigail Afi Gbadago +- Positions 1–67 in `combined_socials_queue_2026.json` (up to and including + PyGda partner post) -Next batch (positions 4–8): Adam Gorgoń, Alejandro Cabello Jiménez, -ActiveCampaign, Aleksander, 1Password +Next batch starts at position 68 (Giovanni Barillari). --- diff --git a/public/media/speakers/social-cheuk-ting-ho-VYUNHG.png b/public/media/speakers/social-cheuk-ting-ho-VYUNHG.png new file mode 100644 index 000000000..961718190 Binary files /dev/null and b/public/media/speakers/social-cheuk-ting-ho-VYUNHG.png differ diff --git a/public/media/speakers/social-cheuk-ting-ho-WKBHZW.png b/public/media/speakers/social-cheuk-ting-ho-WKBHZW.png new file mode 100644 index 000000000..55f321f98 Binary files /dev/null and b/public/media/speakers/social-cheuk-ting-ho-WKBHZW.png differ diff --git a/public/media/speakers/social-cheuk-ting-ho.png b/public/media/speakers/social-cheuk-ting-ho.png deleted file mode 100644 index 1f4750882..000000000 Binary files a/public/media/speakers/social-cheuk-ting-ho.png and /dev/null differ diff --git a/public/media/speakers/social-diego-russo-QXZMP8.png b/public/media/speakers/social-diego-russo-QXZMP8.png new file mode 100644 index 000000000..261fd9742 Binary files /dev/null and b/public/media/speakers/social-diego-russo-QXZMP8.png differ diff --git a/public/media/speakers/social-diego-russo-W9NLXV.png b/public/media/speakers/social-diego-russo-W9NLXV.png new file mode 100644 index 000000000..56b691a6a Binary files /dev/null and b/public/media/speakers/social-diego-russo-W9NLXV.png differ diff --git a/public/media/speakers/social-diego-russo.png b/public/media/speakers/social-diego-russo.png deleted file mode 100644 index 05d48e650..000000000 Binary files a/public/media/speakers/social-diego-russo.png and /dev/null differ diff --git a/public/media/speakers/social-gyeongjae-choi.png b/public/media/speakers/social-gyeongjae-choi.png new file mode 100644 index 000000000..742fa31b0 Binary files /dev/null and b/public/media/speakers/social-gyeongjae-choi.png differ diff --git a/public/media/speakers/social-hood-chatham.png b/public/media/speakers/social-hood-chatham.png new file mode 100644 index 000000000..0191668aa Binary files /dev/null and b/public/media/speakers/social-hood-chatham.png differ diff --git a/public/media/speakers/social-jannis-leidel.png b/public/media/speakers/social-jannis-leidel.png new file mode 100644 index 000000000..616a36db3 Binary files /dev/null and b/public/media/speakers/social-jannis-leidel.png differ diff --git a/public/media/speakers/social-matthias-kirschner.png b/public/media/speakers/social-matthias-kirschner.png new file mode 100644 index 000000000..85854d9c4 Binary files /dev/null and b/public/media/speakers/social-matthias-kirschner.png differ diff --git a/public/media/speakers/social-nicholas-h-tollervey-BTTFFJ.png b/public/media/speakers/social-nicholas-h-tollervey-BTTFFJ.png new file mode 100644 index 000000000..4438ed946 Binary files /dev/null and b/public/media/speakers/social-nicholas-h-tollervey-BTTFFJ.png differ diff --git a/public/media/speakers/social-nicholas-h-tollervey-SWCWKZ.png b/public/media/speakers/social-nicholas-h-tollervey-SWCWKZ.png new file mode 100644 index 000000000..3db01ffa6 Binary files /dev/null and b/public/media/speakers/social-nicholas-h-tollervey-SWCWKZ.png differ diff --git a/public/media/speakers/social-nicholas-h-tollervey.png b/public/media/speakers/social-nicholas-h-tollervey.png deleted file mode 100644 index 0d8b30429..000000000 Binary files a/public/media/speakers/social-nicholas-h-tollervey.png and /dev/null differ diff --git a/public/media/speakers/social-rodrigo-girao-serrao-PRGGNW.png b/public/media/speakers/social-rodrigo-girao-serrao-PRGGNW.png new file mode 100644 index 000000000..27ca7237e Binary files /dev/null and b/public/media/speakers/social-rodrigo-girao-serrao-PRGGNW.png differ diff --git a/public/media/speakers/social-rodrigo-girao-serrao-WYBHCE.png b/public/media/speakers/social-rodrigo-girao-serrao-WYBHCE.png new file mode 100644 index 000000000..f60df9bf8 Binary files /dev/null and b/public/media/speakers/social-rodrigo-girao-serrao-WYBHCE.png differ diff --git a/public/media/speakers/social-rodrigo-girao-serrao.png b/public/media/speakers/social-rodrigo-girao-serrao.png deleted file mode 100644 index 768d28134..000000000 Binary files a/public/media/speakers/social-rodrigo-girao-serrao.png and /dev/null differ diff --git a/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-BX77EE.png b/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-BX77EE.png new file mode 100644 index 000000000..fde28ca82 Binary files /dev/null and b/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-BX77EE.png differ diff --git a/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-ZHCNDY.png b/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-ZHCNDY.png new file mode 100644 index 000000000..bafb25563 Binary files /dev/null and b/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-ZHCNDY.png differ diff --git a/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko.png b/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko.png deleted file mode 100644 index 0182fdb15..000000000 Binary files a/public/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko.png and /dev/null differ diff --git a/scripts/download_social_speakers.cjs b/scripts/download_social_speakers.cjs index 5d94f9577..7bbb31542 100644 --- a/scripts/download_social_speakers.cjs +++ b/scripts/download_social_speakers.cjs @@ -65,11 +65,16 @@ const puppeteer = require("puppeteer"); for (let i = 0; i < elements.length; i++) { const el = elements[i]; - // Get the slug from the element + // Get the slug and optional session code from the element const slug = await page.evaluate((el) => el.getAttribute("data-slug"), el); + const code = await page.evaluate((el) => el.getAttribute("data-code"), el); - // Fallback if slug is missing - const filename = slug ? `social-${slug}.png` : `social-${i}.png`; + // Use session code suffix when present (multi-session speaker) + const filename = code + ? `social-${slug}-${code}.png` + : slug + ? `social-${slug}.png` + : `social-${i}.png`; await el.screenshot({ path: filename }); console.log(`Saved ${filename}`); diff --git a/src/components/SocialMediaCard.astro b/src/components/SocialMediaCard.astro index 070df5b48..eabd355ce 100644 --- a/src/components/SocialMediaCard.astro +++ b/src/components/SocialMediaCard.astro @@ -1,9 +1,12 @@ --- import { getEntries, type CollectionEntry } from "astro:content"; -const { entry } = Astro.props; +const { entry, session } = Astro.props; -const sessions: CollectionEntry<"sessions">[]= await getEntries(entry.data.submissions); +// If a specific session is passed use it, otherwise fall back to all (legacy) +const sessions: CollectionEntry<"sessions">[] = session + ? [session] + : await getEntries(entry.data.submissions); --- diff --git a/src/pages/api/media/buffer-scheduling.py b/src/pages/api/media/buffer-scheduling.py index 4837a17d0..5ea76011c 100644 --- a/src/pages/api/media/buffer-scheduling.py +++ b/src/pages/api/media/buffer-scheduling.py @@ -125,8 +125,9 @@ "text": text, "schedulingType": "automatic", "mode": "addToQueue", - "assets": [{"image": {"url": item["image"], "alt_text": item.get("alt_text", "")}}] if item.get("image") else [], - **({"metadata": {"instagram": {"type": "post", "shouldShareToFeed": True}}} if network == "instagram" else {}) + "assets": [{"image": {"url": item["image"], "metadata": {"altText": item.get("alt_text", "")}}}] if item.get("image") else [], + **({"metadata": {"instagram": {"type": "post", "shouldShareToFeed": True}}} if network == "instagram" else {}), + **({"metadata": {"tiktok": {"title": item["name"]}}} if network == "tiktok" else {}) } } diff --git a/src/pages/api/media/combined_socials_queue.json b/src/pages/api/media/combined_socials_queue.json new file mode 100644 index 000000000..be785efed --- /dev/null +++ b/src/pages/api/media/combined_socials_queue.json @@ -0,0 +1,2898 @@ +[ + { + "type": "speaker", + "name": "Abhik Sarkar", + "image": "https://ep2026.europython.eu/media/speakers/social-abhik-sarkar.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Abhik Sarkar — An Introduction to Writing Fast GPU Code in Python", + "handles": { + "x": "@abhiksark", + "linkedin": "https://www.linkedin.com/in/abhiksark" + }, + "channel": { + "instagram": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\".", + "x": "Join Abhik Sarkar (@abhiksark) at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\" talk: https://ep2026.europython.eu/JQSQBB", + "linkedin": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\" talk: https://ep2026.europython.eu/JQSQBB", + "bsky": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\" talk: https://ep2026.europython.eu/JQSQBB", + "fosstodon": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\" talk: https://ep2026.europython.eu/JQSQBB", + "tiktok": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\"." + } + }, + { + "type": "speaker", + "name": "Abhimanyu Singh Shekhawat", + "image": "https://ep2026.europython.eu/media/speakers/social-abhimanyu-singh-shekhawat.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Abhimanyu Singh Shekhawat — Deconstructing the tenets of Planet Scale Systems with Python", + "handles": { + "x": "@abshekha", + "linkedin": "https://www.linkedin.com/in/abhimanyubitsgoa" + }, + "channel": { + "instagram": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\".", + "x": "Join Abhimanyu Singh Shekhawat (@abshekha) at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\" tutorial: https://ep2026.europython.eu/SNKUW7", + "linkedin": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\" tutorial: https://ep2026.europython.eu/SNKUW7", + "bsky": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\" tutorial: https://ep2026.europython.eu/SNKUW7", + "fosstodon": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\" tutorial: https://ep2026.europython.eu/SNKUW7", + "tiktok": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\"." + } + }, + { + "type": "sponsor", + "name": "ActiveCampaign", + "image": "https://ep2026.europython.eu/media/sponsors/social-activecampaign.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: ActiveCampaign", + "handles": { + "x": "@ActiveCampaign", + "linkedin": "https://www.linkedin.com/company/activecampaign", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome ActiveCampaign as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @ActiveCampaign https://www.activecampaign.com/", + "linkedin": "🎉✨ Thank you to ActiveCampaign for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/activecampaign https://www.activecampaign.com/", + "bsky": "🎉✨ We are pleased to welcome ActiveCampaign as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.activecampaign.com/", + "fosstodon": "🚀✨ A huge thank you to ActiveCampaign for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://www.activecampaign.com/" + } + }, + { + "type": "speaker", + "name": "Abigail Afi Gbadago", + "image": "https://ep2026.europython.eu/media/speakers/social-abigail-afi-gbadago.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Abigail Afi Gbadago — Pointers, Objects, and References - How Python Manages Memory", + "handles": { + "linkedin": "https://www.linkedin.com/in/abigail-afi-gbadago" + }, + "channel": { + "instagram": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\".", + "x": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\" talk: https://ep2026.europython.eu/ARRMQR", + "linkedin": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\" talk: https://ep2026.europython.eu/ARRMQR", + "bsky": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\" talk: https://ep2026.europython.eu/ARRMQR", + "fosstodon": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\" talk: https://ep2026.europython.eu/ARRMQR", + "tiktok": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\"." + } + }, + { + "type": "partner", + "name": "1Password", + "image": "https://ep2026.europython.eu/media/sponsors/social-1password.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: 1Password", + "handles": { + "x": "@1Password", + "linkedin": "https://www.linkedin.com/company/1password", + "bsky": "", + "fosstodon": "@1password@1password.social" + }, + "channel": { + "x": "🎉✨ A warm thank you to 1Password for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @1Password https://1password.com", + "linkedin": "🎉✨ A warm thank you to 1Password for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/1password https://1password.com", + "bsky": "🎉✨ A warm thank you to 1Password for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://1password.com", + "fosstodon": "🎉✨ A warm thank you to 1Password for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @1password@1password.social https://1password.com" + } + }, + { + "type": "speaker", + "name": "Adam Gorgoń", + "image": "https://ep2026.europython.eu/media/speakers/social-adam-gorgon.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Adam Gorgoń — gRPC for Beginners", + "handles": {}, + "channel": { + "instagram": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\".", + "x": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "linkedin": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "bsky": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "fosstodon": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "tiktok": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\"." + } + }, + { + "type": "speaker", + "name": "Alejandro Cabello Jiménez", + "image": "https://ep2026.europython.eu/media/speakers/social-alejandro-cabello-jimenez.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Alejandro Cabello Jiménez — Python on Serverless: Strategies for Peak Performance", + "handles": { + "linkedin": "https://www.linkedin.com/in/alejandrocabello" + }, + "channel": { + "instagram": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\".", + "x": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\" talk: https://ep2026.europython.eu/PPQ3KE", + "linkedin": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\" talk: https://ep2026.europython.eu/PPQ3KE", + "bsky": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\" talk: https://ep2026.europython.eu/PPQ3KE", + "fosstodon": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\" talk: https://ep2026.europython.eu/PPQ3KE", + "tiktok": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\"." + } + }, + { + "type": "sponsor", + "name": "Apify", + "image": "https://ep2026.europython.eu/media/sponsors/social-apify.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Apify", + "handles": { + "x": "@apify", + "linkedin": "https://www.linkedin.com/company/apify", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Apify as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @apify https://apify.com/", + "linkedin": "🚀✨ We are delighted to welcome Apify as a sponsor for EuroPython 2026! Your support helps make this event extraordinary. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/apify https://apify.com/", + "bsky": "🎉✨ We are pleased to welcome Apify as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://apify.com/", + "fosstodon": "🎉✨ A big thank you to Apify for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://apify.com/" + } + }, + { + "type": "speaker", + "name": "Aleksander", + "image": "https://ep2026.europython.eu/media/speakers/social-aleksander.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Aleksander — Python in the Service of Justice: Modern Analysis Tools in Forensics", + "handles": { + "linkedin": "https://www.linkedin.com/in/aleksander-kopyto-6b0339123" + }, + "channel": { + "instagram": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\".", + "x": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\" talk: https://ep2026.europython.eu/PQCHT3", + "linkedin": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\" talk: https://ep2026.europython.eu/PQCHT3", + "bsky": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\" talk: https://ep2026.europython.eu/PQCHT3", + "fosstodon": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\" talk: https://ep2026.europython.eu/PQCHT3", + "tiktok": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\"." + } + }, + { + "type": "partner", + "name": "Cracow Linux Users Group", + "image": "https://ep2026.europython.eu/media/sponsors/social-clug.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Cracow Linux Users Group", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Cracow Linux Users Group for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://clug.space/", + "linkedin": "🎉✨ A warm thank you to Cracow Linux Users Group for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://clug.space/", + "bsky": "🎉✨ A warm thank you to Cracow Linux Users Group for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://clug.space/", + "fosstodon": "🎉✨ A warm thank you to Cracow Linux Users Group for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://clug.space/" + } + }, + { + "type": "speaker", + "name": "Alenka Frim", + "image": "https://ep2026.europython.eu/media/speakers/social-alenka-frim.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Alenka Frim — Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data", + "handles": {}, + "channel": { + "instagram": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\".", + "x": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "linkedin": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "bsky": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "fosstodon": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "tiktok": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\"." + } + }, + { + "type": "speaker", + "name": "Anwesha Das", + "image": "https://ep2026.europython.eu/media/speakers/social-anwesha-das.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Anwesha Das — Demystifying CRA for the community", + "handles": { + "linkedin": "https://www.linkedin.com/in/anwesha-das-1247121a2", + "fosstodon": "@anwesha@toots.dgplug.org" + }, + "channel": { + "instagram": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\".", + "x": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\" talk: https://ep2026.europython.eu/Y3DGWB", + "linkedin": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\" talk: https://ep2026.europython.eu/Y3DGWB", + "bsky": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\" talk: https://ep2026.europython.eu/Y3DGWB", + "fosstodon": "Join Anwesha Das (@anwesha@toots.dgplug.org) at EuroPython for \"Demystifying CRA for the community\" talk: https://ep2026.europython.eu/Y3DGWB", + "tiktok": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\"." + } + }, + { + "type": "sponsor", + "name": "Arm", + "image": "https://ep2026.europython.eu/media/sponsors/social-arm.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Arm", + "handles": { + "x": "@Arm", + "linkedin": "https://www.linkedin.com/company/arm", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Arm as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @Arm https://www.arm.com", + "linkedin": "🎉✨ We are pleased to welcome Arm as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/arm https://www.arm.com", + "bsky": "🎉✨ Thank you to Arm for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.arm.com", + "fosstodon": "🚀✨ We are delighted to welcome Arm as a sponsor for EuroPython 2026! Your support helps make this event extraordinary. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.arm.com" + } + }, + { + "type": "speaker", + "name": "Ariel Ortiz", + "image": "https://ep2026.europython.eu/media/speakers/social-ariel-ortiz.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Ariel Ortiz — Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly", + "handles": { + "linkedin": "https://www.linkedin.com/in/ariel-ortiz-ramirez" + }, + "channel": { + "instagram": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\".", + "x": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\" tutorial: https://ep2026.europython.eu/QWEJWT", + "linkedin": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\" tutorial: https://ep2026.europython.eu/QWEJWT", + "bsky": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\" tutorial: https://ep2026.europython.eu/QWEJWT", + "fosstodon": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\" tutorial: https://ep2026.europython.eu/QWEJWT", + "tiktok": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\"." + } + }, + { + "type": "partner", + "name": "EuroPython Society", + "image": "https://ep2026.europython.eu/media/sponsors/social-eps.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: EuroPython Society", + "handles": { + "x": "@EuroPython", + "linkedin": "https://www.linkedin.com/company/europython", + "bsky": "@europython.eu", + "fosstodon": "@europython@fosstodon.org" + }, + "channel": { + "x": "🎉✨ A warm thank you to EuroPython Society for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @EuroPython https://www.europython-society.org/", + "linkedin": "🎉✨ A warm thank you to EuroPython Society for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/europython https://www.europython-society.org/", + "bsky": "🎉✨ A warm thank you to EuroPython Society for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @europython.eu https://www.europython-society.org/", + "fosstodon": "🎉✨ A warm thank you to EuroPython Society for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @europython@fosstodon.org https://www.europython-society.org/" + } + }, + { + "type": "speaker", + "name": "Bryce Adelstein Lelbach", + "image": "https://ep2026.europython.eu/media/speakers/social-bryce-adelstein-lelbach.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Bryce Adelstein Lelbach — GPU Programming in Pure Python", + "handles": { + "x": "@blelbach", + "linkedin": "https://www.linkedin.com/in/brycelelbach" + }, + "channel": { + "instagram": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\".", + "x": "Join Bryce Adelstein Lelbach (@blelbach) at EuroPython for \"GPU Programming in Pure Python\" talk: https://ep2026.europython.eu/JSLSHM", + "linkedin": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\" talk: https://ep2026.europython.eu/JSLSHM", + "bsky": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\" talk: https://ep2026.europython.eu/JSLSHM", + "fosstodon": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\" talk: https://ep2026.europython.eu/JSLSHM", + "tiktok": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\"." + } + }, + { + "type": "speaker", + "name": "Carlos A Aranibar", + "image": "https://ep2026.europython.eu/media/speakers/social-carlos-a-aranibar.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Carlos A Aranibar — Designing and Building Custom Keyboards ⌨️ with Python", + "handles": { + "linkedin": "https://www.linkedin.com/in/carlos-aranibar" + }, + "channel": { + "instagram": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\".", + "x": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\" talk: https://ep2026.europython.eu/CBA98V", + "linkedin": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\" talk: https://ep2026.europython.eu/CBA98V", + "bsky": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\" talk: https://ep2026.europython.eu/CBA98V", + "fosstodon": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\" talk: https://ep2026.europython.eu/CBA98V", + "tiktok": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\"." + } + }, + { + "type": "sponsor", + "name": "Back Market", + "image": "https://ep2026.europython.eu/media/sponsors/social-backmarket.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Back Market", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/company/back-market", + "bsky": "@backmarketeng.bsky.social", + "fosstodon": "@BackMarketEng@mastodon.social" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Back Market as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.backmarket.com/en-us", + "linkedin": "🎉✨ We are pleased to welcome Back Market as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/back-market https://www.backmarket.com/en-us", + "bsky": "🎉✨ A big thank you to Back Market for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @backmarketeng.bsky.social https://www.backmarket.com/en-us", + "fosstodon": "🎉✨ We are pleased to welcome Back Market as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @BackMarketEng@mastodon.social https://www.backmarket.com/en-us" + } + }, + { + "type": "speaker", + "name": "Cheuk Ting Ho", + "image": "https://ep2026.europython.eu/media/speakers/social-cheuk-ting-ho.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Cheuk Ting Ho — Rust Summit at EuroPython", + "handles": { + "linkedin": "https://www.linkedin.com/in/cheukting-ho", + "bsky": "@cheuk.dev", + "fosstodon": "@cheukting_ho@fosstodon.org" + }, + "channel": { + "instagram": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\".", + "x": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\" session: https://ep2026.europython.eu/VYUNHG", + "linkedin": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\" session: https://ep2026.europython.eu/VYUNHG", + "bsky": "Join Cheuk Ting Ho (@cheuk.dev) at EuroPython for \"Rust Summit at EuroPython\" session: https://ep2026.europython.eu/VYUNHG", + "fosstodon": "Join Cheuk Ting Ho (@cheukting_ho@fosstodon.org) at EuroPython for \"Rust Summit at EuroPython\" session: https://ep2026.europython.eu/VYUNHG", + "tiktok": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\"." + } + }, + { + "type": "partner", + "name": "EuroSciPy", + "image": "https://ep2026.europython.eu/media/sponsors/social-euroscipy.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: EuroSciPy", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to EuroSciPy for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://euroscipy.org/", + "linkedin": "🎉✨ A warm thank you to EuroSciPy for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://euroscipy.org/", + "bsky": "🎉✨ A warm thank you to EuroSciPy for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://euroscipy.org/", + "fosstodon": "🎉✨ A warm thank you to EuroSciPy for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://euroscipy.org/" + } + }, + { + "type": "speaker", + "name": "Cheuk Ting Ho", + "image": "https://ep2026.europython.eu/media/speakers/social-cheuk-ting-ho.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Cheuk Ting Ho — Rust for High Performance Computing (HPC) in Python", + "handles": { + "linkedin": "https://www.linkedin.com/in/cheukting-ho", + "bsky": "@cheuk.dev", + "fosstodon": "@cheukting_ho@fosstodon.org" + }, + "channel": { + "instagram": "Join Cheuk Ting Ho at EuroPython for \"Rust for High Performance Computing (HPC) in Python\".", + "x": "Join Cheuk Ting Ho at EuroPython for \"Rust for High Performance Computing (HPC) in Python\" talk: https://ep2026.europython.eu/WKBHZW", + "linkedin": "Join Cheuk Ting Ho at EuroPython for \"Rust for High Performance Computing (HPC) in Python\" talk: https://ep2026.europython.eu/WKBHZW", + "bsky": "Join Cheuk Ting Ho (@cheuk.dev) at EuroPython for \"Rust for High Performance Computing (HPC) in Python\" talk: https://ep2026.europython.eu/WKBHZW", + "fosstodon": "Join Cheuk Ting Ho (@cheukting_ho@fosstodon.org) at EuroPython for \"Rust for High Performance Computing (HPC) in Python\" talk: https://ep2026.europython.eu/WKBHZW", + "tiktok": "Join Cheuk Ting Ho at EuroPython for \"Rust for High Performance Computing (HPC) in Python\"." + } + }, + { + "type": "speaker", + "name": "Christian Leitold", + "image": "https://ep2026.europython.eu/media/speakers/social-christian-leitold.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Christian Leitold — How to blend Python, physics, and art to create (hopefully) pretty pictures", + "handles": { + "linkedin": "https://www.linkedin.com/in/christian-leitold-273492197" + }, + "channel": { + "instagram": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\".", + "x": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\" talk: https://ep2026.europython.eu/3HBWHB", + "linkedin": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\" talk: https://ep2026.europython.eu/3HBWHB", + "bsky": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\" talk: https://ep2026.europython.eu/3HBWHB", + "fosstodon": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\" talk: https://ep2026.europython.eu/3HBWHB", + "tiktok": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\"." + } + }, + { + "type": "sponsor", + "name": "Bloomberg", + "image": "https://ep2026.europython.eu/media/sponsors/social-bloomberg.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Bloomberg", + "handles": { + "x": "@TechAtBloomberg", + "linkedin": "https://www.linkedin.com/company/bloomberg", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Bloomberg as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @TechAtBloomberg https://www.bloomberg.com/company/values/tech-at-bloomberg/python/", + "linkedin": "🎉✨ A big thank you to Bloomberg for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/bloomberg https://www.bloomberg.com/company/values/tech-at-bloomberg/python/", + "bsky": "🎉✨ We are pleased to welcome Bloomberg as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.bloomberg.com/company/values/tech-at-bloomberg/python/", + "fosstodon": "🚀✨ Big shoutout and heartfelt thanks to Bloomberg for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.bloomberg.com/company/values/tech-at-bloomberg/python/" + } + }, + { + "type": "speaker", + "name": "Claudiu Belu", + "image": "https://ep2026.europython.eu/media/speakers/social-claudiu-belu.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Claudiu Belu — What is this footgun called unittest.mock, and how to avoid misusing it", + "handles": { + "linkedin": "https://www.linkedin.com/in/claudiubelu" + }, + "channel": { + "instagram": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\".", + "x": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\" talk: https://ep2026.europython.eu/93XE3S", + "linkedin": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\" talk: https://ep2026.europython.eu/93XE3S", + "bsky": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\" talk: https://ep2026.europython.eu/93XE3S", + "fosstodon": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\" talk: https://ep2026.europython.eu/93XE3S", + "tiktok": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\"." + } + }, + { + "type": "partner", + "name": "Evolabel", + "image": "https://ep2026.europython.eu/media/sponsors/social-evolabel.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Evolabel", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/company/autolabel-ab", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Evolabel for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.evolabel.com", + "linkedin": "🎉✨ A warm thank you to Evolabel for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/autolabel-ab https://www.evolabel.com", + "bsky": "🎉✨ A warm thank you to Evolabel for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.evolabel.com", + "fosstodon": "🎉✨ A warm thank you to Evolabel for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.evolabel.com" + } + }, + { + "type": "speaker", + "name": "Cody Fincher", + "image": "https://ep2026.europython.eu/media/speakers/social-cody-fincher.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Cody Fincher — Designing Performant APIs with Litestar", + "handles": { + "linkedin": "https://www.linkedin.com/in/cofin" + }, + "channel": { + "instagram": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\".", + "x": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "linkedin": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "bsky": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "fosstodon": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "tiktok": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\"." + } + }, + { + "type": "speaker", + "name": "Cristián Maureira-Fredes", + "image": "https://ep2026.europython.eu/media/speakers/social-cristian-maureira-fredes.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Cristián Maureira-Fredes — Understand and expand Python: a hands-on experience on Python internals", + "handles": { + "linkedin": "https://www.linkedin.com/in/cmaureir", + "bsky": "@maureira.dev", + "fosstodon": "@maureira.dev@mastodon.social" + }, + "channel": { + "instagram": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\".", + "x": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\" tutorial: https://ep2026.europython.eu/K7XNTF", + "linkedin": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\" tutorial: https://ep2026.europython.eu/K7XNTF", + "bsky": "Join Cristián Maureira-Fredes (@maureira.dev) at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\" tutorial: https://ep2026.europython.eu/K7XNTF", + "fosstodon": "Join Cristián Maureira-Fredes (@maureira.dev@mastodon.social) at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\" tutorial: https://ep2026.europython.eu/K7XNTF", + "tiktok": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\"." + } + }, + { + "type": "sponsor", + "name": "Google Cloud", + "image": "https://ep2026.europython.eu/media/sponsors/social-google-cloud.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Google Cloud", + "handles": { + "x": "@GoogleCloudTech", + "linkedin": "https://www.linkedin.com/showcase/google-cloud", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Google Cloud as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @GoogleCloudTech https://cloud.google.com/", + "linkedin": "🎉✨ We are pleased to welcome Google Cloud as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/showcase/google-cloud https://cloud.google.com/", + "bsky": "🎉✨ Thank you to Google Cloud for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://cloud.google.com/", + "fosstodon": "🎉✨ We are pleased to welcome Google Cloud as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://cloud.google.com/" + } + }, + { + "type": "speaker", + "name": "Damian Wysocki", + "image": "https://ep2026.europython.eu/media/speakers/social-damian-wysocki.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Damian Wysocki — From Ticket Taker to Problem Solver: Discovery for Senior Thinking", + "handles": {}, + "channel": { + "instagram": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\".", + "x": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\" talk: https://ep2026.europython.eu/NTZ7DG", + "linkedin": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\" talk: https://ep2026.europython.eu/NTZ7DG", + "bsky": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\" talk: https://ep2026.europython.eu/NTZ7DG", + "fosstodon": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\" talk: https://ep2026.europython.eu/NTZ7DG", + "tiktok": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\"." + } + }, + { + "type": "partner", + "name": "Free Software Foundation Europe", + "image": "https://ep2026.europython.eu/media/sponsors/social-fsfe.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Free Software Foundation Europe", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "@fsfe@mastodon.social" + }, + "channel": { + "x": "🎉✨ A warm thank you to Free Software Foundation Europe for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://fsfe.org/", + "linkedin": "🎉✨ A warm thank you to Free Software Foundation Europe for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://fsfe.org/", + "bsky": "🎉✨ A warm thank you to Free Software Foundation Europe for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://fsfe.org/", + "fosstodon": "🎉✨ A warm thank you to Free Software Foundation Europe for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @fsfe@mastodon.social https://fsfe.org/" + } + }, + { + "type": "speaker", + "name": "Daniel Vahla", + "image": "https://ep2026.europython.eu/media/speakers/social-daniel-vahla.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Daniel Vahla — Python and HTTP/3: feel the difference in performance", + "handles": {}, + "channel": { + "instagram": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\".", + "x": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\" talk: https://ep2026.europython.eu/DRXC3E", + "linkedin": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\" talk: https://ep2026.europython.eu/DRXC3E", + "bsky": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\" talk: https://ep2026.europython.eu/DRXC3E", + "fosstodon": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\" talk: https://ep2026.europython.eu/DRXC3E", + "tiktok": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\"." + } + }, + { + "type": "speaker", + "name": "Daria Korsakova", + "image": "https://ep2026.europython.eu/media/speakers/social-daria-korsakova.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Daria Korsakova — Stop firefighting: practical observability for Python APIs, workers & jobs", + "handles": { + "linkedin": "https://www.linkedin.com/in/dariakors" + }, + "channel": { + "instagram": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\".", + "x": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\" talk: https://ep2026.europython.eu/9MRVPM", + "linkedin": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\" talk: https://ep2026.europython.eu/9MRVPM", + "bsky": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\" talk: https://ep2026.europython.eu/9MRVPM", + "fosstodon": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\" talk: https://ep2026.europython.eu/9MRVPM", + "tiktok": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\"." + } + }, + { + "type": "sponsor", + "name": "Hudson River Trading", + "image": "https://ep2026.europython.eu/media/sponsors/social-hrt.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Hudson River Trading", + "handles": { + "x": "@weareHRT", + "linkedin": "https://www.linkedin.com/company/hudson-river-trading", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Hudson River Trading as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @weareHRT https://www.hudsonrivertrading.com", + "linkedin": "🎉✨ A big thank you to Hudson River Trading for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/hudson-river-trading https://www.hudsonrivertrading.com", + "bsky": "🚀✨ A huge thank you to Hudson River Trading for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://www.hudsonrivertrading.com", + "fosstodon": "🎉✨ We are pleased to welcome Hudson River Trading as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.hudsonrivertrading.com" + } + }, + { + "type": "speaker", + "name": "David Rousset", + "image": "https://ep2026.europython.eu/media/speakers/social-david-rousset.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: David Rousset — When Python Agents Meet 3D: Automating Blender from Natural Language", + "handles": { + "x": "@davrous", + "linkedin": "https://www.linkedin.com/in/davrous" + }, + "channel": { + "instagram": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\".", + "x": "Join David Rousset (@davrous) at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\" session: https://ep2026.europython.eu/7NWR9R", + "linkedin": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\" session: https://ep2026.europython.eu/7NWR9R", + "bsky": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\" session: https://ep2026.europython.eu/7NWR9R", + "fosstodon": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\" session: https://ep2026.europython.eu/7NWR9R", + "tiktok": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\"." + } + }, + { + "type": "partner", + "name": "pretalx", + "image": "https://ep2026.europython.eu/media/sponsors/social-pretalx.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: pretalx", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/company/pretalx", + "bsky": "", + "fosstodon": "@pretalx@chaos.social" + }, + "channel": { + "x": "🎉✨ A warm thank you to pretalx for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pretalx.org", + "linkedin": "🎉✨ A warm thank you to pretalx for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/pretalx https://pretalx.org", + "bsky": "🎉✨ A warm thank you to pretalx for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pretalx.org", + "fosstodon": "🎉✨ A warm thank you to pretalx for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pretalx@chaos.social https://pretalx.org" + } + }, + { + "type": "speaker", + "name": "David Vaz", + "image": "https://ep2026.europython.eu/media/speakers/social-david-vaz.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: David Vaz — I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t", + "handles": { + "linkedin": "https://www.linkedin.com/in/davidmgvaz" + }, + "channel": { + "instagram": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\".", + "x": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\" talk: https://ep2026.europython.eu/HVTSPC", + "linkedin": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\" talk: https://ep2026.europython.eu/HVTSPC", + "bsky": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\" talk: https://ep2026.europython.eu/HVTSPC", + "fosstodon": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\" talk: https://ep2026.europython.eu/HVTSPC", + "tiktok": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\"." + } + }, + { + "type": "speaker", + "name": "Dawn Wages", + "image": "https://ep2026.europython.eu/media/speakers/social-dawn-wages.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Dawn Wages — How many spoons does your environment cost: Broken demos & human element", + "handles": { + "linkedin": "https://www.linkedin.com/in/dawnwages", + "bsky": "@bajoranengineer.bsky.social", + "fosstodon": "@bajoranengineer@mastodon.online" + }, + "channel": { + "instagram": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\".", + "x": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\" talk: https://ep2026.europython.eu/PCMBVT", + "linkedin": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\" talk: https://ep2026.europython.eu/PCMBVT", + "bsky": "Join Dawn Wages (@bajoranengineer.bsky.social) at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\" talk: https://ep2026.europython.eu/PCMBVT", + "fosstodon": "Join Dawn Wages (@bajoranengineer@mastodon.online) at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\" talk: https://ep2026.europython.eu/PCMBVT", + "tiktok": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\"." + } + }, + { + "type": "sponsor", + "name": "JetBrains", + "image": "https://ep2026.europython.eu/media/sponsors/social-jetbrains.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: JetBrains", + "handles": { + "x": "@pycharm", + "linkedin": "https://www.linkedin.com/products/jetbrains-pycharm/", + "bsky": "@pycharm.dev", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome JetBrains as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @pycharm https://www.jetbrains.com/pycharm/", + "linkedin": "🚀✨ Big shoutout and heartfelt thanks to JetBrains for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌https://www.linkedin.com/products/jetbrains-pycharm/ https://www.jetbrains.com/pycharm/", + "bsky": "🚀✨ A huge thank you to JetBrains for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 @pycharm.dev https://www.jetbrains.com/pycharm/", + "fosstodon": "🎉✨ A big thank you to JetBrains for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.jetbrains.com/pycharm/" + } + }, + { + "type": "speaker", + "name": "Deb Nicholson", + "image": "https://ep2026.europython.eu/media/speakers/social-deb-nicholson.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Deb Nicholson — International Open Source – Your Best Choice in Interesting Times", + "handles": { + "linkedin": "https://www.linkedin.com/in/denicholson", + "bsky": "@baconandcoconut.bsky.social", + "fosstodon": "@baconandcoconut@freeradical.zone" + }, + "channel": { + "instagram": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\".", + "x": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\" talk: https://ep2026.europython.eu/SQRYJA", + "linkedin": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\" talk: https://ep2026.europython.eu/SQRYJA", + "bsky": "Join Deb Nicholson (@baconandcoconut.bsky.social) at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\" talk: https://ep2026.europython.eu/SQRYJA", + "fosstodon": "Join Deb Nicholson (@baconandcoconut@freeradical.zone) at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\" talk: https://ep2026.europython.eu/SQRYJA", + "tiktok": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\"." + } + }, + { + "type": "partner", + "name": "PyCon Greece", + "image": "https://ep2026.europython.eu/media/sponsors/social-pycon-greece.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyCon Greece", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/company/pycon-greece", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyCon Greece for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pycon.gr/", + "linkedin": "🎉✨ A warm thank you to PyCon Greece for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/pycon-greece https://pycon.gr/", + "bsky": "🎉✨ A warm thank you to PyCon Greece for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pycon.gr/", + "fosstodon": "🎉✨ A warm thank you to PyCon Greece for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pycon.gr/" + } + }, + { + "type": "speaker", + "name": "DEBORAH E DANJUMA", + "image": "https://ep2026.europython.eu/media/speakers/social-deborah-e-danjuma.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: DEBORAH E DANJUMA — Flying in Formation - with Python Threading and ROS2 Parallelism", + "handles": { + "x": "@danjumaedeborah", + "linkedin": "https://www.linkedin.com/in/deborahdanjuma" + }, + "channel": { + "instagram": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\".", + "x": "Join DEBORAH E DANJUMA (@danjumaedeborah) at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\" talk: https://ep2026.europython.eu/SASJQU", + "linkedin": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\" talk: https://ep2026.europython.eu/SASJQU", + "bsky": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\" talk: https://ep2026.europython.eu/SASJQU", + "fosstodon": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\" talk: https://ep2026.europython.eu/SASJQU", + "tiktok": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\"." + } + }, + { + "type": "speaker", + "name": "Diego Russo", + "image": "https://ep2026.europython.eu/media/speakers/social-diego-russo.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Diego Russo — Python on Windows on Arm: Ecosystem Enablement Update", + "handles": { + "x": "@diegor", + "linkedin": "https://www.linkedin.com/in/diegor", + "bsky": "@diegor.it" + }, + "channel": { + "instagram": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\".", + "x": "Join Diego Russo (@diegor) at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "linkedin": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "bsky": "Join Diego Russo (@diegor.it) at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "fosstodon": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "tiktok": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\"." + } + }, + { + "type": "sponsor", + "name": "Manychat", + "image": "https://ep2026.europython.eu/media/sponsors/social-manychat.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Manychat", + "handles": { + "x": "@Manychat_life", + "linkedin": "https://www.linkedin.com/company/manychat", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Manychat as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @Manychat_life https://careers.manychat.com/", + "linkedin": "🚀✨ We are delighted to welcome Manychat as a sponsor for EuroPython 2026! Your support helps make this event extraordinary. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/manychat https://careers.manychat.com/", + "bsky": "🎉✨ A big thank you to Manychat for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://careers.manychat.com/", + "fosstodon": "🎉✨ We are pleased to welcome Manychat as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://careers.manychat.com/" + } + }, + { + "type": "speaker", + "name": "Diego Russo", + "image": "https://ep2026.europython.eu/media/speakers/social-diego-russo.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Diego Russo — Update on the CPython JIT: What to expect in 3.15", + "handles": { + "x": "@diegor", + "linkedin": "https://www.linkedin.com/in/diegor", + "bsky": "@diegor.it" + }, + "channel": { + "instagram": "Join Diego Russo at EuroPython for \"Update on the CPython JIT: What to expect in 3.15\".", + "x": "Join Diego Russo (@diegor) at EuroPython for \"Update on the CPython JIT: What to expect in 3.15\" talk: https://ep2026.europython.eu/W9NLXV", + "linkedin": "Join Diego Russo at EuroPython for \"Update on the CPython JIT: What to expect in 3.15\" talk: https://ep2026.europython.eu/W9NLXV", + "bsky": "Join Diego Russo (@diegor.it) at EuroPython for \"Update on the CPython JIT: What to expect in 3.15\" talk: https://ep2026.europython.eu/W9NLXV", + "fosstodon": "Join Diego Russo at EuroPython for \"Update on the CPython JIT: What to expect in 3.15\" talk: https://ep2026.europython.eu/W9NLXV", + "tiktok": "Join Diego Russo at EuroPython for \"Update on the CPython JIT: What to expect in 3.15\"." + } + }, + { + "type": "partner", + "name": "PyCon Wrocław", + "image": "https://ep2026.europython.eu/media/sponsors/social-pyconwro.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyCon Wrocław", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyCon Wrocław for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pyconwroclaw.com/", + "linkedin": "🎉✨ A warm thank you to PyCon Wrocław for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pyconwroclaw.com/", + "bsky": "🎉✨ A warm thank you to PyCon Wrocław for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pyconwroclaw.com/", + "fosstodon": "🎉✨ A warm thank you to PyCon Wrocław for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pyconwroclaw.com/" + } + }, + { + "type": "speaker", + "name": "Domagoj Marić", + "image": "https://ep2026.europython.eu/media/speakers/social-domagoj-maric.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Domagoj Marić — Friendly Borders: Graph algorithms reveal Eurovision voting patterns", + "handles": { + "linkedin": "https://www.linkedin.com/in/domagoj-maric" + }, + "channel": { + "instagram": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\".", + "x": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\" talk: https://ep2026.europython.eu/UPELCT", + "linkedin": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\" talk: https://ep2026.europython.eu/UPELCT", + "bsky": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\" talk: https://ep2026.europython.eu/UPELCT", + "fosstodon": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\" talk: https://ep2026.europython.eu/UPELCT", + "tiktok": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\"." + } + }, + { + "type": "speaker", + "name": "ELENI TOKMAKTSI", + "image": "https://ep2026.europython.eu/media/speakers/social-eleni-tokmaktsi.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: ELENI TOKMAKTSI — From Pixels to Insights: Python for Earth Observation", + "handles": { + "linkedin": "https://gr.linkedin.com/in/eleni-tokmaktsi-982334257" + }, + "channel": { + "instagram": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\".", + "x": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\" talk: https://ep2026.europython.eu/DWGSFA", + "linkedin": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\" talk: https://ep2026.europython.eu/DWGSFA", + "bsky": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\" talk: https://ep2026.europython.eu/DWGSFA", + "fosstodon": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\" talk: https://ep2026.europython.eu/DWGSFA", + "tiktok": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\"." + } + }, + { + "type": "sponsor", + "name": "Microsoft", + "image": "https://ep2026.europython.eu/media/sponsors/social-microsoft.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Microsoft", + "handles": { + "x": "@code", + "linkedin": "https://www.linkedin.com/showcase/vs-code", + "bsky": "@visualstudio.com", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Microsoft as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @code https://www.microsoft.com", + "linkedin": "🚀✨ Big shoutout and heartfelt thanks to Microsoft for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌https://www.linkedin.com/showcase/vs-code https://www.microsoft.com", + "bsky": "🎉✨ A big thank you to Microsoft for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @visualstudio.com https://www.microsoft.com", + "fosstodon": "🚀✨ Big shoutout and heartfelt thanks to Microsoft for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.microsoft.com" + } + }, + { + "type": "speaker", + "name": "Emmanuel Ugwu", + "image": "https://ep2026.europython.eu/media/speakers/social-emmanuel-ugwu.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Emmanuel Ugwu — Python Stings Your Ego: Finding Pride in Community, Not Just Code", + "handles": { + "linkedin": "https://www.linkedin.com/in/emmanuel-ugwu-b58b80223" + }, + "channel": { + "instagram": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\".", + "x": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\" talk: https://ep2026.europython.eu/FB93DB", + "linkedin": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\" talk: https://ep2026.europython.eu/FB93DB", + "bsky": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\" talk: https://ep2026.europython.eu/FB93DB", + "fosstodon": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\" talk: https://ep2026.europython.eu/FB93DB", + "tiktok": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\"." + } + }, + { + "type": "partner", + "name": "PyData Bydgoszcz", + "image": "https://ep2026.europython.eu/media/sponsors/social-pydatabydgoszcz.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyData Bydgoszcz", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyData Bydgoszcz for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Bydgoszcz/", + "linkedin": "🎉✨ A warm thank you to PyData Bydgoszcz for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Bydgoszcz/", + "bsky": "🎉✨ A warm thank you to PyData Bydgoszcz for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Bydgoszcz/", + "fosstodon": "🎉✨ A warm thank you to PyData Bydgoszcz for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Bydgoszcz/" + } + }, + { + "type": "speaker", + "name": "Evan Kohilas", + "image": "https://ep2026.europython.eu/media/speakers/social-evan-kohilas.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Evan Kohilas — Args: Amazing or Approaching?", + "handles": { + "x": "@ekohilas", + "linkedin": "https://www.linkedin.com/in/ekohilas" + }, + "channel": { + "instagram": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\".", + "x": "Join Evan Kohilas (@ekohilas) at EuroPython for \"Args: Amazing or Approaching?\" talk: https://ep2026.europython.eu/G9FDRY", + "linkedin": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\" talk: https://ep2026.europython.eu/G9FDRY", + "bsky": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\" talk: https://ep2026.europython.eu/G9FDRY", + "fosstodon": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\" talk: https://ep2026.europython.eu/G9FDRY", + "tiktok": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\"." + } + }, + { + "type": "speaker", + "name": "Farhaan Bukhsh", + "image": "https://ep2026.europython.eu/media/speakers/social-farhaan-bukhsh.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Farhaan Bukhsh — Python Games in the Browser: Teaching with WebAssembly", + "handles": { + "x": "@fhackdroid", + "linkedin": "https://www.linkedin.com/in/farhaanbukhsh", + "bsky": "@fhackdroid.bsky.social" + }, + "channel": { + "instagram": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\".", + "x": "Join Farhaan Bukhsh (@fhackdroid) at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\" talk: https://ep2026.europython.eu/LN7EF3", + "linkedin": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\" talk: https://ep2026.europython.eu/LN7EF3", + "bsky": "Join Farhaan Bukhsh (@fhackdroid.bsky.social) at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\" talk: https://ep2026.europython.eu/LN7EF3", + "fosstodon": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\" talk: https://ep2026.europython.eu/LN7EF3", + "tiktok": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\"." + } + }, + { + "type": "sponsor", + "name": "Modal", + "image": "https://ep2026.europython.eu/media/sponsors/social-modal.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Modal", + "handles": { + "x": "@modal", + "linkedin": "https://www.linkedin.com/company/modal-labs", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Modal as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @modal https://modal.com/", + "linkedin": "🎉✨ A big thank you to Modal for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/modal-labs https://modal.com/", + "bsky": "🚀✨ A huge thank you to Modal for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://modal.com/", + "fosstodon": "🎉✨ A big thank you to Modal for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://modal.com/" + } + }, + { + "type": "speaker", + "name": "Felipe Arruda Pontes", + "image": "https://ep2026.europython.eu/media/speakers/social-felipe-arruda-pontes.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Felipe Arruda Pontes — How Python is Democratising Agritech for Farmers Across Europe", + "handles": { + "linkedin": "https://www.linkedin.com/in/felipe-arruda-pontes" + }, + "channel": { + "instagram": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\".", + "x": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\" talk: https://ep2026.europython.eu/T7ATVM", + "linkedin": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\" talk: https://ep2026.europython.eu/T7ATVM", + "bsky": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\" talk: https://ep2026.europython.eu/T7ATVM", + "fosstodon": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\" talk: https://ep2026.europython.eu/T7ATVM", + "tiktok": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\"." + } + }, + { + "type": "partner", + "name": "PyData Kraków", + "image": "https://ep2026.europython.eu/media/sponsors/social-pydatakrk.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyData Kraków", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyData Kraków for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Krakow/", + "linkedin": "🎉✨ A warm thank you to PyData Kraków for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Krakow/", + "bsky": "🎉✨ A warm thank you to PyData Kraków for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Krakow/", + "fosstodon": "🎉✨ A warm thank you to PyData Kraków for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Krakow/" + } + }, + { + "type": "speaker", + "name": "Filip Makraduli", + "image": "https://ep2026.europython.eu/media/speakers/social-filip-makraduli.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Filip Makraduli — Self-Hosted Small Models: From OpenAI Lock-In to Open Models", + "handles": {}, + "channel": { + "instagram": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\".", + "x": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\" talk: https://ep2026.europython.eu/CWBA3L", + "linkedin": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\" talk: https://ep2026.europython.eu/CWBA3L", + "bsky": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\" talk: https://ep2026.europython.eu/CWBA3L", + "fosstodon": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\" talk: https://ep2026.europython.eu/CWBA3L", + "tiktok": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\"." + } + }, + { + "type": "speaker", + "name": "Florian Freitag", + "image": "https://ep2026.europython.eu/media/speakers/social-florian-freitag.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Florian Freitag — How CPythons Errors keep getting better", + "handles": { + "linkedin": "https://www.linkedin.com/in/flofriday", + "bsky": "@flofriday.bsky.social" + }, + "channel": { + "instagram": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\".", + "x": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\" talk: https://ep2026.europython.eu/DWBGJ9", + "linkedin": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\" talk: https://ep2026.europython.eu/DWBGJ9", + "bsky": "Join Florian Freitag (@flofriday.bsky.social) at EuroPython for \"How CPythons Errors keep getting better\" talk: https://ep2026.europython.eu/DWBGJ9", + "fosstodon": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\" talk: https://ep2026.europython.eu/DWBGJ9", + "tiktok": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\"." + } + }, + { + "type": "sponsor", + "name": "Numberly", + "image": "https://ep2026.europython.eu/media/sponsors/social-numberly.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Numberly", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/company/numberly", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Numberly as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://numberly.tech/", + "linkedin": "🚀✨ A huge thank you to Numberly for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://www.linkedin.com/company/numberly https://numberly.tech/", + "bsky": "🎉✨ A big thank you to Numberly for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://numberly.tech/", + "fosstodon": "🎉✨ Thank you to Numberly for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://numberly.tech/" + } + }, + { + "type": "speaker", + "name": "Francesco Lucantoni", + "image": "https://ep2026.europython.eu/media/speakers/social-francesco-lucantoni.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Francesco Lucantoni — Everything you always wanted to know about pandas*", + "handles": { + "linkedin": "https://www.linkedin.com/in/flucantoni" + }, + "channel": { + "instagram": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\".", + "x": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\" talk: https://ep2026.europython.eu/UGLF7Q", + "linkedin": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\" talk: https://ep2026.europython.eu/UGLF7Q", + "bsky": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\" talk: https://ep2026.europython.eu/UGLF7Q", + "fosstodon": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\" talk: https://ep2026.europython.eu/UGLF7Q", + "tiktok": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\"." + } + }, + { + "type": "partner", + "name": "PyData Trójmiasto", + "image": "https://ep2026.europython.eu/media/sponsors/social-pydatatrojmiasto.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyData Trójmiasto", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyData Trójmiasto for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Trojmiasto/", + "linkedin": "🎉✨ A warm thank you to PyData Trójmiasto for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Trojmiasto/", + "bsky": "🎉✨ A warm thank you to PyData Trójmiasto for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Trojmiasto/", + "fosstodon": "🎉✨ A warm thank you to PyData Trójmiasto for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/PyData-Trojmiasto/" + } + }, + { + "type": "speaker", + "name": "Freya Bruhin", + "image": "https://ep2026.europython.eu/media/speakers/social-freya-bruhin.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Freya Bruhin — Property based testing with Hypothesis", + "handles": { + "x": "@the_compiler", + "bsky": "@the-compiler.org", + "fosstodon": "@the_compiler@mastodon.social" + }, + "channel": { + "instagram": "Join Freya Bruhin at EuroPython for \"Property based testing with Hypothesis\".", + "x": "Join Freya Bruhin (@the_compiler) at EuroPython for \"Property based testing with Hypothesis\" talk: https://ep2026.europython.eu/NEH7RE", + "linkedin": "Join Freya Bruhin at EuroPython for \"Property based testing with Hypothesis\" talk: https://ep2026.europython.eu/NEH7RE", + "bsky": "Join Freya Bruhin (@the-compiler.org) at EuroPython for \"Property based testing with Hypothesis\" talk: https://ep2026.europython.eu/NEH7RE", + "fosstodon": "Join Freya Bruhin (@the_compiler@mastodon.social) at EuroPython for \"Property based testing with Hypothesis\" talk: https://ep2026.europython.eu/NEH7RE", + "tiktok": "Join Freya Bruhin at EuroPython for \"Property based testing with Hypothesis\"." + } + }, + { + "type": "speaker", + "name": "Fridtjof Stoldt", + "image": "https://ep2026.europython.eu/media/speakers/social-fridtjof-stoldt.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Fridtjof Stoldt — Immutability: Fast and Safe sharing of Data across Subinterpreters", + "handles": { + "linkedin": "https://www.linkedin.com/in/fridtjof-stoldt" + }, + "channel": { + "instagram": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\".", + "x": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "linkedin": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "bsky": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "fosstodon": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "tiktok": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\"." + } + }, + { + "type": "sponsor", + "name": "OpenEDG | Python Institute", + "image": "https://ep2026.europython.eu/media/sponsors/social-openedg-python-institute.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: OpenEDG | Python Institute", + "handles": { + "x": "@pythoninstitute", + "linkedin": "https://www.linkedin.com/company/pythoninstitute", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome OpenEDG | Python Institute as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @pythoninstitute https://pythoninstitute.org", + "linkedin": "🎉✨ We are pleased to welcome OpenEDG | Python Institute as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/pythoninstitute https://pythoninstitute.org", + "bsky": "🎉✨ We are pleased to welcome OpenEDG | Python Institute as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://pythoninstitute.org", + "fosstodon": "🎉✨ A big thank you to OpenEDG | Python Institute for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://pythoninstitute.org" + } + }, + { + "type": "speaker", + "name": "GAFFIOT Jonathan", + "image": "https://ep2026.europython.eu/media/speakers/social-gaffiot-jonathan.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: GAFFIOT Jonathan — Getting out of the testing hell", + "handles": {}, + "channel": { + "instagram": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\".", + "x": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "linkedin": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "bsky": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "fosstodon": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "tiktok": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\"." + } + }, + { + "type": "partner", + "name": "PyGda", + "image": "https://ep2026.europython.eu/media/sponsors/social-pygda.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyGda", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyGda for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pygda.pl/", + "linkedin": "🎉✨ A warm thank you to PyGda for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pygda.pl/", + "bsky": "🎉✨ A warm thank you to PyGda for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pygda.pl/", + "fosstodon": "🎉✨ A warm thank you to PyGda for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pygda.pl/" + } + }, + { + "type": "speaker", + "name": "Giovanni Barillari", + "image": "https://ep2026.europython.eu/media/speakers/social-giovanni-barillari.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Giovanni Barillari — Rethinking AsyncIO from scratch for free-threaded Python", + "handles": { + "x": "@gi0baro", + "bsky": "@baro.dev" + }, + "channel": { + "instagram": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\".", + "x": "Join Giovanni Barillari (@gi0baro) at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\" talk: https://ep2026.europython.eu/US3W8J", + "linkedin": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\" talk: https://ep2026.europython.eu/US3W8J", + "bsky": "Join Giovanni Barillari (@baro.dev) at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\" talk: https://ep2026.europython.eu/US3W8J", + "fosstodon": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\" talk: https://ep2026.europython.eu/US3W8J", + "tiktok": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\"." + } + }, + { + "type": "speaker", + "name": "Gleb Khmyznikov", + "image": "https://ep2026.europython.eu/media/speakers/social-gleb-khmyznikov.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Gleb Khmyznikov — Python on Windows on Arm: Ecosystem Enablement Update", + "handles": { + "x": "@khmyznikov", + "linkedin": "https://www.linkedin.com/in/gleb-khmyznikov-130511128" + }, + "channel": { + "instagram": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\".", + "x": "Join Gleb Khmyznikov (@khmyznikov) at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "linkedin": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "bsky": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "fosstodon": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\" session: https://ep2026.europython.eu/QXZMP8", + "tiktok": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\"." + } + }, + { + "type": "sponsor", + "name": "Optiver", + "image": "https://ep2026.europython.eu/media/sponsors/social-optiver.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Optiver", + "handles": { + "x": "@OptiverGlobal", + "linkedin": "https://www.linkedin.com/company/optiver", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Optiver as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @OptiverGlobal https://optiver.com/", + "linkedin": "🎉✨ A big thank you to Optiver for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/optiver https://optiver.com/", + "bsky": "🎉✨ Thank you to Optiver for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://optiver.com/", + "fosstodon": "🎉✨ A big thank you to Optiver for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://optiver.com/" + } + }, + { + "type": "speaker", + "name": "Goutam Tiwari", + "image": "https://ep2026.europython.eu/media/speakers/social-goutam-tiwari.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Goutam Tiwari — I Accidentally Built a Monitoring System While Trying to Debug Memory Leak", + "handles": { + "linkedin": "https://www.linkedin.com/in/goutam-tiwari" + }, + "channel": { + "instagram": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\".", + "x": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "linkedin": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "bsky": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "fosstodon": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "tiktok": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\"." + } + }, + { + "type": "partner", + "name": "Pykonik", + "image": "https://ep2026.europython.eu/media/sponsors/social-pykonik.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Pykonik", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", + "linkedin": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", + "bsky": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", + "fosstodon": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/" + } + }, + { + "type": "speaker", + "name": "Gracjan Adamus", + "image": "https://ep2026.europython.eu/media/speakers/social-gracjan-adamus.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Gracjan Adamus — PyPartMC: A Pythonic interface enhancing Fortran-based simulation package", + "handles": { + "linkedin": "https://www.linkedin.com/in/gracjan-adamus" + }, + "channel": { + "instagram": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\".", + "x": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\" session: https://ep2026.europython.eu/U7AHP3", + "linkedin": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\" session: https://ep2026.europython.eu/U7AHP3", + "bsky": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\" session: https://ep2026.europython.eu/U7AHP3", + "fosstodon": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\" session: https://ep2026.europython.eu/U7AHP3", + "tiktok": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\"." + } + }, + { + "type": "speaker", + "name": "Grzegorz Bokota", + "image": "https://ep2026.europython.eu/media/speakers/social-grzegorz-bokota.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Grzegorz Bokota — Plugins in python - how it is done", + "handles": { + "linkedin": "https://www.linkedin.com/in/grzegorz-bokota-765682243", + "bsky": "@czaki-pl.bsky.social", + "fosstodon": "@czaki@fostodon.org" + }, + "channel": { + "instagram": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\".", + "x": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\" talk: https://ep2026.europython.eu/SGM9SV", + "linkedin": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\" talk: https://ep2026.europython.eu/SGM9SV", + "bsky": "Join Grzegorz Bokota (@czaki-pl.bsky.social) at EuroPython for \"Plugins in python - how it is done\" talk: https://ep2026.europython.eu/SGM9SV", + "fosstodon": "Join Grzegorz Bokota (@czaki@fostodon.org) at EuroPython for \"Plugins in python - how it is done\" talk: https://ep2026.europython.eu/SGM9SV", + "tiktok": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\"." + } + }, + { + "type": "sponsor", + "name": "pretix", + "image": "https://ep2026.europython.eu/media/sponsors/social-pretix.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: pretix", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/company/pretix", + "bsky": "", + "fosstodon": "@pretix@pretix.social" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome pretix as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://pretix.eu", + "linkedin": "🎉✨ Thank you to pretix for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/pretix https://pretix.eu", + "bsky": "🚀✨ We are delighted to welcome pretix as a sponsor for EuroPython 2026! Your support helps make this event extraordinary. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://pretix.eu", + "fosstodon": "🚀✨ A huge thank you to pretix for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 @pretix@pretix.social https://pretix.eu" + } + }, + { + "type": "speaker", + "name": "Grzegorz Kocjan", + "image": "https://ep2026.europython.eu/media/speakers/social-grzegorz-kocjan.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Grzegorz Kocjan — The hardest test suite I ever built - a pytest case study", + "handles": { + "linkedin": "https://www.linkedin.com/in/grzegorzkocjan" + }, + "channel": { + "instagram": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\".", + "x": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "linkedin": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "bsky": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "fosstodon": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "tiktok": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\"." + } + }, + { + "type": "partner", + "name": "PyLadiesCon", + "image": "https://ep2026.europython.eu/media/sponsors/social-pyladiescon.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyLadiesCon", + "handles": { + "x": "@pyladiescon", + "linkedin": "https://www.linkedin.com/company/pyladiescon", + "bsky": "@pyladiescon.bsky.social", + "fosstodon": "@pyladiescon@fosstodon.org" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon https://conference.pyladies.com/", + "linkedin": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/pyladiescon https://conference.pyladies.com/", + "bsky": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon.bsky.social https://conference.pyladies.com/", + "fosstodon": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon@fosstodon.org https://conference.pyladies.com/" + } + }, + { + "type": "speaker", + "name": "Gyeongjae Choi", + "image": "https://ep2026.europython.eu/media/speakers/social-gyeongjae-choi.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Gyeongjae Choi — Python Everywhere: The State of Python on WebAssembly", + "handles": {}, + "channel": { + "instagram": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\".", + "x": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "linkedin": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "bsky": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "fosstodon": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "tiktok": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\"." + } + }, + { + "type": "speaker", + "name": "Hood Chatham", + "image": "https://ep2026.europython.eu/media/speakers/social-hood-chatham.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Hood Chatham — Python Everywhere: The State of Python on WebAssembly", + "handles": {}, + "channel": { + "instagram": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\".", + "x": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "linkedin": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "bsky": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "fosstodon": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "tiktok": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\"." + } + }, + { + "type": "sponsor", + "name": "Revolut", + "image": "https://ep2026.europython.eu/media/sponsors/social-revolut.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Revolut", + "handles": { + "x": "@Revolut", + "linkedin": "https://www.linkedin.com/company/revolut", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Revolut as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @Revolut https://www.revolut.com/", + "linkedin": "🚀✨ A huge thank you to Revolut for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://www.linkedin.com/company/revolut https://www.revolut.com/", + "bsky": "🎉✨ A big thank you to Revolut for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.revolut.com/", + "fosstodon": "🎉✨ A big thank you to Revolut for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.revolut.com/" + } + }, + { + "type": "speaker", + "name": "Ivan Markeev", + "image": "https://ep2026.europython.eu/media/speakers/social-ivan-markeev.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Ivan Markeev — Scaling Python Systems by Designing Team-Aware Architecture", + "handles": { + "linkedin": "https://www.linkedin.com/in/markeyev" + }, + "channel": { + "instagram": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\".", + "x": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "linkedin": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "bsky": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "fosstodon": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "tiktok": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\"." + } + }, + { + "type": "partner", + "name": "PyStok", + "image": "https://ep2026.europython.eu/media/sponsors/social-pystok.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyStok", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", + "linkedin": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", + "bsky": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", + "fosstodon": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/" + } + }, + { + "type": "speaker", + "name": "Ivana Kellyer", + "image": "https://ep2026.europython.eu/media/speakers/social-ivana-kellyer.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Ivana Kellyer — How to Maintain 60 Integrations and Not Go Bananas", + "handles": { + "linkedin": "https://www.linkedin.com/in/ivana-kellyer", + "bsky": "@jenxness.bsky.social", + "fosstodon": "@jenx@hachyderm.io" + }, + "channel": { + "instagram": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\".", + "x": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "linkedin": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "bsky": "Join Ivana Kellyer (@jenxness.bsky.social) at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "fosstodon": "Join Ivana Kellyer (@jenx@hachyderm.io) at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "tiktok": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\"." + } + }, + { + "type": "speaker", + "name": "Jan Bjørge", + "image": "https://ep2026.europython.eu/media/speakers/social-jan-bjorge.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jan Bjørge — PgQueuer: Drop the Broker, Keep the Queue", + "handles": {}, + "channel": { + "instagram": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\".", + "x": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "linkedin": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "bsky": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "fosstodon": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "tiktok": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\"." + } + }, + { + "type": "sponsor", + "name": "Vercel", + "image": "https://ep2026.europython.eu/media/sponsors/social-vercel.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Vercel", + "handles": { + "x": "@vercel", + "linkedin": "https://www.linkedin.com/company/vercel", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Vercel as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @vercel https://vercel.com", + "linkedin": "🚀✨ A huge thank you to Vercel for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://www.linkedin.com/company/vercel https://vercel.com", + "bsky": "🎉✨ We are pleased to welcome Vercel as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://vercel.com", + "fosstodon": "🎉✨ A big thank you to Vercel for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://vercel.com" + } + }, + { + "type": "speaker", + "name": "Jan Koprowski", + "image": "https://ep2026.europython.eu/media/speakers/social-jan-koprowski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jan Koprowski — How we write unit test in my team in Openchip", + "handles": { + "linkedin": "https://www.linkedin.com/in/jankoprowski" + }, + "channel": { + "instagram": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\".", + "x": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "linkedin": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "bsky": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "fosstodon": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "tiktok": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\"." + } + }, + { + "type": "partner", + "name": "Python Ankara", + "image": "https://ep2026.europython.eu/media/sponsors/social-python-ankara.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Ankara", + "handles": { + "x": "", + "linkedin": "https://www.linkedin.com/groups/10081345/", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/", + "linkedin": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/groups/10081345/ https://pythonankara.com/", + "bsky": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/", + "fosstodon": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/" + } + }, + { + "type": "speaker", + "name": "Jan Musílek", + "image": "https://ep2026.europython.eu/media/speakers/social-jan-musilek.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jan Musílek — Breaking changes – not great, not terrible", + "handles": { + "fosstodon": "@stinovlas@fosstodon.org" + }, + "channel": { + "instagram": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\".", + "x": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "linkedin": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "bsky": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "fosstodon": "Join Jan Musílek (@stinovlas@fosstodon.org) at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "tiktok": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\"." + } + }, + { + "type": "speaker", + "name": "Jan Smitka", + "image": "https://ep2026.europython.eu/media/speakers/social-jan-smitka.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jan Smitka — Faster Django ORM queries for everybody", + "handles": { + "x": "@jansmitka", + "linkedin": "https://www.linkedin.com/in/jansmitka", + "fosstodon": "@jansmitka@fosstodon.org" + }, + "channel": { + "instagram": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\".", + "x": "Join Jan Smitka (@jansmitka) at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "linkedin": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "bsky": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "fosstodon": "Join Jan Smitka (@jansmitka@fosstodon.org) at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "tiktok": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\"." + } + }, + { + "type": "sponsor", + "name": "Waracle", + "image": "https://ep2026.europython.eu/media/sponsors/social-waracle.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Waracle", + "handles": { + "x": "@WaracleUK", + "linkedin": "https://www.linkedin.com/company/waracle", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Waracle as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @WaracleUK https://waracle.com/", + "linkedin": "🎉✨ A big thank you to Waracle for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/waracle https://waracle.com/", + "bsky": "🎉✨ Thank you to Waracle for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://waracle.com/", + "fosstodon": "🎉✨ We are pleased to welcome Waracle as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://waracle.com/" + } + }, + { + "type": "speaker", + "name": "Jannis Leidel", + "image": "https://ep2026.europython.eu/media/speakers/social-jannis-leidel.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jannis Leidel — Packaging Summit", + "handles": {}, + "channel": { + "instagram": "Join Jannis Leidel at EuroPython for \"Packaging Summit\".", + "x": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "linkedin": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "bsky": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "fosstodon": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "tiktok": "Join Jannis Leidel at EuroPython for \"Packaging Summit\"." + } + }, + { + "type": "partner", + "name": "Python en Español", + "image": "https://ep2026.europython.eu/media/sponsors/social-hablemospython.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python en Español", + "handles": { + "x": "@hablemospython", + "linkedin": "https://www.linkedin.com/company/94153525", + "bsky": "@hablemospython.dev", + "fosstodon": "@hablemospython@fosstodon.org" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython https://hablemospython.dev", + "linkedin": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/94153525 https://hablemospython.dev", + "bsky": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython.dev https://hablemospython.dev", + "fosstodon": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython@fosstodon.org https://hablemospython.dev" + } + }, + { + "type": "speaker", + "name": "Jarosław Śmietanka", + "image": "https://ep2026.europython.eu/media/speakers/social-jaroslaw-smietanka.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jarosław Śmietanka — The Hidden Cost of Complexity: Reducing Cognitive Load in Python", + "handles": { + "linkedin": "https://www.linkedin.com/in/jsmietanka" + }, + "channel": { + "instagram": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\".", + "x": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "linkedin": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "bsky": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "fosstodon": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "tiktok": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\"." + } + }, + { + "type": "speaker", + "name": "Jenny Vega", + "image": "https://ep2026.europython.eu/media/speakers/social-jenny-vega.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jenny Vega — From Molecules to Models: A Guide to AI Drug Discovery with Python", + "handles": { + "linkedin": "https://www.linkedin.com/in/jennyluciav" + }, + "channel": { + "instagram": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\".", + "x": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "linkedin": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "bsky": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "fosstodon": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "tiktok": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\"." + } + }, + { + "type": "speaker", + "name": "Johannes Kolbe", + "image": "https://ep2026.europython.eu/media/speakers/social-johannes-kolbe.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Johannes Kolbe — Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI", + "handles": { + "bsky": "@johko.bsky.social" + }, + "channel": { + "instagram": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\".", + "x": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "linkedin": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "bsky": "Join Johannes Kolbe (@johko.bsky.social) at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "fosstodon": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "tiktok": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\"." + } + }, + { + "type": "partner", + "name": "Python Łódź", + "image": "https://ep2026.europython.eu/media/sponsors/social-pythonlodz.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Łódź", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", + "linkedin": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", + "bsky": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", + "fosstodon": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/" + } + }, + { + "type": "speaker", + "name": "Jon Nordby", + "image": "https://ep2026.europython.eu/media/speakers/social-jon-nordby.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jon Nordby — Developing IoT sensors with MicroPython", + "handles": {}, + "channel": { + "instagram": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\".", + "x": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "linkedin": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "bsky": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "fosstodon": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "tiktok": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\"." + } + }, + { + "type": "speaker", + "name": "Jukka Lehtosalo", + "image": "https://ep2026.europython.eu/media/speakers/social-jukka-lehtosalo.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jukka Lehtosalo — Speeding Up Python with Free Threading and Mypyc", + "handles": {}, + "channel": { + "instagram": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\".", + "x": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "linkedin": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "bsky": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "fosstodon": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "tiktok": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\"." + } + }, + { + "type": "speaker", + "name": "Julien Courtès", + "image": "https://ep2026.europython.eu/media/speakers/social-julien-courtes.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Julien Courtès — Designing Performant APIs with Litestar", + "handles": {}, + "channel": { + "instagram": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\".", + "x": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "linkedin": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "bsky": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "fosstodon": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "tiktok": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\"." + } + }, + { + "type": "partner", + "name": "Python Pizza Warsaw", + "image": "https://ep2026.europython.eu/media/sponsors/social-pythonpizza.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Pizza Warsaw", + "handles": { + "x": "@pythonpizza", + "linkedin": "https://www.linkedin.com/company/98334563", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pythonpizza https://warsaw.python.pizza/", + "linkedin": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/98334563 https://warsaw.python.pizza/", + "bsky": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://warsaw.python.pizza/", + "fosstodon": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://warsaw.python.pizza/" + } + }, + { + "type": "speaker", + "name": "Julien Lenormand", + "image": "https://ep2026.europython.eu/media/speakers/social-julien-lenormand.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Julien Lenormand — Getting out of the testing hell", + "handles": { + "linkedin": "https://www.linkedin.com/in/julien-lenormand" + }, + "channel": { + "instagram": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\".", + "x": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "linkedin": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "bsky": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "fosstodon": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "tiktok": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\"." + } + }, + { + "type": "speaker", + "name": "Kamil Kulig", + "image": "https://ep2026.europython.eu/media/speakers/social-kamil-kulig.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Kamil Kulig — gRPC for Beginners", + "handles": {}, + "channel": { + "instagram": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\".", + "x": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "linkedin": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "bsky": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "fosstodon": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "tiktok": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\"." + } + }, + { + "type": "speaker", + "name": "Karen Jex", + "image": "https://ep2026.europython.eu/media/speakers/social-karen-jex.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Karen Jex — How much do you really need to know about Databases?", + "handles": { + "linkedin": "https://www.linkedin.com/in/karenhjex", + "bsky": "@karenhjex.bsky.social", + "fosstodon": "@karenhjex@mastodon.online" + }, + "channel": { + "instagram": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\".", + "x": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "linkedin": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "bsky": "Join Karen Jex (@karenhjex.bsky.social) at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "fosstodon": "Join Karen Jex (@karenhjex@mastodon.online) at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "tiktok": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\"." + } + }, + { + "type": "partner", + "name": "Python Software Foundation", + "image": "https://ep2026.europython.eu/media/sponsors/social-psf.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Software Foundation", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", + "linkedin": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", + "bsky": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", + "fosstodon": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/" + } + }, + { + "type": "speaker", + "name": "Katie Bickford", + "image": "https://ep2026.europython.eu/media/speakers/social-katie-bickford.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Katie Bickford — Why doing difficult things is good for you and good for your team", + "handles": { + "linkedin": "https://www.linkedin.com/in/katie-bickford-7a9958aa" + }, + "channel": { + "instagram": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\".", + "x": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "linkedin": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "bsky": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "fosstodon": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "tiktok": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\"." + } + }, + { + "type": "speaker", + "name": "Ken Jin", + "image": "https://ep2026.europython.eu/media/speakers/social-ken-jin.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Ken Jin — Inside Python 3.15's JIT Optimizer", + "handles": {}, + "channel": { + "instagram": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\".", + "x": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "linkedin": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "bsky": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "fosstodon": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "tiktok": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\"." + } + }, + { + "type": "speaker", + "name": "Koudai Aono", + "image": "https://ep2026.europython.eu/media/speakers/social-koudai-aono.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Koudai Aono — Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset", + "handles": { + "linkedin": "https://www.linkedin.com/in/koxudaxi", + "fosstodon": "@koxudaxi@fosstodon.org" + }, + "channel": { + "instagram": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\".", + "x": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "linkedin": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "bsky": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "fosstodon": "Join Koudai Aono (@koxudaxi@fosstodon.org) at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "tiktok": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\"." + } + }, + { + "type": "partner", + "name": "PyWaw", + "image": "https://ep2026.europython.eu/media/sponsors/social-pywaw.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyWaw", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", + "linkedin": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", + "bsky": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", + "fosstodon": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/" + } + }, + { + "type": "speaker", + "name": "Kuldeep Pisda", + "image": "https://ep2026.europython.eu/media/speakers/social-kuldeep-pisda.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Kuldeep Pisda — Django TDD Patterns: A Visual Field Guide", + "handles": { + "x": "@kdpisda", + "linkedin": "https://www.linkedin.com/in/kuldeep-pisda" + }, + "channel": { + "instagram": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\".", + "x": "Join Kuldeep Pisda (@kdpisda) at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "linkedin": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "bsky": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "fosstodon": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "tiktok": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\"." + } + }, + { + "type": "speaker", + "name": "Larry Hastings", + "image": "https://ep2026.europython.eu/media/speakers/social-larry-hastings.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Larry Hastings — Conquer multithreaded Python with Blanket", + "handles": {}, + "channel": { + "instagram": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\".", + "x": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "linkedin": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "bsky": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "fosstodon": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "tiktok": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\"." + } + }, + { + "type": "speaker", + "name": "Laura Summers", + "image": "https://ep2026.europython.eu/media/speakers/social-laura-summers.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Laura Summers — The Human-in-the-Loop is Tired", + "handles": { + "linkedin": "https://www.linkedin.com/in/summerscope" + }, + "channel": { + "instagram": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\".", + "x": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "linkedin": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "bsky": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "fosstodon": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "tiktok": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\"." + } + }, + { + "type": "speaker", + "name": "Lokko Joyce Dzifa", + "image": "https://ep2026.europython.eu/media/speakers/social-lokko-joyce-dzifa.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Lokko Joyce Dzifa — The Unseen Pull Request: The Crisis We Don’t Measure", + "handles": { + "x": "@dzifa_lokko", + "linkedin": "https://www.linkedin.com/in/joyce-dzifa-lokko" + }, + "channel": { + "instagram": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\".", + "x": "Join Lokko Joyce Dzifa (@dzifa_lokko) at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "linkedin": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "bsky": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "fosstodon": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "tiktok": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\"." + } + }, + { + "type": "speaker", + "name": "Lysandros Nikolaou", + "image": "https://ep2026.europython.eu/media/speakers/social-lysandros-nikolaou.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Lysandros Nikolaou — Python Dicts: Past, Present, and Free-Threaded Future", + "handles": { + "linkedin": "https://www.linkedin.com/in/lysnikolaou", + "bsky": "@lysnikolaou.com", + "fosstodon": "@lysnikolaou@fosstodon.org" + }, + "channel": { + "instagram": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\".", + "x": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "linkedin": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "bsky": "Join Lysandros Nikolaou (@lysnikolaou.com) at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "fosstodon": "Join Lysandros Nikolaou (@lysnikolaou@fosstodon.org) at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "tiktok": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\"." + } + }, + { + "type": "speaker", + "name": "Maciej Sobczak", + "image": "https://ep2026.europython.eu/media/speakers/social-maciej-sobczak.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Maciej Sobczak — Django’s Magic, FastAPI’s Reality: Test Isolation at Scale", + "handles": {}, + "channel": { + "instagram": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\".", + "x": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "linkedin": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "bsky": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "fosstodon": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "tiktok": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\"." + } + }, + { + "type": "speaker", + "name": "Mai Giménez", + "image": "https://ep2026.europython.eu/media/speakers/social-mai-gimenez.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mai Giménez — Let it rip a diffusion tutorial", + "handles": {}, + "channel": { + "instagram": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\".", + "x": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "linkedin": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "bsky": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "fosstodon": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "tiktok": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\"." + } + }, + { + "type": "speaker", + "name": "Malcolm Smith", + "image": "https://ep2026.europython.eu/media/speakers/social-malcolm-smith.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Malcolm Smith — Supporting Android and iOS in your Python package", + "handles": { + "linkedin": "https://www.linkedin.com/in/malcolmhsmith" + }, + "channel": { + "instagram": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\".", + "x": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "linkedin": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "bsky": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "fosstodon": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "tiktok": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\"." + } + }, + { + "type": "speaker", + "name": "Manivannan Selvaraj", + "image": "https://ep2026.europython.eu/media/speakers/social-manivannan-selvaraj.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Manivannan Selvaraj — From Code Hero to Team Leader: Learning to Let Go", + "handles": { + "x": "@citizenmani", + "linkedin": "https://www.linkedin.com/in/citizenmani" + }, + "channel": { + "instagram": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\".", + "x": "Join Manivannan Selvaraj (@citizenmani) at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "linkedin": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "bsky": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "fosstodon": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "tiktok": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\"." + } + }, + { + "type": "speaker", + "name": "Marc-André Lemburg", + "image": "https://ep2026.europython.eu/media/speakers/social-marc-andre-lemburg.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Marc-André Lemburg — DuckLake - Take Python and DuckDB for a swim in your data lake", + "handles": { + "linkedin": "https://www.linkedin.com/in/lemburg", + "fosstodon": "@malemburg@mastodon.social" + }, + "channel": { + "instagram": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\".", + "x": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "linkedin": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "bsky": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "fosstodon": "Join Marc-André Lemburg (@malemburg@mastodon.social) at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "tiktok": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\"." + } + }, + { + "type": "speaker", + "name": "Marcelo Trylesinski", + "image": "https://ep2026.europython.eu/media/speakers/social-marcelo-trylesinski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Marcelo Trylesinski — What I've Learned Maintaining the MCP Python SDK", + "handles": {}, + "channel": { + "instagram": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\".", + "x": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "linkedin": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "bsky": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "fosstodon": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "tiktok": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\"." + } + }, + { + "type": "speaker", + "name": "Marco Grossi", + "image": "https://ep2026.europython.eu/media/speakers/social-marco-grossi.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Marco Grossi — From one to 1 million packet/second: scaling global Internet monitoring", + "handles": {}, + "channel": { + "instagram": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\".", + "x": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "linkedin": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "bsky": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "fosstodon": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "tiktok": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\"." + } + }, + { + "type": "speaker", + "name": "Maria Ashna", + "image": "https://ep2026.europython.eu/media/speakers/social-maria-ashna.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Maria Ashna — Climbing the Pyramid: Behind the Scenes of the Python Package Index", + "handles": { + "linkedin": "https://www.linkedin.com/in/mariaashna" + }, + "channel": { + "instagram": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\".", + "x": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "linkedin": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "bsky": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "fosstodon": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "tiktok": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\"." + } + }, + { + "type": "speaker", + "name": "Maria Lowas-Rzechonek", + "image": "https://ep2026.europython.eu/media/speakers/social-maria-lowas-rzechonek.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Maria Lowas-Rzechonek — How to tackle complex authorization logic (and don't go crazy)", + "handles": { + "linkedin": "https://www.linkedin.com/in/maria-lowas-rzechonek-1a215150" + }, + "channel": { + "instagram": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\".", + "x": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "linkedin": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "bsky": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "fosstodon": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "tiktok": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\"." + } + }, + { + "type": "speaker", + "name": "Mario García", + "image": "https://ep2026.europython.eu/media/speakers/social-mario-garcia.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mario García — Localization Made Easy: A Pythonic Approach to Global Applications", + "handles": { + "x": "@mariogmd", + "linkedin": "https://www.linkedin.com/in/mariogmd" + }, + "channel": { + "instagram": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\".", + "x": "Join Mario García (@mariogmd) at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "linkedin": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "bsky": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "fosstodon": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "tiktok": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\"." + } + }, + { + "type": "speaker", + "name": "Mateusz Modrzejewski", + "image": "https://ep2026.europython.eu/media/speakers/social-mateusz-modrzejewski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mateusz Modrzejewski — How Music Generation Actually Works", + "handles": {}, + "channel": { + "instagram": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\".", + "x": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "linkedin": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "bsky": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "fosstodon": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "tiktok": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\"." + } + }, + { + "type": "speaker", + "name": "Mateusz Sokół", + "image": "https://ep2026.europython.eu/media/speakers/social-mateusz-sokol.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mateusz Sokół — Building your DSL compiler in Python", + "handles": { + "linkedin": "https://www.linkedin.com/in/mateusz-sokol" + }, + "channel": { + "instagram": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\".", + "x": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "linkedin": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "bsky": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "fosstodon": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "tiktok": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\"." + } + }, + { + "type": "speaker", + "name": "Matthias Kirschner", + "image": "https://ep2026.europython.eu/media/speakers/social-matthias-kirschner.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Matthias Kirschner — A vision for software freedom in 2048", + "handles": { + "fosstodon": "@kirschner@mastodon.social" + }, + "channel": { + "instagram": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\".", + "x": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "linkedin": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "bsky": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "fosstodon": "Join Matthias Kirschner (@kirschner@mastodon.social) at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "tiktok": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\"." + } + }, + { + "type": "speaker", + "name": "Michael Seifert", + "image": "https://ep2026.europython.eu/media/speakers/social-michael-seifert.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Michael Seifert — Code organization for non-engineers", + "handles": { + "linkedin": "https://www.linkedin.com/in/seifertm" + }, + "channel": { + "instagram": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\".", + "x": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "linkedin": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "bsky": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "fosstodon": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "tiktok": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\"." + } + }, + { + "type": "speaker", + "name": "Michał Karzyński", + "image": "https://ep2026.europython.eu/media/speakers/social-michal-karzynski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Michał Karzyński — Building a Smart Home Device with MicroPython", + "handles": {}, + "channel": { + "instagram": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\".", + "x": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "linkedin": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "bsky": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "fosstodon": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "tiktok": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\"." + } + }, + { + "type": "speaker", + "name": "Mike Fiedler", + "image": "https://ep2026.europython.eu/media/speakers/social-mike-fiedler.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mike Fiedler — Anatomy of a Phishing Campaign", + "handles": { + "linkedin": "https://www.linkedin.com/in/miketheman", + "bsky": "@miketheman.com", + "fosstodon": "@miketheman@hachyderm.io" + }, + "channel": { + "instagram": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\".", + "x": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "linkedin": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "bsky": "Join Mike Fiedler (@miketheman.com) at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "fosstodon": "Join Mike Fiedler (@miketheman@hachyderm.io) at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "tiktok": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\"." + } + }, + { + "type": "speaker", + "name": "Mike Müller", + "image": "https://ep2026.europython.eu/media/speakers/social-mike-muller.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mike Müller — Fast Python Development with uv", + "handles": { + "x": "@pyacademy", + "linkedin": "https://www.linkedin.com/in/mike-müller-1937695" + }, + "channel": { + "instagram": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\".", + "x": "Join Mike Müller (@pyacademy) at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "linkedin": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "bsky": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "fosstodon": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "tiktok": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\"." + } + }, + { + "type": "speaker", + "name": "Mohamed Elmaghraby", + "image": "https://ep2026.europython.eu/media/speakers/social-mohamed-elmaghraby.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mohamed Elmaghraby — Refactor, Optimize, and Test: Crafting Cleaner Python Code", + "handles": { + "linkedin": "https://www.linkedin.com/in/mohamed-elmaghraby-a6b836127" + }, + "channel": { + "instagram": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\".", + "x": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "linkedin": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "bsky": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "fosstodon": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "tiktok": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\"." + } + }, + { + "type": "speaker", + "name": "Mohit Kumar Vyas", + "image": "https://ep2026.europython.eu/media/speakers/social-mohit-kumar-vyas.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Mohit Kumar Vyas — I Accidentally Built a Monitoring System While Trying to Debug Memory Leak", + "handles": {}, + "channel": { + "instagram": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\".", + "x": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "linkedin": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "bsky": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "fosstodon": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "tiktok": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\"." + } + }, + { + "type": "speaker", + "name": "Nathan Goldbaum", + "image": "https://ep2026.europython.eu/media/speakers/social-nathan-goldbaum.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nathan Goldbaum — What every Python developer should know about the CPython ABI", + "handles": {}, + "channel": { + "instagram": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\".", + "x": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "linkedin": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "bsky": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "fosstodon": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "tiktok": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\"." + } + }, + { + "type": "speaker", + "name": "Nicholas H.Tollervey", + "image": "https://ep2026.europython.eu/media/speakers/social-nicholas-h-tollervey.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nicholas H.Tollervey — Web Assembly Summit", + "handles": {}, + "channel": { + "instagram": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\".", + "x": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "linkedin": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "bsky": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "fosstodon": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "tiktok": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\"." + } + }, + { + "type": "speaker", + "name": "Nicholas H.Tollervey", + "image": "https://ep2026.europython.eu/media/speakers/social-nicholas-h-tollervey.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nicholas H.Tollervey — The Good, the Bad and the Ugly: native Python app development and delivery.", + "handles": {}, + "channel": { + "instagram": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\".", + "x": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "linkedin": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "bsky": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "fosstodon": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "tiktok": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\"." + } + }, + { + "type": "speaker", + "name": "Nikita Karamov", + "image": "https://ep2026.europython.eu/media/speakers/social-nikita-karamov.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nikita Karamov — Should you trust Trusted Publishing?", + "handles": { + "linkedin": "https://www.linkedin.com/in/nikitakaramov", + "fosstodon": "@kytta@polymaths.social" + }, + "channel": { + "instagram": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\".", + "x": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "linkedin": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "bsky": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "fosstodon": "Join Nikita Karamov (@kytta@polymaths.social) at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "tiktok": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\"." + } + }, + { + "type": "speaker", + "name": "Nikita Smirnov", + "image": "https://ep2026.europython.eu/media/speakers/social-nikita-smirnov.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nikita Smirnov — Fast Multi-Version ETL Pipelines in Python with Generators and functools", + "handles": { + "linkedin": "https://www.linkedin.com/in/nikita-smirnov-20897623b" + }, + "channel": { + "instagram": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\".", + "x": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "linkedin": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "bsky": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "fosstodon": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "tiktok": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\"." + } + }, + { + "type": "speaker", + "name": "Nitish", + "image": "https://ep2026.europython.eu/media/speakers/social-nitish.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nitish — Beyond the Demo: Production Patterns for Streaming LLM Systems", + "handles": { + "x": "@nitishagar", + "bsky": "@nitishagar.bsky.social" + }, + "channel": { + "instagram": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\".", + "x": "Join Nitish (@nitishagar) at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "linkedin": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "bsky": "Join Nitish (@nitishagar.bsky.social) at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "fosstodon": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "tiktok": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\"." + } + }, + { + "type": "speaker", + "name": "Oladapo Jesusemilore Jael", + "image": "https://ep2026.europython.eu/media/speakers/social-oladapo-jesusemilore-jael.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Oladapo Jesusemilore Jael — Python Learning that fits Teen Life", + "handles": {}, + "channel": { + "instagram": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\".", + "x": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "linkedin": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "bsky": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "fosstodon": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "tiktok": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\"." + } + }, + { + "type": "speaker", + "name": "Oladapo Kayode Abiodun", + "image": "https://ep2026.europython.eu/media/speakers/social-oladapo-kayode-abiodun.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Oladapo Kayode Abiodun — Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks", + "handles": { + "x": "@oladapokayodea1", + "linkedin": "https://www.linkedin.com/in/kayodeabiodunoladapo" + }, + "channel": { + "instagram": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\".", + "x": "Join Oladapo Kayode Abiodun (@oladapokayodea1) at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "linkedin": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "bsky": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "fosstodon": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "tiktok": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\"." + } + }, + { + "type": "speaker", + "name": "Olha Poliuliakh", + "image": "https://ep2026.europython.eu/media/speakers/social-olha-poliuliakh.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Olha Poliuliakh — Why Coding Agents Fail at ML (and How to Fix It)", + "handles": { + "linkedin": "https://www.linkedin.com/in/olha-poliuliakh-9166b1313" + }, + "channel": { + "instagram": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\".", + "x": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "linkedin": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "bsky": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "fosstodon": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "tiktok": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\"." + } + }, + { + "type": "speaker", + "name": "Pablo Galindo Salgado", + "image": "https://ep2026.europython.eu/media/speakers/social-pablo-galindo-salgado.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Pablo Galindo Salgado — Lazy imports and the art of interpreter procrastination", + "handles": { + "bsky": "@pablogsal.com" + }, + "channel": { + "instagram": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\".", + "x": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "linkedin": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "bsky": "Join Pablo Galindo Salgado (@pablogsal.com) at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "fosstodon": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "tiktok": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\"." + } + }, + { + "type": "speaker", + "name": "Petr Viktorin", + "image": "https://ep2026.europython.eu/media/speakers/social-petr-viktorin.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Petr Viktorin — Python Syntax Diagram", + "handles": { + "fosstodon": "@encukou@mastodon.social" + }, + "channel": { + "instagram": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\".", + "x": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "linkedin": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "bsky": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "fosstodon": "Join Petr Viktorin (@encukou@mastodon.social) at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "tiktok": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\"." + } + }, + { + "type": "speaker", + "name": "Piotr Grędowski", + "image": "https://ep2026.europython.eu/media/speakers/social-piotr-gredowski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Piotr Grędowski — Modern TUI with Textual in Python: Building Monokl", + "handles": { + "x": "@piotrgredowski", + "linkedin": "https://www.linkedin.com/in/piotrgredowski" + }, + "channel": { + "instagram": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\".", + "x": "Join Piotr Grędowski (@piotrgredowski) at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "linkedin": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "bsky": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "fosstodon": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "tiktok": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\"." + } + }, + { + "type": "speaker", + "name": "Piotr Rybak", + "image": "https://ep2026.europython.eu/media/speakers/social-piotr-rybak.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Piotr Rybak — Is Object Detection Dead? A Case for Recognizing LEGO Bricks", + "handles": { + "linkedin": "https://www.linkedin.com/in/piotrrybak" + }, + "channel": { + "instagram": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\".", + "x": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "linkedin": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "bsky": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "fosstodon": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "tiktok": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\"." + } + }, + { + "type": "speaker", + "name": "Raúl Cumplido Domínguez", + "image": "https://ep2026.europython.eu/media/speakers/social-raul-cumplido-dominguez.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Raúl Cumplido Domínguez — Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data", + "handles": {}, + "channel": { + "instagram": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\".", + "x": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "linkedin": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "bsky": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "fosstodon": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "tiktok": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\"." + } + }, + { + "type": "speaker", + "name": "Reuven M. Lerner", + "image": "https://ep2026.europython.eu/media/speakers/social-reuven-m-lerner.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Reuven M. Lerner — Let's write some decorators!", + "handles": { + "x": "@reuvenmlerner", + "linkedin": "https://www.linkedin.com/in/reuven", + "bsky": "@lernerpython.com", + "fosstodon": "@reuven@fosstodon.org" + }, + "channel": { + "instagram": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\".", + "x": "Join Reuven M. Lerner (@reuvenmlerner) at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "linkedin": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "bsky": "Join Reuven M. Lerner (@lernerpython.com) at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "fosstodon": "Join Reuven M. Lerner (@reuven@fosstodon.org) at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "tiktok": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\"." + } + }, + { + "type": "speaker", + "name": "Rodrigo Girão Serrão", + "image": "https://ep2026.europython.eu/media/speakers/social-rodrigo-girao-serrao.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Rodrigo Girão Serrão — A tour of the module `itertools`", + "handles": { + "x": "@mathsppblog", + "linkedin": "https://www.linkedin.com/in/rodrigo-girão-serrão", + "bsky": "@mathspp.com", + "fosstodon": "@mathsppblog@fosstodon.org" + }, + "channel": { + "instagram": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\".", + "x": "Join Rodrigo Girão Serrão (@mathsppblog) at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "linkedin": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "bsky": "Join Rodrigo Girão Serrão (@mathspp.com) at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "fosstodon": "Join Rodrigo Girão Serrão (@mathsppblog@fosstodon.org) at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "tiktok": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\"." + } + }, + { + "type": "speaker", + "name": "Rodrigo Girão Serrão", + "image": "https://ep2026.europython.eu/media/speakers/social-rodrigo-girao-serrao.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Rodrigo Girão Serrão — Cooking with asyncio: an introduction to asynchronous programming", + "handles": { + "x": "@mathsppblog", + "linkedin": "https://www.linkedin.com/in/rodrigo-girão-serrão", + "bsky": "@mathspp.com", + "fosstodon": "@mathsppblog@fosstodon.org" + }, + "channel": { + "instagram": "Join Rodrigo Girão Serrão at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\".", + "x": "Join Rodrigo Girão Serrão (@mathsppblog) at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "linkedin": "Join Rodrigo Girão Serrão at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "bsky": "Join Rodrigo Girão Serrão (@mathspp.com) at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "fosstodon": "Join Rodrigo Girão Serrão (@mathsppblog@fosstodon.org) at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "tiktok": "Join Rodrigo Girão Serrão at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\"." + } + }, + { + "type": "speaker", + "name": "Sangarshanan", + "image": "https://ep2026.europython.eu/media/speakers/social-sangarshanan.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sangarshanan — Build a Synthesizer with Python", + "handles": {}, + "channel": { + "instagram": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\".", + "x": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "linkedin": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "bsky": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "fosstodon": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "tiktok": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\"." + } + }, + { + "type": "speaker", + "name": "Savannah Ostrowski", + "image": "https://ep2026.europython.eu/media/speakers/social-savannah-ostrowski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Savannah Ostrowski — The coolest feature in Python 3.14: sys.remote_exec()", + "handles": { + "linkedin": "https://www.linkedin.com/in/savannahostrowski", + "bsky": "@savannah.dev", + "fosstodon": "@savannah@fosstodon.org" + }, + "channel": { + "instagram": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\".", + "x": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "linkedin": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "bsky": "Join Savannah Ostrowski (@savannah.dev) at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "fosstodon": "Join Savannah Ostrowski (@savannah@fosstodon.org) at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "tiktok": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\"." + } + }, + { + "type": "speaker", + "name": "Sebastian Buczyński", + "image": "https://ep2026.europython.eu/media/speakers/social-sebastian-buczynski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sebastian Buczyński — Navigating waters of background jobs and queues in Python as of 2026", + "handles": { + "linkedin": "https://www.linkedin.com/in/sebastianbuczynski" + }, + "channel": { + "instagram": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\".", + "x": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "linkedin": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "bsky": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "fosstodon": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "tiktok": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\"." + } + }, + { + "type": "speaker", + "name": "Sebastian Burzyński", + "image": "https://ep2026.europython.eu/media/speakers/social-sebastian-burzynski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sebastian Burzyński — The hidden cost of vibe coding", + "handles": { + "linkedin": "https://www.linkedin.com/in/sebastian-burzynski" + }, + "channel": { + "instagram": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\".", + "x": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "linkedin": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "bsky": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "fosstodon": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "tiktok": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\"." + } + }, + { + "type": "speaker", + "name": "Sergi Porta", + "image": "https://ep2026.europython.eu/media/speakers/social-sergi-porta.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sergi Porta — Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python", + "handles": { + "linkedin": "https://www.linkedin.com/in/sergi-porta" + }, + "channel": { + "instagram": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\".", + "x": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "linkedin": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "bsky": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "fosstodon": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "tiktok": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\"." + } + }, + { + "type": "speaker", + "name": "Seth Michael Larson", + "image": "https://ep2026.europython.eu/media/speakers/social-seth-michael-larson.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Seth Michael Larson — Learning from the not-so-secret Python security \"cabal\"", + "handles": { + "linkedin": "https://www.linkedin.com/in/sethmlarson", + "bsky": "@sethmlarson.dev", + "fosstodon": "@sethmlarson@mastodon.social" + }, + "channel": { + "instagram": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\".", + "x": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "linkedin": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "bsky": "Join Seth Michael Larson (@sethmlarson.dev) at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "fosstodon": "Join Seth Michael Larson (@sethmlarson@mastodon.social) at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "tiktok": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\"." + } + }, + { + "type": "speaker", + "name": "Stefanie Molin", + "image": "https://ep2026.europython.eu/media/speakers/social-stefanie-molin.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Stefanie Molin — Process, Analyze, and Transform Python Code with ASTs", + "handles": { + "x": "@stefaniemolin", + "linkedin": "https://www.linkedin.com/in/stefanie-molin", + "bsky": "@stefaniemolin.com" + }, + "channel": { + "instagram": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\".", + "x": "Join Stefanie Molin (@stefaniemolin) at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "linkedin": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "bsky": "Join Stefanie Molin (@stefaniemolin.com) at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "fosstodon": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "tiktok": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\"." + } + }, + { + "type": "speaker", + "name": "Sviatoslav Sydorenko (Святослав Сидоренко)", + "image": "https://ep2026.europython.eu/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sviatoslav Sydorenko (Святослав Сидоренко) — reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate", + "handles": { + "x": "@webknjaz", + "linkedin": "https://www.linkedin.com/in/webknjaz", + "bsky": "@webknjaz.me", + "fosstodon": "@webknjaz@mastodon.social" + }, + "channel": { + "instagram": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\".", + "x": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "linkedin": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "bsky": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz.me) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "fosstodon": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz@mastodon.social) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "tiktok": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\"." + } + }, + { + "type": "speaker", + "name": "Sviatoslav Sydorenko (Святослав Сидоренко)", + "image": "https://ep2026.europython.eu/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sviatoslav Sydorenko (Святослав Сидоренко) — Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide", + "handles": { + "x": "@webknjaz", + "linkedin": "https://www.linkedin.com/in/webknjaz", + "bsky": "@webknjaz.me", + "fosstodon": "@webknjaz@mastodon.social" + }, + "channel": { + "instagram": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\".", + "x": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "linkedin": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "bsky": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz.me) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "fosstodon": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz@mastodon.social) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "tiktok": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\"." + } + }, + { + "type": "speaker", + "name": "Sylwia Budzynska", + "image": "https://ep2026.europython.eu/media/speakers/social-sylwia-budzynska.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sylwia Budzynska — Introduction to security research. Find a CVE with CodeQL.", + "handles": { + "x": "@blazingwindsec", + "linkedin": "https://www.linkedin.com/in/sylwia-budzynska", + "fosstodon": "@blazingwind@infosec.exchange" + }, + "channel": { + "instagram": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\".", + "x": "Join Sylwia Budzynska (@blazingwindsec) at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "linkedin": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "bsky": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "fosstodon": "Join Sylwia Budzynska (@blazingwind@infosec.exchange) at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "tiktok": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\"." + } + }, + { + "type": "speaker", + "name": "Thomas Wouters", + "image": "https://ep2026.europython.eu/media/speakers/social-thomas-wouters.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Thomas Wouters — Free-threaded Python: past, present and future", + "handles": { + "linkedin": "https://www.linkedin.com/in/thomas-wouters-3a1241306", + "bsky": "@yhg1s.bsky.social", + "fosstodon": "@yhg1s@social.coop" + }, + "channel": { + "instagram": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\".", + "x": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "linkedin": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "bsky": "Join Thomas Wouters (@yhg1s.bsky.social) at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "fosstodon": "Join Thomas Wouters (@yhg1s@social.coop) at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "tiktok": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\"." + } + }, + { + "type": "speaker", + "name": "Tobias Wrigstad", + "image": "https://ep2026.europython.eu/media/speakers/social-tobias-wrigstad.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Tobias Wrigstad — Immutability: Fast and Safe sharing of Data across Subinterpreters", + "handles": {}, + "channel": { + "instagram": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\".", + "x": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "linkedin": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "bsky": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "fosstodon": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "tiktok": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\"." + } + }, + { + "type": "speaker", + "name": "Tomas Roun", + "image": "https://ep2026.europython.eu/media/speakers/social-tomas-roun.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Tomas Roun — Become a Python Core Developer in 3 Easy Steps", + "handles": {}, + "channel": { + "instagram": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\".", + "x": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "linkedin": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "bsky": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "fosstodon": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "tiktok": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\"." + } + }, + { + "type": "speaker", + "name": "Vincenzo Ventriglia", + "image": "https://ep2026.europython.eu/media/speakers/social-vincenzo-ventriglia.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Vincenzo Ventriglia — When the Sun Breaks Your GPS: Building an Explainable Early Warning System", + "handles": { + "linkedin": "https://www.linkedin.com/in/vincenzoventriglia" + }, + "channel": { + "instagram": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\".", + "x": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "linkedin": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "bsky": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "fosstodon": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "tiktok": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\"." + } + }, + { + "type": "speaker", + "name": "Vinícius Gubiani Ferreira", + "image": "https://ep2026.europython.eu/media/speakers/social-vinicius-gubiani-ferreira.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Vinícius Gubiani Ferreira — Load testing 1-on-1: discovering the limits of your system", + "handles": { + "linkedin": "https://www.linkedin.com/in/vinicius-gubiani-ferreira" + }, + "channel": { + "instagram": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\".", + "x": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "linkedin": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "bsky": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "fosstodon": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "tiktok": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\"." + } + }, + { + "type": "speaker", + "name": "Vlad-Stefan Harbuz", + "image": "https://ep2026.europython.eu/media/speakers/social-vlad-stefan-harbuz.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Vlad-Stefan Harbuz — Binary Dependencies: Identifying the Hidden Packages We All Depend On", + "handles": { + "bsky": "@vlad.website", + "fosstodon": "@vlad@mastodon.vlad.website" + }, + "channel": { + "instagram": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\".", + "x": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "linkedin": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "bsky": "Join Vlad-Stefan Harbuz (@vlad.website) at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "fosstodon": "Join Vlad-Stefan Harbuz (@vlad@mastodon.vlad.website) at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "tiktok": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\"." + } + }, + { + "type": "speaker", + "name": "Vladimir Slavov", + "image": "https://ep2026.europython.eu/media/speakers/social-vladimir-slavov.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Vladimir Slavov — How to Talk With Your Legal Department About Open Source", + "handles": { + "linkedin": "https://www.linkedin.com/in/vladimir-slavov-🇪🇺-578726180" + }, + "channel": { + "instagram": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\".", + "x": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "linkedin": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "bsky": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "fosstodon": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "tiktok": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\"." + } + }, + { + "type": "speaker", + "name": "Vyron Vasileiadis", + "image": "https://ep2026.europython.eu/media/speakers/social-vyron-vasileiadis.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Vyron Vasileiadis — Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control", + "handles": { + "linkedin": "https://www.linkedin.com/in/fedonman" + }, + "channel": { + "instagram": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\".", + "x": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "linkedin": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "bsky": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "fosstodon": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "tiktok": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\"." + } + }, + { + "type": "speaker", + "name": "Will Vincent", + "image": "https://ep2026.europython.eu/media/speakers/social-will-vincent.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Will Vincent — Deploying Python Web Apps in 2026", + "handles": { + "linkedin": "https://www.linkedin.com/in/william-s-vincent", + "bsky": "@wsvincent.bsky.social", + "fosstodon": "@wsvincent@fosstodon.org" + }, + "channel": { + "instagram": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\".", + "x": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "linkedin": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "bsky": "Join Will Vincent (@wsvincent.bsky.social) at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "fosstodon": "Join Will Vincent (@wsvincent@fosstodon.org) at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "tiktok": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\"." + } + }, + { + "type": "speaker", + "name": "Wojtek Erbetowski", + "image": "https://ep2026.europython.eu/media/speakers/social-wojtek-erbetowski.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Wojtek Erbetowski — You Don't Need to Solve It: What Actually Gets You Hired in Tech", + "handles": { + "linkedin": "https://www.linkedin.com/in/wojtekerbetowski" + }, + "channel": { + "instagram": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\".", + "x": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "linkedin": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "bsky": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "fosstodon": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "tiktok": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\"." + } + } +] diff --git a/src/pages/api/media/combined_socials_queue.ts b/src/pages/api/media/combined_socials_queue.ts index cef779b03..87b79b30b 100644 --- a/src/pages/api/media/combined_socials_queue.ts +++ b/src/pages/api/media/combined_socials_queue.ts @@ -21,6 +21,12 @@ function getMastodonUsername(url: string): string | undefined { return match ? `@${match[2]}@${match[1]}` : undefined; } +function getTikTokUsername(url: string): string | undefined { + if (!url) return undefined; + const match = url.match(/tiktok\.com\/@([^\/\?]+)/); + return match ? `@${match[1]}` : undefined; +} + function getLinkedInUrl(url: string): string | undefined { if (!url) return undefined; // Normalise linkedin.com URLs (handles both /in/ and /company/ paths) @@ -63,26 +69,38 @@ const charLimits: Record = { linkedin: 3000, bsky: 300, fosstodon: 500, + tiktok: 2200, }; +function sessionLabel(sessionType: string): string { + const t = sessionType?.toLowerCase(); + if (t === "tutorial") return "tutorial"; + if (t === "talk" || t === "talk (long session)") return "talk"; + return "session"; +} + // Speaker messages const speakerMessageTemplate = { - instagram: ({ name, talkTitle }) => + instagram: ({ name, talkTitle, label: _label }) => `Join ${name} at EuroPython for "${talkTitle}".`, - x: ({ name, handle, talkTitle, talkUrl }) => + x: ({ name, handle, talkTitle, talkUrl, label }) => handle - ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}" talk: ${talkUrl}` - : `Join ${name} at EuroPython for "${talkTitle}" talk: ${talkUrl}`, - linkedin: ({ name, talkTitle }) => - `Join ${name} at EuroPython for "${talkTitle}".`, - bsky: ({ name, handle, talkTitle, talkUrl }) => + ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}" ${label}: ${talkUrl}` + : `Join ${name} at EuroPython for "${talkTitle}" ${label}: ${talkUrl}`, + linkedin: ({ name, talkTitle, talkUrl, label }) => + `Join ${name} at EuroPython for "${talkTitle}" ${label}: ${talkUrl}`, + bsky: ({ name, handle, talkTitle, talkUrl, label }) => + handle + ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}" ${label}: ${talkUrl}` + : `Join ${name} at EuroPython for "${talkTitle}" ${label}: ${talkUrl}`, + fosstodon: ({ name, handle, talkTitle, talkUrl, label }) => handle - ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}" talk: ${talkUrl}` - : `Join ${name} at EuroPython for "${talkTitle}" talk: ${talkUrl}`, - fosstodon: ({ name, handle, talkTitle, talkUrl }) => + ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}" ${label}: ${talkUrl}` + : `Join ${name} at EuroPython for "${talkTitle}" ${label}: ${talkUrl}`, + tiktok: ({ name, handle, talkTitle, label: _label }) => handle - ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}" talk: ${talkUrl}` - : `Join ${name} at EuroPython for "${talkTitle}" talk: ${talkUrl}`, + ? `Join ${name} (${handle}) at EuroPython for "${talkTitle}".` + : `Join ${name} at EuroPython for "${talkTitle}".`, }; // Sponsor messages @@ -157,12 +175,13 @@ export const GET: APIRoute = async () => { const sessions = await Promise.all( submissions.map((s) => getEntry("sessions", s.id)) ); - const validSessions = sessions.filter((s) => s && s.data.title); - if (validSessions.length === 0) continue; - const talkTitle = validSessions[0]?.data.title || "an exciting topic"; - const talkCode = validSessions[0]?.data.code; - const talkUrl = `https://ep2026.europython.eu/${talkCode}`; + // One card per qualifying session (Talk, Tutorial, or other); skip sessions without a title + const qualifyingSessions = sessions.filter( + (s) => s && s.data.title && s.data.session_type + ); + if (qualifyingSessions.length === 0) continue; + const fallbackUrl = `https://ep2026.europython.eu/speaker/${speaker.id}`; const image = `https://ep2026.europython.eu/media/speakers/social-${speaker.id}.png`; @@ -171,39 +190,54 @@ export const GET: APIRoute = async () => { linkedin: getLinkedInUrl(linkedin_url || ""), bsky: getBlueskyUsername(bluesky_url || ""), fosstodon: getMastodonUsername(mastodon_url || ""), + tiktok: getTikTokUsername(speaker.data.tiktok || ""), }; - const generateSpeakerMessage = ( - platform: keyof typeof speakerMessageTemplate - ) => { - const fn = speakerMessageTemplate[platform]; - const handle = - platform === "instagram" - ? undefined - : handles[platform as keyof typeof handles]; - const full = fn({ + for (const session of qualifyingSessions) { + if (!session) continue; + const talkTitle = session.data.title; + const talkUrl = `https://ep2026.europython.eu/${session.data.code}`; + const label = sessionLabel(session.data.session_type); + // Use per-session image when speaker has multiple sessions, generic otherwise + const sessionImage = + qualifyingSessions.length > 1 + ? `https://ep2026.europython.eu/media/speakers/social-${speaker.id}-${session.data.code}.png` + : image; + + const generateSpeakerMessage = ( + platform: keyof typeof speakerMessageTemplate + ) => { + const fn = speakerMessageTemplate[platform]; + const handle = + platform === "instagram" + ? undefined + : handles[platform as keyof typeof handles]; + const full = fn({ + name, + handle, + talkTitle, + label, + talkUrl: platform === "instagram" ? fallbackUrl : talkUrl, + }); + return trimToLimit(full, charLimits[platform]); + }; + + speakerRecords.push({ + type: "speaker", name, - handle, - talkTitle, - talkUrl: platform === "instagram" ? fallbackUrl : talkUrl, + image: sessionImage, + alt_text: `Speaker announcement for EuroPython 2026 conference: ${name} — ${talkTitle}`, + handles, + channel: { + instagram: generateSpeakerMessage("instagram"), + x: generateSpeakerMessage("x"), + linkedin: generateSpeakerMessage("linkedin"), + bsky: generateSpeakerMessage("bsky"), + fosstodon: generateSpeakerMessage("fosstodon"), + tiktok: generateSpeakerMessage("tiktok"), + }, }); - return trimToLimit(full, charLimits[platform]); - }; - - speakerRecords.push({ - type: "speaker", - name, - image, - alt_text: `Speaker announcement for EuroPython 2026 conference: ${name} — ${talkTitle}`, - handles, - channel: { - instagram: generateSpeakerMessage("instagram"), - x: generateSpeakerMessage("x"), - linkedin: generateSpeakerMessage("linkedin"), - bsky: generateSpeakerMessage("bsky"), - fosstodon: generateSpeakerMessage("fosstodon"), - }, - }); + } } // ── build sponsor records (commercial) ────────────────────────────────── diff --git a/src/pages/api/media/combined_socials_queue_2026.json b/src/pages/api/media/combined_socials_queue_2026.json index e440010d6..a27178c8f 100644 --- a/src/pages/api/media/combined_socials_queue_2026.json +++ b/src/pages/api/media/combined_socials_queue_2026.json @@ -13,7 +13,8 @@ "x": "Join Abhik Sarkar (@abhiksark) at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\". Talk: https://ep2026.europython.eu/JQSQBB", "linkedin": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\".", "bsky": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\". Talk: https://ep2026.europython.eu/JQSQBB", - "fosstodon": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\". Talk: https://ep2026.europython.eu/JQSQBB" + "fosstodon": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\". Talk: https://ep2026.europython.eu/JQSQBB", + "tiktok": "Join Abhik Sarkar at EuroPython for \"An Introduction to Writing Fast GPU Code in Python\"." } }, { @@ -30,7 +31,8 @@ "x": "Join Abhimanyu Singh Shekhawat (@abshekha) at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\". Talk: https://ep2026.europython.eu/SNKUW7", "linkedin": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\".", "bsky": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\". Talk: https://ep2026.europython.eu/SNKUW7", - "fosstodon": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\". Talk: https://ep2026.europython.eu/SNKUW7" + "fosstodon": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\". Talk: https://ep2026.europython.eu/SNKUW7", + "tiktok": "Join Abhimanyu Singh Shekhawat at EuroPython for \"Deconstructing the tenets of Planet Scale Systems with Python\"." } }, { @@ -46,7 +48,8 @@ "x": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\". Talk: https://ep2026.europython.eu/ARRMQR", "linkedin": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\".", "bsky": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\". Talk: https://ep2026.europython.eu/ARRMQR", - "fosstodon": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\". Talk: https://ep2026.europython.eu/ARRMQR" + "fosstodon": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\". Talk: https://ep2026.europython.eu/ARRMQR", + "tiktok": "Join Abigail Afi Gbadago at EuroPython for \"Pointers, Objects, and References - How Python Manages Memory\"." } }, { @@ -60,7 +63,8 @@ "x": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC", "linkedin": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\".", "bsky": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC", - "fosstodon": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC" + "fosstodon": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC", + "tiktok": "Join Adam Gorgoń at EuroPython for \"gRPC for Beginners\"." } }, { @@ -76,7 +80,8 @@ "x": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\". Talk: https://ep2026.europython.eu/PPQ3KE", "linkedin": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\".", "bsky": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\". Talk: https://ep2026.europython.eu/PPQ3KE", - "fosstodon": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\". Talk: https://ep2026.europython.eu/PPQ3KE" + "fosstodon": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\". Talk: https://ep2026.europython.eu/PPQ3KE", + "tiktok": "Join Alejandro Cabello Jiménez at EuroPython for \"Python on Serverless: Strategies for Peak Performance\"." } }, { @@ -110,7 +115,8 @@ "x": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\". Talk: https://ep2026.europython.eu/PQCHT3", "linkedin": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\".", "bsky": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\". Talk: https://ep2026.europython.eu/PQCHT3", - "fosstodon": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\". Talk: https://ep2026.europython.eu/PQCHT3" + "fosstodon": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\". Talk: https://ep2026.europython.eu/PQCHT3", + "tiktok": "Join Aleksander at EuroPython for \"Python in the Service of Justice: Modern Analysis Tools in Forensics\"." } }, { @@ -142,7 +148,8 @@ "x": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ", "linkedin": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\".", "bsky": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ", - "fosstodon": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ" + "fosstodon": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ", + "tiktok": "Join Alenka Frim at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\"." } }, { @@ -159,7 +166,8 @@ "x": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\". Talk: https://ep2026.europython.eu/Y3DGWB", "linkedin": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\".", "bsky": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\". Talk: https://ep2026.europython.eu/Y3DGWB", - "fosstodon": "Join Anwesha Das (@anwesha@toots.dgplug.org) at EuroPython for \"Demystifying CRA for the community\". talk: https://ep2026.europython.eu/Y3DGWB" + "fosstodon": "Join Anwesha Das (@anwesha@toots.dgplug.org) at EuroPython for \"Demystifying CRA for the community\". talk: https://ep2026.europython.eu/Y3DGWB", + "tiktok": "Join Anwesha Das at EuroPython for \"Demystifying CRA for the community\"." } }, { @@ -193,7 +201,8 @@ "x": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\". Talk: https://ep2026.europython.eu/QWEJWT", "linkedin": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\".", "bsky": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\". Talk: https://ep2026.europython.eu/QWEJWT", - "fosstodon": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\". Talk: https://ep2026.europython.eu/QWEJWT" + "fosstodon": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\". Talk: https://ep2026.europython.eu/QWEJWT", + "tiktok": "Join Ariel Ortiz at EuroPython for \"Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly\"." } }, { @@ -228,7 +237,8 @@ "x": "Join Bryce Adelstein Lelbach (@blelbach) at EuroPython for \"GPU Programming in Pure Python\". Talk: https://ep2026.europython.eu/JSLSHM", "linkedin": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\".", "bsky": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\". Talk: https://ep2026.europython.eu/JSLSHM", - "fosstodon": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\". Talk: https://ep2026.europython.eu/JSLSHM" + "fosstodon": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\". Talk: https://ep2026.europython.eu/JSLSHM", + "tiktok": "Join Bryce Adelstein Lelbach at EuroPython for \"GPU Programming in Pure Python\"." } }, { @@ -244,7 +254,8 @@ "x": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\". Talk: https://ep2026.europython.eu/CBA98V", "linkedin": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\".", "bsky": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\". Talk: https://ep2026.europython.eu/CBA98V", - "fosstodon": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\". Talk: https://ep2026.europython.eu/CBA98V" + "fosstodon": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\". Talk: https://ep2026.europython.eu/CBA98V", + "tiktok": "Join Carlos A Aranibar at EuroPython for \"Designing and Building Custom Keyboards ⌨️ with Python\"." } }, { @@ -280,7 +291,8 @@ "x": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\". Talk: https://ep2026.europython.eu/VYUNHG", "linkedin": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\".", "bsky": "Join Cheuk Ting Ho (@cheuk.dev) at EuroPython for \"Rust Summit at EuroPython\". Talk: https://ep2026.europython.eu/VYUNHG", - "fosstodon": "Join Cheuk Ting Ho (@cheukting_ho@fosstodon.org) at EuroPython for \"Rust Summit at EuroPython\". talk: https://ep2026.europython.eu/VYUNHG" + "fosstodon": "Join Cheuk Ting Ho (@cheukting_ho@fosstodon.org) at EuroPython for \"Rust Summit at EuroPython\". talk: https://ep2026.europython.eu/VYUNHG", + "tiktok": "Join Cheuk Ting Ho at EuroPython for \"Rust Summit at EuroPython\"." } }, { @@ -314,7 +326,8 @@ "x": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\". Talk: https://ep2026.europython.eu/3HBWHB", "linkedin": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\".", "bsky": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\". Talk: https://ep2026.europython.eu/3HBWHB", - "fosstodon": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\". Talk: https://ep2026.europython.eu/3HBWHB" + "fosstodon": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\". Talk: https://ep2026.europython.eu/3HBWHB", + "tiktok": "Join Christian Leitold at EuroPython for \"How to blend Python, physics, and art to create (hopefully) pretty pictures\"." } }, { @@ -330,7 +343,8 @@ "x": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\". Talk: https://ep2026.europython.eu/93XE3S", "linkedin": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\".", "bsky": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\". Talk: https://ep2026.europython.eu/93XE3S", - "fosstodon": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\". Talk: https://ep2026.europython.eu/93XE3S" + "fosstodon": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\". Talk: https://ep2026.europython.eu/93XE3S", + "tiktok": "Join Claudiu Belu at EuroPython for \"What is this footgun called unittest.mock, and how to avoid misusing it\"." } }, { @@ -364,7 +378,8 @@ "x": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU", "linkedin": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\".", "bsky": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU", - "fosstodon": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU" + "fosstodon": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU", + "tiktok": "Join Cody Fincher at EuroPython for \"Designing Performant APIs with Litestar\"." } }, { @@ -400,7 +415,8 @@ "x": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\". Talk: https://ep2026.europython.eu/K7XNTF", "linkedin": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\".", "bsky": "Join Cristián Maureira-Fredes (@maureira.dev) at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\". Talk: https://ep2026.europython.eu/K7XNTF", - "fosstodon": "Join Cristián Maureira-Fredes (@maureira.dev@mastodon.social) at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\". talk: https://ep2026.europython.eu/K7XNTF" + "fosstodon": "Join Cristián Maureira-Fredes (@maureira.dev@mastodon.social) at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\". talk: https://ep2026.europython.eu/K7XNTF", + "tiktok": "Join Cristián Maureira-Fredes at EuroPython for \"Understand and expand Python: a hands-on experience on Python internals\"." } }, { @@ -414,7 +430,8 @@ "x": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\". Talk: https://ep2026.europython.eu/NTZ7DG", "linkedin": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\".", "bsky": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\". Talk: https://ep2026.europython.eu/NTZ7DG", - "fosstodon": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\". Talk: https://ep2026.europython.eu/NTZ7DG" + "fosstodon": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\". Talk: https://ep2026.europython.eu/NTZ7DG", + "tiktok": "Join Damian Wysocki at EuroPython for \"From Ticket Taker to Problem Solver: Discovery for Senior Thinking\"." } }, { @@ -446,7 +463,8 @@ "x": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\". Talk: https://ep2026.europython.eu/DRXC3E", "linkedin": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\".", "bsky": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\". Talk: https://ep2026.europython.eu/DRXC3E", - "fosstodon": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\". Talk: https://ep2026.europython.eu/DRXC3E" + "fosstodon": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\". Talk: https://ep2026.europython.eu/DRXC3E", + "tiktok": "Join Daniel Vahla at EuroPython for \"Python and HTTP/3: feel the difference in performance\"." } }, { @@ -480,7 +498,8 @@ "x": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\". Talk: https://ep2026.europython.eu/9MRVPM", "linkedin": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\".", "bsky": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\". Talk: https://ep2026.europython.eu/9MRVPM", - "fosstodon": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\". Talk: https://ep2026.europython.eu/9MRVPM" + "fosstodon": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\". Talk: https://ep2026.europython.eu/9MRVPM", + "tiktok": "Join Daria Korsakova at EuroPython for \"Stop firefighting: practical observability for Python APIs, workers & jobs\"." } }, { @@ -497,7 +516,8 @@ "x": "Join David Rousset (@davrous) at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\". Talk: https://ep2026.europython.eu/7NWR9R", "linkedin": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\".", "bsky": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\". Talk: https://ep2026.europython.eu/7NWR9R", - "fosstodon": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\". Talk: https://ep2026.europython.eu/7NWR9R" + "fosstodon": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\". Talk: https://ep2026.europython.eu/7NWR9R", + "tiktok": "Join David Rousset at EuroPython for \"When Python Agents Meet 3D: Automating Blender from Natural Language\"." } }, { @@ -531,7 +551,8 @@ "x": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\". Talk: https://ep2026.europython.eu/HVTSPC", "linkedin": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\".", "bsky": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\". Talk: https://ep2026.europython.eu/HVTSPC", - "fosstodon": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\". Talk: https://ep2026.europython.eu/HVTSPC" + "fosstodon": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\". Talk: https://ep2026.europython.eu/HVTSPC", + "tiktok": "Join David Vaz at EuroPython for \"I Am a Sucker for Conventions. Why Django’s Defaults Work, Until They Don’t\"." } }, { @@ -567,7 +588,8 @@ "x": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\". Talk: https://ep2026.europython.eu/PCMBVT", "linkedin": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\".", "bsky": "Join Dawn Wages (@bajoranengineer.bsky.social) at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\". Talk: https://ep2026.europython.eu/PCMBVT", - "fosstodon": "Join Dawn Wages (@bajoranengineer@mastodon.online) at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\". talk: https://ep2026.europython.eu/PCMBVT" + "fosstodon": "Join Dawn Wages (@bajoranengineer@mastodon.online) at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\". talk: https://ep2026.europython.eu/PCMBVT", + "tiktok": "Join Dawn Wages at EuroPython for \"How many spoons does your environment cost: Broken demos & human element\"." } }, { @@ -585,7 +607,8 @@ "x": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\". Talk: https://ep2026.europython.eu/SQRYJA", "linkedin": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\".", "bsky": "Join Deb Nicholson (@baconandcoconut.bsky.social) at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\". Talk: https://ep2026.europython.eu/SQRYJA", - "fosstodon": "Join Deb Nicholson (@baconandcoconut@freeradical.zone) at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\". talk: https://ep2026.europython.eu/SQRYJA" + "fosstodon": "Join Deb Nicholson (@baconandcoconut@freeradical.zone) at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\". talk: https://ep2026.europython.eu/SQRYJA", + "tiktok": "Join Deb Nicholson at EuroPython for \"International Open Source – Your Best Choice in Interesting Times\"." } }, { @@ -620,7 +643,8 @@ "x": "Join DEBORAH E DANJUMA (@danjumaedeborah) at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\". Talk: https://ep2026.europython.eu/SASJQU", "linkedin": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\".", "bsky": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\". Talk: https://ep2026.europython.eu/SASJQU", - "fosstodon": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\". Talk: https://ep2026.europython.eu/SASJQU" + "fosstodon": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\". Talk: https://ep2026.europython.eu/SASJQU", + "tiktok": "Join DEBORAH E DANJUMA at EuroPython for \"Flying in Formation - with Python Threading and ROS2 Parallelism\"." } }, { @@ -656,7 +680,8 @@ "x": "Join Diego Russo (@diegor) at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8", "linkedin": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\".", "bsky": "Join Diego Russo (@diegor.it) at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8", - "fosstodon": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8" + "fosstodon": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8", + "tiktok": "Join Diego Russo at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\"." } }, { @@ -672,7 +697,8 @@ "x": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\". Talk: https://ep2026.europython.eu/UPELCT", "linkedin": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\".", "bsky": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\". Talk: https://ep2026.europython.eu/UPELCT", - "fosstodon": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\". Talk: https://ep2026.europython.eu/UPELCT" + "fosstodon": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\". Talk: https://ep2026.europython.eu/UPELCT", + "tiktok": "Join Domagoj Marić at EuroPython for \"Friendly Borders: Graph algorithms reveal Eurovision voting patterns\"." } }, { @@ -706,7 +732,8 @@ "x": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\". Talk: https://ep2026.europython.eu/DWGSFA", "linkedin": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\".", "bsky": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\". Talk: https://ep2026.europython.eu/DWGSFA", - "fosstodon": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\". Talk: https://ep2026.europython.eu/DWGSFA" + "fosstodon": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\". Talk: https://ep2026.europython.eu/DWGSFA", + "tiktok": "Join ELENI TOKMAKTSI at EuroPython for \"From Pixels to Insights: Python for Earth Observation\"." } }, { @@ -740,7 +767,8 @@ "x": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\". Talk: https://ep2026.europython.eu/FB93DB", "linkedin": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\".", "bsky": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\". Talk: https://ep2026.europython.eu/FB93DB", - "fosstodon": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\". Talk: https://ep2026.europython.eu/FB93DB" + "fosstodon": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\". Talk: https://ep2026.europython.eu/FB93DB", + "tiktok": "Join Emmanuel Ugwu at EuroPython for \"Python Stings Your Ego: Finding Pride in Community, Not Just Code\"." } }, { @@ -757,7 +785,8 @@ "x": "Join Evan Kohilas (@ekohilas) at EuroPython for \"Args: Amazing or Approaching?\". Talk: https://ep2026.europython.eu/G9FDRY", "linkedin": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\".", "bsky": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\". Talk: https://ep2026.europython.eu/G9FDRY", - "fosstodon": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\". Talk: https://ep2026.europython.eu/G9FDRY" + "fosstodon": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\". Talk: https://ep2026.europython.eu/G9FDRY", + "tiktok": "Join Evan Kohilas at EuroPython for \"Args: Amazing or Approaching?\"." } }, { @@ -793,7 +822,8 @@ "x": "Join Farhaan Bukhsh (@fhackdroid) at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\". Talk: https://ep2026.europython.eu/LN7EF3", "linkedin": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\".", "bsky": "Join Farhaan Bukhsh (@fhackdroid.bsky.social) at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\". Talk: https://ep2026.europython.eu/LN7EF3", - "fosstodon": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\". Talk: https://ep2026.europython.eu/LN7EF3" + "fosstodon": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\". Talk: https://ep2026.europython.eu/LN7EF3", + "tiktok": "Join Farhaan Bukhsh at EuroPython for \"Python Games in the Browser: Teaching with WebAssembly\"." } }, { @@ -827,7 +857,8 @@ "x": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\". Talk: https://ep2026.europython.eu/T7ATVM", "linkedin": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\".", "bsky": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\". Talk: https://ep2026.europython.eu/T7ATVM", - "fosstodon": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\". Talk: https://ep2026.europython.eu/T7ATVM" + "fosstodon": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\". Talk: https://ep2026.europython.eu/T7ATVM", + "tiktok": "Join Felipe Arruda Pontes at EuroPython for \"How Python is Democratising Agritech for Farmers Across Europe\"." } }, { @@ -841,7 +872,8 @@ "x": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\". Talk: https://ep2026.europython.eu/CWBA3L", "linkedin": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\".", "bsky": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\". Talk: https://ep2026.europython.eu/CWBA3L", - "fosstodon": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\". Talk: https://ep2026.europython.eu/CWBA3L" + "fosstodon": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\". Talk: https://ep2026.europython.eu/CWBA3L", + "tiktok": "Join Filip Makraduli at EuroPython for \"Self-Hosted Small Models: From OpenAI Lock-In to Open Models\"." } }, { @@ -876,7 +908,8 @@ "x": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\". Talk: https://ep2026.europython.eu/DWBGJ9", "linkedin": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\".", "bsky": "Join Florian Freitag (@flofriday.bsky.social) at EuroPython for \"How CPythons Errors keep getting better\". Talk: https://ep2026.europython.eu/DWBGJ9", - "fosstodon": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\". Talk: https://ep2026.europython.eu/DWBGJ9" + "fosstodon": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\". Talk: https://ep2026.europython.eu/DWBGJ9", + "tiktok": "Join Florian Freitag at EuroPython for \"How CPythons Errors keep getting better\"." } }, { @@ -910,7 +943,8 @@ "x": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\". Talk: https://ep2026.europython.eu/UGLF7Q", "linkedin": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\".", "bsky": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\". Talk: https://ep2026.europython.eu/UGLF7Q", - "fosstodon": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\". Talk: https://ep2026.europython.eu/UGLF7Q" + "fosstodon": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\". Talk: https://ep2026.europython.eu/UGLF7Q", + "tiktok": "Join Francesco Lucantoni at EuroPython for \"Everything you always wanted to know about pandas*\"." } }, { @@ -928,7 +962,8 @@ "x": "Join Freya Bruhin (@the_compiler) at EuroPython for \"Property based testing with Hypothesis\". Talk: https://ep2026.europython.eu/NEH7RE", "linkedin": "Join Freya Bruhin at EuroPython for \"Property based testing with Hypothesis\".", "bsky": "Join Freya Bruhin (@the-compiler.org) at EuroPython for \"Property based testing with Hypothesis\". Talk: https://ep2026.europython.eu/NEH7RE", - "fosstodon": "Join Freya Bruhin (@the_compiler@mastodon.social) at EuroPython for \"Property based testing with Hypothesis\". talk: https://ep2026.europython.eu/NEH7RE" + "fosstodon": "Join Freya Bruhin (@the_compiler@mastodon.social) at EuroPython for \"Property based testing with Hypothesis\". talk: https://ep2026.europython.eu/NEH7RE", + "tiktok": "Join Freya Bruhin at EuroPython for \"Property based testing with Hypothesis\"." } }, { @@ -962,7 +997,8 @@ "x": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW", "linkedin": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\".", "bsky": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW", - "fosstodon": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW" + "fosstodon": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW", + "tiktok": "Join Fridtjof Stoldt at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\"." } }, { @@ -994,7 +1030,8 @@ "x": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU", "linkedin": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\".", "bsky": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU", - "fosstodon": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU" + "fosstodon": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU", + "tiktok": "Join GAFFIOT Jonathan at EuroPython for \"Getting out of the testing hell\"." } }, { @@ -1011,7 +1048,8 @@ "x": "Join Giovanni Barillari (@gi0baro) at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\". Talk: https://ep2026.europython.eu/US3W8J", "linkedin": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\".", "bsky": "Join Giovanni Barillari (@baro.dev) at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\". Talk: https://ep2026.europython.eu/US3W8J", - "fosstodon": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\". Talk: https://ep2026.europython.eu/US3W8J" + "fosstodon": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\". Talk: https://ep2026.europython.eu/US3W8J", + "tiktok": "Join Giovanni Barillari at EuroPython for \"Rethinking AsyncIO from scratch for free-threaded Python\"." } }, { @@ -1046,7 +1084,8 @@ "x": "Join Gleb Khmyznikov (@khmyznikov) at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8", "linkedin": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\".", "bsky": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8", - "fosstodon": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8" + "fosstodon": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\". Talk: https://ep2026.europython.eu/QXZMP8", + "tiktok": "Join Gleb Khmyznikov at EuroPython for \"Python on Windows on Arm: Ecosystem Enablement Update\"." } }, { @@ -1080,7 +1119,8 @@ "x": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW", "linkedin": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\".", "bsky": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW", - "fosstodon": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW" + "fosstodon": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW", + "tiktok": "Join Goutam Tiwari at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\"." } }, { @@ -1096,7 +1136,8 @@ "x": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\". Talk: https://ep2026.europython.eu/U7AHP3", "linkedin": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\".", "bsky": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\". Talk: https://ep2026.europython.eu/U7AHP3", - "fosstodon": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\". Talk: https://ep2026.europython.eu/U7AHP3" + "fosstodon": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\". Talk: https://ep2026.europython.eu/U7AHP3", + "tiktok": "Join Gracjan Adamus at EuroPython for \"PyPartMC: A Pythonic interface enhancing Fortran-based simulation package\"." } }, { @@ -1132,7 +1173,8 @@ "x": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\". Talk: https://ep2026.europython.eu/SGM9SV", "linkedin": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\".", "bsky": "Join Grzegorz Bokota (@czaki-pl.bsky.social) at EuroPython for \"Plugins in python - how it is done\". Talk: https://ep2026.europython.eu/SGM9SV", - "fosstodon": "Join Grzegorz Bokota (@czaki@fostodon.org) at EuroPython for \"Plugins in python - how it is done\". talk: https://ep2026.europython.eu/SGM9SV" + "fosstodon": "Join Grzegorz Bokota (@czaki@fostodon.org) at EuroPython for \"Plugins in python - how it is done\". talk: https://ep2026.europython.eu/SGM9SV", + "tiktok": "Join Grzegorz Bokota at EuroPython for \"Plugins in python - how it is done\"." } }, { @@ -1153,6 +1195,24 @@ "fosstodon": "🎉✨ A warm thank you to PyGda for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pygda.pl/" } }, + { + "type": "partner", + "name": "Pykonik", + "image": "https://ep2026.europython.eu/media/sponsors/social-pykonik.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Pykonik", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", + "linkedin": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", + "bsky": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", + "fosstodon": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/" + } + }, { "type": "speaker", "name": "Grzegorz Kocjan", @@ -1163,26 +1223,59 @@ }, "channel": { "instagram": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\".", - "x": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\". Talk: https://ep2026.europython.eu/TWBDVZ", - "linkedin": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\".", - "bsky": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\". Talk: https://ep2026.europython.eu/TWBDVZ", - "fosstodon": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\". Talk: https://ep2026.europython.eu/TWBDVZ" + "x": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "linkedin": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "bsky": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "fosstodon": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\" talk: https://ep2026.europython.eu/TWBDVZ", + "tiktok": "Join Grzegorz Kocjan at EuroPython for \"The hardest test suite I ever built - a pytest case study\"." } }, { - "type": "speaker", - "name": "Ivan Markeev", - "image": "https://ep2026.europython.eu/media/speakers/social-ivan-markeev.png", - "alt_text": "Speaker announcement for EuroPython 2026 conference: Ivan Markeev — Scaling Python Systems by Designing Team-Aware Architecture", + "type": "partner", + "name": "PyLadiesCon", + "image": "https://ep2026.europython.eu/media/sponsors/social-pyladiescon.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyLadiesCon", "handles": { - "linkedin": "https://www.linkedin.com/in/markeyev" + "x": "@pyladiescon", + "linkedin": "https://www.linkedin.com/company/pyladiescon", + "bsky": "@pyladiescon.bsky.social", + "fosstodon": "@pyladiescon@fosstodon.org" }, "channel": { - "instagram": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\".", - "x": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\". Talk: https://ep2026.europython.eu/QT97WA", - "linkedin": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\".", - "bsky": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\". Talk: https://ep2026.europython.eu/QT97WA", - "fosstodon": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\". Talk: https://ep2026.europython.eu/QT97WA" + "x": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon https://conference.pyladies.com/", + "linkedin": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/pyladiescon https://conference.pyladies.com/", + "bsky": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon.bsky.social https://conference.pyladies.com/", + "fosstodon": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon@fosstodon.org https://conference.pyladies.com/" + } + }, + { + "type": "speaker", + "name": "Gyeongjae Choi", + "image": "https://ep2026.europython.eu/media/speakers/social-gyeongjae-choi.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Gyeongjae Choi — Python Everywhere: The State of Python on WebAssembly", + "handles": {}, + "channel": { + "instagram": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\".", + "x": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "linkedin": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "bsky": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "fosstodon": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "tiktok": "Join Gyeongjae Choi at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\"." + } + }, + { + "type": "speaker", + "name": "Hood Chatham", + "image": "https://ep2026.europython.eu/media/speakers/social-hood-chatham.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Hood Chatham — Python Everywhere: The State of Python on WebAssembly", + "handles": {}, + "channel": { + "instagram": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\".", + "x": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "linkedin": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "bsky": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "fosstodon": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\" talk: https://ep2026.europython.eu/QHFXXA", + "tiktok": "Join Hood Chatham at EuroPython for \"Python Everywhere: The State of Python on WebAssembly\"." } }, { @@ -1198,34 +1291,33 @@ }, "channel": { "x": "🎉✨ We are pleased to welcome Revolut as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @Revolut https://www.revolut.com/", - "linkedin": "🚀✨ A huge thank you to Revolut for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://www.linkedin.com/company/revolut https://www.revolut.com/", - "bsky": "🎉✨ Thank you to Revolut for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.revolut.com/", - "fosstodon": "🚀✨ Big shoutout and heartfelt thanks to Revolut for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.revolut.com/" + "linkedin": "🎉✨ We are pleased to welcome Revolut as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/revolut https://www.revolut.com/", + "bsky": "🎉✨ We are pleased to welcome Revolut as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.revolut.com/", + "fosstodon": "🎉✨ We are pleased to welcome Revolut as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.revolut.com/" } }, { "type": "speaker", - "name": "Ivana Kellyer", - "image": "https://ep2026.europython.eu/media/speakers/social-ivana-kellyer.png", - "alt_text": "Speaker announcement for EuroPython 2026 conference: Ivana Kellyer — How to Maintain 60 Integrations and Not Go Bananas", + "name": "Ivan Markeev", + "image": "https://ep2026.europython.eu/media/speakers/social-ivan-markeev.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Ivan Markeev — Scaling Python Systems by Designing Team-Aware Architecture", "handles": { - "linkedin": "https://www.linkedin.com/in/ivana-kellyer", - "bsky": "@jenxness.bsky.social", - "fosstodon": "@jenx@hachyderm.io" + "linkedin": "https://www.linkedin.com/in/markeyev" }, "channel": { - "instagram": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\".", - "x": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\". Talk: https://ep2026.europython.eu/H7DVRJ", - "linkedin": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\".", - "bsky": "Join Ivana Kellyer (@jenxness.bsky.social) at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\". Talk: https://ep2026.europython.eu/H7DVRJ", - "fosstodon": "Join Ivana Kellyer (@jenx@hachyderm.io) at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\". talk: https://ep2026.europython.eu/H7DVRJ" + "instagram": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\".", + "x": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "linkedin": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "bsky": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "fosstodon": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\" talk: https://ep2026.europython.eu/QT97WA", + "tiktok": "Join Ivan Markeev at EuroPython for \"Scaling Python Systems by Designing Team-Aware Architecture\"." } }, { "type": "partner", - "name": "Pykonik", - "image": "https://ep2026.europython.eu/media/sponsors/social-pykonik.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: Pykonik", + "name": "PyStok", + "image": "https://ep2026.europython.eu/media/sponsors/social-pystok.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyStok", "handles": { "x": "", "linkedin": "", @@ -1233,10 +1325,29 @@ "fosstodon": "" }, "channel": { - "x": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", - "linkedin": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", - "bsky": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/", - "fosstodon": "🎉✨ A warm thank you to Pykonik for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.pykonik.org/" + "x": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", + "linkedin": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", + "bsky": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", + "fosstodon": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/" + } + }, + { + "type": "speaker", + "name": "Ivana Kellyer", + "image": "https://ep2026.europython.eu/media/speakers/social-ivana-kellyer.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Ivana Kellyer — How to Maintain 60 Integrations and Not Go Bananas", + "handles": { + "linkedin": "https://www.linkedin.com/in/ivana-kellyer", + "bsky": "@jenxness.bsky.social", + "fosstodon": "@jenx@hachyderm.io" + }, + "channel": { + "instagram": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\".", + "x": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "linkedin": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "bsky": "Join Ivana Kellyer (@jenxness.bsky.social) at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "fosstodon": "Join Ivana Kellyer (@jenx@hachyderm.io) at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\" talk: https://ep2026.europython.eu/H7DVRJ", + "tiktok": "Join Ivana Kellyer at EuroPython for \"How to Maintain 60 Integrations and Not Go Bananas\"." } }, { @@ -1247,10 +1358,29 @@ "handles": {}, "channel": { "instagram": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\".", - "x": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\". Talk: https://ep2026.europython.eu/RMY7Y7", - "linkedin": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\".", - "bsky": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\". Talk: https://ep2026.europython.eu/RMY7Y7", - "fosstodon": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\". Talk: https://ep2026.europython.eu/RMY7Y7" + "x": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "linkedin": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "bsky": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "fosstodon": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\" talk: https://ep2026.europython.eu/RMY7Y7", + "tiktok": "Join Jan Bjørge at EuroPython for \"PgQueuer: Drop the Broker, Keep the Queue\"." + } + }, + { + "type": "sponsor", + "name": "Vercel", + "image": "https://ep2026.europython.eu/media/sponsors/social-vercel.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Vercel", + "handles": { + "x": "@vercel", + "linkedin": "https://www.linkedin.com/company/vercel", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Vercel as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @vercel https://vercel.com", + "linkedin": "🚀✨ Big shoutout and heartfelt thanks to Vercel for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌https://www.linkedin.com/company/vercel https://vercel.com", + "bsky": "🎉✨ Thank you to Vercel for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://vercel.com", + "fosstodon": "🎉✨ Thank you to Vercel for sponsoring EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://vercel.com" } }, { @@ -1263,44 +1393,46 @@ }, "channel": { "instagram": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\".", - "x": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\". Talk: https://ep2026.europython.eu/9URK9U", - "linkedin": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\".", - "bsky": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\". Talk: https://ep2026.europython.eu/9URK9U", - "fosstodon": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\". Talk: https://ep2026.europython.eu/9URK9U" + "x": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "linkedin": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "bsky": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "fosstodon": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\" session: https://ep2026.europython.eu/9URK9U", + "tiktok": "Join Jan Koprowski at EuroPython for \"How we write unit test in my team in Openchip\"." } }, { - "type": "speaker", - "name": "Jan Musílek", - "image": "https://ep2026.europython.eu/media/speakers/social-jan-musilek.png", - "alt_text": "Speaker announcement for EuroPython 2026 conference: Jan Musílek — Breaking changes – not great, not terrible", + "type": "partner", + "name": "Python Ankara", + "image": "https://ep2026.europython.eu/media/sponsors/social-python-ankara.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Ankara", "handles": { - "fosstodon": "@stinovlas@fosstodon.org" + "x": "", + "linkedin": "https://www.linkedin.com/groups/10081345/", + "bsky": "", + "fosstodon": "" }, "channel": { - "instagram": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\".", - "x": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\". Talk: https://ep2026.europython.eu/FBQQXS", - "linkedin": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\".", - "bsky": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\". Talk: https://ep2026.europython.eu/FBQQXS", - "fosstodon": "Join Jan Musílek (@stinovlas@fosstodon.org) at EuroPython for \"Breaking changes – not great, not terrible\". talk: https://ep2026.europython.eu/FBQQXS" + "x": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/", + "linkedin": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/groups/10081345/ https://pythonankara.com/", + "bsky": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/", + "fosstodon": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/" } }, { - "type": "partner", - "name": "PyLadiesCon", - "image": "https://ep2026.europython.eu/media/sponsors/social-pyladiescon.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: PyLadiesCon", + "type": "speaker", + "name": "Jan Musílek", + "image": "https://ep2026.europython.eu/media/speakers/social-jan-musilek.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jan Musílek — Breaking changes – not great, not terrible", "handles": { - "x": "@pyladiescon", - "linkedin": "https://www.linkedin.com/company/pyladiescon", - "bsky": "@pyladiescon.bsky.social", - "fosstodon": "@pyladiescon@fosstodon.org" + "fosstodon": "@stinovlas@fosstodon.org" }, "channel": { - "x": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon https://conference.pyladies.com/", - "linkedin": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/pyladiescon https://conference.pyladies.com/", - "bsky": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon.bsky.social https://conference.pyladies.com/", - "fosstodon": "🎉✨ A warm thank you to PyLadiesCon for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pyladiescon@fosstodon.org https://conference.pyladies.com/" + "instagram": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\".", + "x": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "linkedin": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "bsky": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "fosstodon": "Join Jan Musílek (@stinovlas@fosstodon.org) at EuroPython for \"Breaking changes – not great, not terrible\" talk: https://ep2026.europython.eu/FBQQXS", + "tiktok": "Join Jan Musílek at EuroPython for \"Breaking changes – not great, not terrible\"." } }, { @@ -1315,10 +1447,62 @@ }, "channel": { "instagram": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\".", - "x": "Join Jan Smitka (@jansmitka) at EuroPython for \"Faster Django ORM queries for everybody\". Talk: https://ep2026.europython.eu/BFK3JK", - "linkedin": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\".", - "bsky": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\". Talk: https://ep2026.europython.eu/BFK3JK", - "fosstodon": "Join Jan Smitka (@jansmitka@fosstodon.org) at EuroPython for \"Faster Django ORM queries for everybody\". talk: https://ep2026.europython.eu/BFK3JK" + "x": "Join Jan Smitka (@jansmitka) at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "linkedin": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "bsky": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "fosstodon": "Join Jan Smitka (@jansmitka@fosstodon.org) at EuroPython for \"Faster Django ORM queries for everybody\" talk: https://ep2026.europython.eu/BFK3JK", + "tiktok": "Join Jan Smitka at EuroPython for \"Faster Django ORM queries for everybody\"." + } + }, + { + "type": "sponsor", + "name": "Waracle", + "image": "https://ep2026.europython.eu/media/sponsors/social-waracle.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Waracle", + "handles": { + "x": "@WaracleUK", + "linkedin": "https://www.linkedin.com/company/waracle", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Waracle as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @WaracleUK https://waracle.com/", + "linkedin": "🎉✨ We are pleased to welcome Waracle as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/waracle https://waracle.com/", + "bsky": "🎉✨ We are pleased to welcome Waracle as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://waracle.com/", + "fosstodon": "🎉✨ We are pleased to welcome Waracle as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://waracle.com/" + } + }, + { + "type": "speaker", + "name": "Jannis Leidel", + "image": "https://ep2026.europython.eu/media/speakers/social-jannis-leidel.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Jannis Leidel — Packaging Summit", + "handles": {}, + "channel": { + "instagram": "Join Jannis Leidel at EuroPython for \"Packaging Summit\".", + "x": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "linkedin": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "bsky": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "fosstodon": "Join Jannis Leidel at EuroPython for \"Packaging Summit\" session: https://ep2026.europython.eu/SBREFN", + "tiktok": "Join Jannis Leidel at EuroPython for \"Packaging Summit\"." + } + }, + { + "type": "partner", + "name": "Python en Español", + "image": "https://ep2026.europython.eu/media/sponsors/social-hablemospython.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python en Español", + "handles": { + "x": "@hablemospython", + "linkedin": "https://www.linkedin.com/company/94153525", + "bsky": "@hablemospython.dev", + "fosstodon": "@hablemospython@fosstodon.org" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython https://hablemospython.dev", + "linkedin": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/94153525 https://hablemospython.dev", + "bsky": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython.dev https://hablemospython.dev", + "fosstodon": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython@fosstodon.org https://hablemospython.dev" } }, { @@ -1331,10 +1515,11 @@ }, "channel": { "instagram": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\".", - "x": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\". Talk: https://ep2026.europython.eu/UGM7F8", - "linkedin": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\".", - "bsky": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\". Talk: https://ep2026.europython.eu/UGM7F8", - "fosstodon": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\". Talk: https://ep2026.europython.eu/UGM7F8" + "x": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "linkedin": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "bsky": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "fosstodon": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\" talk: https://ep2026.europython.eu/UGM7F8", + "tiktok": "Join Jarosław Śmietanka at EuroPython for \"The Hidden Cost of Complexity: Reducing Cognitive Load in Python\"." } }, { @@ -1347,28 +1532,11 @@ }, "channel": { "instagram": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\".", - "x": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\". Talk: https://ep2026.europython.eu/VNR377", - "linkedin": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\".", - "bsky": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\". Talk: https://ep2026.europython.eu/VNR377", - "fosstodon": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\". Talk: https://ep2026.europython.eu/VNR377" - } - }, - { - "type": "partner", - "name": "PyStok", - "image": "https://ep2026.europython.eu/media/sponsors/social-pystok.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: PyStok", - "handles": { - "x": "", - "linkedin": "", - "bsky": "", - "fosstodon": "" - }, - "channel": { - "x": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", - "linkedin": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", - "bsky": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/", - "fosstodon": "🎉✨ A warm thank you to PyStok for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pystok.org/" + "x": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "linkedin": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "bsky": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "fosstodon": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\" talk: https://ep2026.europython.eu/VNR377", + "tiktok": "Join Jenny Vega at EuroPython for \"From Molecules to Models: A Guide to AI Drug Discovery with Python\"." } }, { @@ -1381,10 +1549,29 @@ }, "channel": { "instagram": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\".", - "x": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\". Talk: https://ep2026.europython.eu/LFSJYL", - "linkedin": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\".", - "bsky": "Join Johannes Kolbe (@johko.bsky.social) at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\". Talk: https://ep2026.europython.eu/LFSJYL", - "fosstodon": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\". Talk: https://ep2026.europython.eu/LFSJYL" + "x": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "linkedin": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "bsky": "Join Johannes Kolbe (@johko.bsky.social) at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "fosstodon": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\" talk: https://ep2026.europython.eu/LFSJYL", + "tiktok": "Join Johannes Kolbe at EuroPython for \"Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI\"." + } + }, + { + "type": "partner", + "name": "Python Łódź", + "image": "https://ep2026.europython.eu/media/sponsors/social-pythonlodz.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Łódź", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", + "linkedin": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", + "bsky": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", + "fosstodon": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/" } }, { @@ -1395,10 +1582,11 @@ "handles": {}, "channel": { "instagram": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\".", - "x": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\". Talk: https://ep2026.europython.eu/NQGSY7", - "linkedin": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\".", - "bsky": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\". Talk: https://ep2026.europython.eu/NQGSY7", - "fosstodon": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\". Talk: https://ep2026.europython.eu/NQGSY7" + "x": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "linkedin": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "bsky": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "fosstodon": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\" tutorial: https://ep2026.europython.eu/NQGSY7", + "tiktok": "Join Jon Nordby at EuroPython for \"Developing IoT sensors with MicroPython\"." } }, { @@ -1409,28 +1597,11 @@ "handles": {}, "channel": { "instagram": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\".", - "x": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\". Talk: https://ep2026.europython.eu/PWGSJQ", - "linkedin": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\".", - "bsky": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\". Talk: https://ep2026.europython.eu/PWGSJQ", - "fosstodon": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\". Talk: https://ep2026.europython.eu/PWGSJQ" - } - }, - { - "type": "partner", - "name": "Python Ankara", - "image": "https://ep2026.europython.eu/media/sponsors/social-python-ankara.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: Python Ankara", - "handles": { - "x": "", - "linkedin": "https://www.linkedin.com/groups/10081345/", - "bsky": "", - "fosstodon": "" - }, - "channel": { - "x": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/", - "linkedin": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/groups/10081345/ https://pythonankara.com/", - "bsky": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/", - "fosstodon": "🎉✨ A warm thank you to Python Ankara for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pythonankara.com/" + "x": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "linkedin": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "bsky": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "fosstodon": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\" talk: https://ep2026.europython.eu/PWGSJQ", + "tiktok": "Join Jukka Lehtosalo at EuroPython for \"Speeding Up Python with Free Threading and Mypyc\"." } }, { @@ -1441,10 +1612,29 @@ "handles": {}, "channel": { "instagram": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\".", - "x": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU", - "linkedin": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\".", - "bsky": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU", - "fosstodon": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\". Talk: https://ep2026.europython.eu/ZRWENU" + "x": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "linkedin": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "bsky": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "fosstodon": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\" talk: https://ep2026.europython.eu/ZRWENU", + "tiktok": "Join Julien Courtès at EuroPython for \"Designing Performant APIs with Litestar\"." + } + }, + { + "type": "partner", + "name": "Python Pizza Warsaw", + "image": "https://ep2026.europython.eu/media/sponsors/social-pythonpizza.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Pizza Warsaw", + "handles": { + "x": "@pythonpizza", + "linkedin": "https://www.linkedin.com/company/98334563", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pythonpizza https://warsaw.python.pizza/", + "linkedin": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/98334563 https://warsaw.python.pizza/", + "bsky": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://warsaw.python.pizza/", + "fosstodon": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://warsaw.python.pizza/" } }, { @@ -1457,10 +1647,11 @@ }, "channel": { "instagram": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\".", - "x": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU", - "linkedin": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\".", - "bsky": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU", - "fosstodon": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\". Talk: https://ep2026.europython.eu/GCWCEU" + "x": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "linkedin": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "bsky": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "fosstodon": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\" tutorial: https://ep2026.europython.eu/GCWCEU", + "tiktok": "Join Julien Lenormand at EuroPython for \"Getting out of the testing hell\"." } }, { @@ -1471,28 +1662,11 @@ "handles": {}, "channel": { "instagram": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\".", - "x": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC", - "linkedin": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\".", - "bsky": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC", - "fosstodon": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\". Talk: https://ep2026.europython.eu/TGGHKC" - } - }, - { - "type": "partner", - "name": "Python en Español", - "image": "https://ep2026.europython.eu/media/sponsors/social-hablemospython.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: Python en Español", - "handles": { - "x": "@hablemospython", - "linkedin": "https://www.linkedin.com/company/94153525", - "bsky": "@hablemospython.dev", - "fosstodon": "@hablemospython@fosstodon.org" - }, - "channel": { - "x": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython https://hablemospython.dev", - "linkedin": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/94153525 https://hablemospython.dev", - "bsky": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython.dev https://hablemospython.dev", - "fosstodon": "🎉✨ A warm thank you to Python en Español for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @hablemospython@fosstodon.org https://hablemospython.dev" + "x": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "linkedin": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "bsky": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "fosstodon": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\" tutorial: https://ep2026.europython.eu/TGGHKC", + "tiktok": "Join Kamil Kulig at EuroPython for \"gRPC for Beginners\"." } }, { @@ -1507,10 +1681,29 @@ }, "channel": { "instagram": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\".", - "x": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\". Talk: https://ep2026.europython.eu/X3ENDU", - "linkedin": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\".", - "bsky": "Join Karen Jex (@karenhjex.bsky.social) at EuroPython for \"How much do you really need to know about Databases?\". Talk: https://ep2026.europython.eu/X3ENDU", - "fosstodon": "Join Karen Jex (@karenhjex@mastodon.online) at EuroPython for \"How much do you really need to know about Databases?\". talk: https://ep2026.europython.eu/X3ENDU" + "x": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "linkedin": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "bsky": "Join Karen Jex (@karenhjex.bsky.social) at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "fosstodon": "Join Karen Jex (@karenhjex@mastodon.online) at EuroPython for \"How much do you really need to know about Databases?\" talk: https://ep2026.europython.eu/X3ENDU", + "tiktok": "Join Karen Jex at EuroPython for \"How much do you really need to know about Databases?\"." + } + }, + { + "type": "partner", + "name": "Python Software Foundation", + "image": "https://ep2026.europython.eu/media/sponsors/social-psf.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: Python Software Foundation", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", + "linkedin": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", + "bsky": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", + "fosstodon": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/" } }, { @@ -1523,10 +1716,11 @@ }, "channel": { "instagram": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\".", - "x": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\". Talk: https://ep2026.europython.eu/NWLBJC", - "linkedin": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\".", - "bsky": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\". Talk: https://ep2026.europython.eu/NWLBJC", - "fosstodon": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\". Talk: https://ep2026.europython.eu/NWLBJC" + "x": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "linkedin": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "bsky": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "fosstodon": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\" talk: https://ep2026.europython.eu/NWLBJC", + "tiktok": "Join Katie Bickford at EuroPython for \"Why doing difficult things is good for you and good for your team\"." } }, { @@ -1537,28 +1731,11 @@ "handles": {}, "channel": { "instagram": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\".", - "x": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\". Talk: https://ep2026.europython.eu/KRMBWS", - "linkedin": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\".", - "bsky": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\". Talk: https://ep2026.europython.eu/KRMBWS", - "fosstodon": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\". Talk: https://ep2026.europython.eu/KRMBWS" - } - }, - { - "type": "partner", - "name": "Python Łódź", - "image": "https://ep2026.europython.eu/media/sponsors/social-pythonlodz.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: Python Łódź", - "handles": { - "x": "", - "linkedin": "", - "bsky": "", - "fosstodon": "" - }, - "channel": { - "x": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", - "linkedin": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", - "bsky": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/", - "fosstodon": "🎉✨ A warm thank you to Python Łódź for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.meetup.com/Python-Lodz/" + "x": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "linkedin": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "bsky": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "fosstodon": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\" talk: https://ep2026.europython.eu/KRMBWS", + "tiktok": "Join Ken Jin at EuroPython for \"Inside Python 3.15's JIT Optimizer\"." } }, { @@ -1572,10 +1749,29 @@ }, "channel": { "instagram": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\".", - "x": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\". Talk: https://ep2026.europython.eu/7VKQQM", - "linkedin": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\".", - "bsky": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\". Talk: https://ep2026.europython.eu/7VKQQM", - "fosstodon": "Join Koudai Aono (@koxudaxi@fosstodon.org) at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\". talk: https://ep2026.europython.eu/7VKQQM" + "x": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "linkedin": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "bsky": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "fosstodon": "Join Koudai Aono (@koxudaxi@fosstodon.org) at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\" talk: https://ep2026.europython.eu/7VKQQM", + "tiktok": "Join Koudai Aono at EuroPython for \"Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset\"." + } + }, + { + "type": "partner", + "name": "PyWaw", + "image": "https://ep2026.europython.eu/media/sponsors/social-pywaw.png", + "alt_text": "Partner announcement for EuroPython 2026 conference: PyWaw", + "handles": { + "x": "", + "linkedin": "", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", + "linkedin": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", + "bsky": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", + "fosstodon": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/" } }, { @@ -1589,10 +1785,11 @@ }, "channel": { "instagram": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\".", - "x": "Join Kuldeep Pisda (@kdpisda) at EuroPython for \"Django TDD Patterns: A Visual Field Guide\". Talk: https://ep2026.europython.eu/LNVDY3", - "linkedin": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\".", - "bsky": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\". Talk: https://ep2026.europython.eu/LNVDY3", - "fosstodon": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\". Talk: https://ep2026.europython.eu/LNVDY3" + "x": "Join Kuldeep Pisda (@kdpisda) at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "linkedin": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "bsky": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "fosstodon": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\" session: https://ep2026.europython.eu/LNVDY3", + "tiktok": "Join Kuldeep Pisda at EuroPython for \"Django TDD Patterns: A Visual Field Guide\"." } }, { @@ -1603,28 +1800,11 @@ "handles": {}, "channel": { "instagram": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\".", - "x": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\". Talk: https://ep2026.europython.eu/QY7PFR", - "linkedin": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\".", - "bsky": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\". Talk: https://ep2026.europython.eu/QY7PFR", - "fosstodon": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\". Talk: https://ep2026.europython.eu/QY7PFR" - } - }, - { - "type": "partner", - "name": "Python Pizza Warsaw", - "image": "https://ep2026.europython.eu/media/sponsors/social-pythonpizza.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: Python Pizza Warsaw", - "handles": { - "x": "@pythonpizza", - "linkedin": "https://www.linkedin.com/company/98334563", - "bsky": "", - "fosstodon": "" - }, - "channel": { - "x": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 @pythonpizza https://warsaw.python.pizza/", - "linkedin": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://www.linkedin.com/company/98334563 https://warsaw.python.pizza/", - "bsky": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://warsaw.python.pizza/", - "fosstodon": "🎉✨ A warm thank you to Python Pizza Warsaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://warsaw.python.pizza/" + "x": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "linkedin": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "bsky": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "fosstodon": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\" talk: https://ep2026.europython.eu/QY7PFR", + "tiktok": "Join Larry Hastings at EuroPython for \"Conquer multithreaded Python with Blanket\"." } }, { @@ -1637,10 +1817,11 @@ }, "channel": { "instagram": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\".", - "x": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\". Talk: https://ep2026.europython.eu/HJ8KPY", - "linkedin": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\".", - "bsky": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\". Talk: https://ep2026.europython.eu/HJ8KPY", - "fosstodon": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\". Talk: https://ep2026.europython.eu/HJ8KPY" + "x": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "linkedin": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "bsky": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "fosstodon": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\" talk: https://ep2026.europython.eu/HJ8KPY", + "tiktok": "Join Laura Summers at EuroPython for \"The Human-in-the-Loop is Tired\"." } }, { @@ -1654,10 +1835,11 @@ }, "channel": { "instagram": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\".", - "x": "Join Lokko Joyce Dzifa (@dzifa_lokko) at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\". Talk: https://ep2026.europython.eu/NS8QQA", - "linkedin": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\".", - "bsky": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\". Talk: https://ep2026.europython.eu/NS8QQA", - "fosstodon": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\". Talk: https://ep2026.europython.eu/NS8QQA" + "x": "Join Lokko Joyce Dzifa (@dzifa_lokko) at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "linkedin": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "bsky": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "fosstodon": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\" talk: https://ep2026.europython.eu/NS8QQA", + "tiktok": "Join Lokko Joyce Dzifa at EuroPython for \"The Unseen Pull Request: The Crisis We Don’t Measure\"." } }, { @@ -1672,28 +1854,11 @@ }, "channel": { "instagram": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\".", - "x": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\". Talk: https://ep2026.europython.eu/VKURLV", - "linkedin": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\".", - "bsky": "Join Lysandros Nikolaou (@lysnikolaou.com) at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\". Talk: https://ep2026.europython.eu/VKURLV", - "fosstodon": "Join Lysandros Nikolaou (@lysnikolaou@fosstodon.org) at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\". talk: https://ep2026.europython.eu/VKURLV" - } - }, - { - "type": "partner", - "name": "Python Software Foundation", - "image": "https://ep2026.europython.eu/media/sponsors/social-psf.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: Python Software Foundation", - "handles": { - "x": "", - "linkedin": "", - "bsky": "", - "fosstodon": "" - }, - "channel": { - "x": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", - "linkedin": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", - "bsky": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/", - "fosstodon": "🎉✨ A warm thank you to Python Software Foundation for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://python.org/" + "x": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "linkedin": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "bsky": "Join Lysandros Nikolaou (@lysnikolaou.com) at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "fosstodon": "Join Lysandros Nikolaou (@lysnikolaou@fosstodon.org) at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\" talk: https://ep2026.europython.eu/VKURLV", + "tiktok": "Join Lysandros Nikolaou at EuroPython for \"Python Dicts: Past, Present, and Free-Threaded Future\"." } }, { @@ -1704,10 +1869,11 @@ "handles": {}, "channel": { "instagram": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\".", - "x": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\". Talk: https://ep2026.europython.eu/YKWMBZ", - "linkedin": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\".", - "bsky": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\". Talk: https://ep2026.europython.eu/YKWMBZ", - "fosstodon": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\". Talk: https://ep2026.europython.eu/YKWMBZ" + "x": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "linkedin": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "bsky": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "fosstodon": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\" talk: https://ep2026.europython.eu/YKWMBZ", + "tiktok": "Join Maciej Sobczak at EuroPython for \"Django’s Magic, FastAPI’s Reality: Test Isolation at Scale\"." } }, { @@ -1718,10 +1884,11 @@ "handles": {}, "channel": { "instagram": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\".", - "x": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\". Talk: https://ep2026.europython.eu/ZPCDKE", - "linkedin": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\".", - "bsky": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\". Talk: https://ep2026.europython.eu/ZPCDKE", - "fosstodon": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\". Talk: https://ep2026.europython.eu/ZPCDKE" + "x": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "linkedin": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "bsky": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "fosstodon": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\" tutorial: https://ep2026.europython.eu/ZPCDKE", + "tiktok": "Join Mai Giménez at EuroPython for \"Let it rip a diffusion tutorial\"." } }, { @@ -1734,28 +1901,11 @@ }, "channel": { "instagram": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\".", - "x": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\". Talk: https://ep2026.europython.eu/MP9ZRM", - "linkedin": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\".", - "bsky": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\". Talk: https://ep2026.europython.eu/MP9ZRM", - "fosstodon": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\". Talk: https://ep2026.europython.eu/MP9ZRM" - } - }, - { - "type": "partner", - "name": "PyWaw", - "image": "https://ep2026.europython.eu/media/sponsors/social-pywaw.png", - "alt_text": "Partner announcement for EuroPython 2026 conference: PyWaw", - "handles": { - "x": "", - "linkedin": "", - "bsky": "", - "fosstodon": "" - }, - "channel": { - "x": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", - "linkedin": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", - "bsky": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/", - "fosstodon": "🎉✨ A warm thank you to PyWaw for supporting EuroPython 2026! We're proud to be a space where communities come together, and we value the opportunity to collaborate with other communities and open-source projects. 🙌 https://pywaw.org/" + "x": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "linkedin": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "bsky": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "fosstodon": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\" talk: https://ep2026.europython.eu/MP9ZRM", + "tiktok": "Join Malcolm Smith at EuroPython for \"Supporting Android and iOS in your Python package\"." } }, { @@ -1769,10 +1919,11 @@ }, "channel": { "instagram": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\".", - "x": "Join Manivannan Selvaraj (@citizenmani) at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\". Talk: https://ep2026.europython.eu/WHHAQK", - "linkedin": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\".", - "bsky": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\". Talk: https://ep2026.europython.eu/WHHAQK", - "fosstodon": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\". Talk: https://ep2026.europython.eu/WHHAQK" + "x": "Join Manivannan Selvaraj (@citizenmani) at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "linkedin": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "bsky": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "fosstodon": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\" talk: https://ep2026.europython.eu/WHHAQK", + "tiktok": "Join Manivannan Selvaraj at EuroPython for \"From Code Hero to Team Leader: Learning to Let Go\"." } }, { @@ -1786,10 +1937,11 @@ }, "channel": { "instagram": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\".", - "x": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\". Talk: https://ep2026.europython.eu/H7KGU3", - "linkedin": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\".", - "bsky": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\". Talk: https://ep2026.europython.eu/H7KGU3", - "fosstodon": "Join Marc-André Lemburg (@malemburg@mastodon.social) at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\". talk: https://ep2026.europython.eu/H7KGU3" + "x": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "linkedin": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "bsky": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "fosstodon": "Join Marc-André Lemburg (@malemburg@mastodon.social) at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\" talk: https://ep2026.europython.eu/H7KGU3", + "tiktok": "Join Marc-André Lemburg at EuroPython for \"DuckLake - Take Python and DuckDB for a swim in your data lake\"." } }, { @@ -1800,10 +1952,11 @@ "handles": {}, "channel": { "instagram": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\".", - "x": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\". Talk: https://ep2026.europython.eu/BJBKRM", - "linkedin": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\".", - "bsky": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\". Talk: https://ep2026.europython.eu/BJBKRM", - "fosstodon": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\". Talk: https://ep2026.europython.eu/BJBKRM" + "x": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "linkedin": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "bsky": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "fosstodon": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\" talk: https://ep2026.europython.eu/BJBKRM", + "tiktok": "Join Marcelo Trylesinski at EuroPython for \"What I've Learned Maintaining the MCP Python SDK\"." } }, { @@ -1814,10 +1967,11 @@ "handles": {}, "channel": { "instagram": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\".", - "x": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\". Talk: https://ep2026.europython.eu/788XZA", - "linkedin": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\".", - "bsky": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\". Talk: https://ep2026.europython.eu/788XZA", - "fosstodon": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\". Talk: https://ep2026.europython.eu/788XZA" + "x": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "linkedin": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "bsky": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "fosstodon": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\" talk: https://ep2026.europython.eu/788XZA", + "tiktok": "Join Marco Grossi at EuroPython for \"From one to 1 million packet/second: scaling global Internet monitoring\"." } }, { @@ -1830,10 +1984,11 @@ }, "channel": { "instagram": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\".", - "x": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\". Talk: https://ep2026.europython.eu/TAZHCD", - "linkedin": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\".", - "bsky": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\". Talk: https://ep2026.europython.eu/TAZHCD", - "fosstodon": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\". Talk: https://ep2026.europython.eu/TAZHCD" + "x": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "linkedin": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "bsky": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "fosstodon": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\" talk: https://ep2026.europython.eu/TAZHCD", + "tiktok": "Join Maria Ashna at EuroPython for \"Climbing the Pyramid: Behind the Scenes of the Python Package Index\"." } }, { @@ -1846,10 +2001,11 @@ }, "channel": { "instagram": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\".", - "x": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\". Talk: https://ep2026.europython.eu/PBTPJR", - "linkedin": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\".", - "bsky": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\". Talk: https://ep2026.europython.eu/PBTPJR", - "fosstodon": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\". Talk: https://ep2026.europython.eu/PBTPJR" + "x": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "linkedin": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "bsky": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "fosstodon": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\" talk: https://ep2026.europython.eu/PBTPJR", + "tiktok": "Join Maria Lowas-Rzechonek at EuroPython for \"How to tackle complex authorization logic (and don't go crazy)\"." } }, { @@ -1863,10 +2019,11 @@ }, "channel": { "instagram": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\".", - "x": "Join Mario García (@mariogmd) at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\". Talk: https://ep2026.europython.eu/ETBPVR", - "linkedin": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\".", - "bsky": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\". Talk: https://ep2026.europython.eu/ETBPVR", - "fosstodon": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\". Talk: https://ep2026.europython.eu/ETBPVR" + "x": "Join Mario García (@mariogmd) at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "linkedin": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "bsky": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "fosstodon": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\" talk: https://ep2026.europython.eu/ETBPVR", + "tiktok": "Join Mario García at EuroPython for \"Localization Made Easy: A Pythonic Approach to Global Applications\"." } }, { @@ -1877,10 +2034,11 @@ "handles": {}, "channel": { "instagram": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\".", - "x": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\". Talk: https://ep2026.europython.eu/7SSS93", - "linkedin": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\".", - "bsky": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\". Talk: https://ep2026.europython.eu/7SSS93", - "fosstodon": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\". Talk: https://ep2026.europython.eu/7SSS93" + "x": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "linkedin": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "bsky": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "fosstodon": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\" talk: https://ep2026.europython.eu/7SSS93", + "tiktok": "Join Mateusz Modrzejewski at EuroPython for \"How Music Generation Actually Works\"." } }, { @@ -1893,10 +2051,28 @@ }, "channel": { "instagram": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\".", - "x": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\". Talk: https://ep2026.europython.eu/SCZ8ZK", - "linkedin": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\".", - "bsky": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\". Talk: https://ep2026.europython.eu/SCZ8ZK", - "fosstodon": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\". Talk: https://ep2026.europython.eu/SCZ8ZK" + "x": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "linkedin": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "bsky": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "fosstodon": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\" talk: https://ep2026.europython.eu/SCZ8ZK", + "tiktok": "Join Mateusz Sokół at EuroPython for \"Building your DSL compiler in Python\"." + } + }, + { + "type": "speaker", + "name": "Matthias Kirschner", + "image": "https://ep2026.europython.eu/media/speakers/social-matthias-kirschner.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Matthias Kirschner — A vision for software freedom in 2048", + "handles": { + "fosstodon": "@kirschner@mastodon.social" + }, + "channel": { + "instagram": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\".", + "x": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "linkedin": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "bsky": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "fosstodon": "Join Matthias Kirschner (@kirschner@mastodon.social) at EuroPython for \"A vision for software freedom in 2048\" talk: https://ep2026.europython.eu/R3GBYA", + "tiktok": "Join Matthias Kirschner at EuroPython for \"A vision for software freedom in 2048\"." } }, { @@ -1909,10 +2085,11 @@ }, "channel": { "instagram": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\".", - "x": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\". Talk: https://ep2026.europython.eu/JRMSZT", - "linkedin": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\".", - "bsky": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\". Talk: https://ep2026.europython.eu/JRMSZT", - "fosstodon": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\". Talk: https://ep2026.europython.eu/JRMSZT" + "x": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "linkedin": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "bsky": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "fosstodon": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\" tutorial: https://ep2026.europython.eu/JRMSZT", + "tiktok": "Join Michael Seifert at EuroPython for \"Code organization for non-engineers\"." } }, { @@ -1923,10 +2100,11 @@ "handles": {}, "channel": { "instagram": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\".", - "x": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\". Talk: https://ep2026.europython.eu/BMQP7J", - "linkedin": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\".", - "bsky": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\". Talk: https://ep2026.europython.eu/BMQP7J", - "fosstodon": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\". Talk: https://ep2026.europython.eu/BMQP7J" + "x": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "linkedin": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "bsky": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "fosstodon": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\" talk: https://ep2026.europython.eu/BMQP7J", + "tiktok": "Join Michał Karzyński at EuroPython for \"Building a Smart Home Device with MicroPython\"." } }, { @@ -1941,10 +2119,11 @@ }, "channel": { "instagram": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\".", - "x": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\". Talk: https://ep2026.europython.eu/NXNHSB", - "linkedin": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\".", - "bsky": "Join Mike Fiedler (@miketheman.com) at EuroPython for \"Anatomy of a Phishing Campaign\". Talk: https://ep2026.europython.eu/NXNHSB", - "fosstodon": "Join Mike Fiedler (@miketheman@hachyderm.io) at EuroPython for \"Anatomy of a Phishing Campaign\". talk: https://ep2026.europython.eu/NXNHSB" + "x": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "linkedin": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "bsky": "Join Mike Fiedler (@miketheman.com) at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "fosstodon": "Join Mike Fiedler (@miketheman@hachyderm.io) at EuroPython for \"Anatomy of a Phishing Campaign\" talk: https://ep2026.europython.eu/NXNHSB", + "tiktok": "Join Mike Fiedler at EuroPython for \"Anatomy of a Phishing Campaign\"." } }, { @@ -1958,10 +2137,11 @@ }, "channel": { "instagram": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\".", - "x": "Join Mike Müller (@pyacademy) at EuroPython for \"Fast Python Development with uv\". Talk: https://ep2026.europython.eu/RARRL7", - "linkedin": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\".", - "bsky": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\". Talk: https://ep2026.europython.eu/RARRL7", - "fosstodon": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\". Talk: https://ep2026.europython.eu/RARRL7" + "x": "Join Mike Müller (@pyacademy) at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "linkedin": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "bsky": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "fosstodon": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\" tutorial: https://ep2026.europython.eu/RARRL7", + "tiktok": "Join Mike Müller at EuroPython for \"Fast Python Development with uv\"." } }, { @@ -1974,10 +2154,11 @@ }, "channel": { "instagram": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\".", - "x": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\". Talk: https://ep2026.europython.eu/TG7YMS", - "linkedin": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\".", - "bsky": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\". Talk: https://ep2026.europython.eu/TG7YMS", - "fosstodon": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\". Talk: https://ep2026.europython.eu/TG7YMS" + "x": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "linkedin": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "bsky": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "fosstodon": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\" talk: https://ep2026.europython.eu/TG7YMS", + "tiktok": "Join Mohamed Elmaghraby at EuroPython for \"Refactor, Optimize, and Test: Crafting Cleaner Python Code\"." } }, { @@ -1988,10 +2169,11 @@ "handles": {}, "channel": { "instagram": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\".", - "x": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW", - "linkedin": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\".", - "bsky": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW", - "fosstodon": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\". Talk: https://ep2026.europython.eu/VSZSMW" + "x": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "linkedin": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "bsky": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "fosstodon": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\" talk: https://ep2026.europython.eu/VSZSMW", + "tiktok": "Join Mohit Kumar Vyas at EuroPython for \"I Accidentally Built a Monitoring System While Trying to Debug Memory Leak\"." } }, { @@ -2002,24 +2184,41 @@ "handles": {}, "channel": { "instagram": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\".", - "x": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\". Talk: https://ep2026.europython.eu/ENK9EF", - "linkedin": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\".", - "bsky": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\". Talk: https://ep2026.europython.eu/ENK9EF", - "fosstodon": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\". Talk: https://ep2026.europython.eu/ENK9EF" + "x": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "linkedin": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "bsky": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "fosstodon": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\" talk: https://ep2026.europython.eu/ENK9EF", + "tiktok": "Join Nathan Goldbaum at EuroPython for \"What every Python developer should know about the CPython ABI\"." } }, { "type": "speaker", "name": "Nicholas H.Tollervey", - "image": "https://ep2026.europython.eu/media/speakers/social-nicholas-h-tollervey.png", + "image": "https://ep2026.europython.eu/media/speakers/social-nicholas-h-tollervey-BTTFFJ.png", "alt_text": "Speaker announcement for EuroPython 2026 conference: Nicholas H.Tollervey — Web Assembly Summit", "handles": {}, "channel": { "instagram": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\".", - "x": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\". Talk: https://ep2026.europython.eu/BTTFFJ", - "linkedin": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\".", - "bsky": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\". Talk: https://ep2026.europython.eu/BTTFFJ", - "fosstodon": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\". Talk: https://ep2026.europython.eu/BTTFFJ" + "x": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "linkedin": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "bsky": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "fosstodon": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\" session: https://ep2026.europython.eu/BTTFFJ", + "tiktok": "Join Nicholas H.Tollervey at EuroPython for \"Web Assembly Summit\"." + } + }, + { + "type": "speaker", + "name": "Nicholas H.Tollervey", + "image": "https://ep2026.europython.eu/media/speakers/social-nicholas-h-tollervey-SWCWKZ.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Nicholas H.Tollervey — The Good, the Bad and the Ugly: native Python app development and delivery.", + "handles": {}, + "channel": { + "instagram": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\".", + "x": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "linkedin": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "bsky": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "fosstodon": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\" talk: https://ep2026.europython.eu/SWCWKZ", + "tiktok": "Join Nicholas H.Tollervey at EuroPython for \"The Good, the Bad and the Ugly: native Python app development and delivery.\"." } }, { @@ -2033,10 +2232,11 @@ }, "channel": { "instagram": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\".", - "x": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\". Talk: https://ep2026.europython.eu/M8Q77Z", - "linkedin": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\".", - "bsky": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\". Talk: https://ep2026.europython.eu/M8Q77Z", - "fosstodon": "Join Nikita Karamov (@kytta@polymaths.social) at EuroPython for \"Should you trust Trusted Publishing?\". talk: https://ep2026.europython.eu/M8Q77Z" + "x": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "linkedin": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "bsky": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "fosstodon": "Join Nikita Karamov (@kytta@polymaths.social) at EuroPython for \"Should you trust Trusted Publishing?\" talk: https://ep2026.europython.eu/M8Q77Z", + "tiktok": "Join Nikita Karamov at EuroPython for \"Should you trust Trusted Publishing?\"." } }, { @@ -2049,10 +2249,11 @@ }, "channel": { "instagram": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\".", - "x": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\". Talk: https://ep2026.europython.eu/JEN7WA", - "linkedin": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\".", - "bsky": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\". Talk: https://ep2026.europython.eu/JEN7WA", - "fosstodon": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\". Talk: https://ep2026.europython.eu/JEN7WA" + "x": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "linkedin": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "bsky": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "fosstodon": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\" talk: https://ep2026.europython.eu/JEN7WA", + "tiktok": "Join Nikita Smirnov at EuroPython for \"Fast Multi-Version ETL Pipelines in Python with Generators and functools\"." } }, { @@ -2066,10 +2267,11 @@ }, "channel": { "instagram": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\".", - "x": "Join Nitish (@nitishagar) at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\". Talk: https://ep2026.europython.eu/BYWVNK", - "linkedin": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\".", - "bsky": "Join Nitish (@nitishagar.bsky.social) at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\". Talk: https://ep2026.europython.eu/BYWVNK", - "fosstodon": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\". Talk: https://ep2026.europython.eu/BYWVNK" + "x": "Join Nitish (@nitishagar) at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "linkedin": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "bsky": "Join Nitish (@nitishagar.bsky.social) at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "fosstodon": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\" talk: https://ep2026.europython.eu/BYWVNK", + "tiktok": "Join Nitish at EuroPython for \"Beyond the Demo: Production Patterns for Streaming LLM Systems\"." } }, { @@ -2080,10 +2282,11 @@ "handles": {}, "channel": { "instagram": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\".", - "x": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\". Talk: https://ep2026.europython.eu/3FW7UF", - "linkedin": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\".", - "bsky": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\". Talk: https://ep2026.europython.eu/3FW7UF", - "fosstodon": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\". Talk: https://ep2026.europython.eu/3FW7UF" + "x": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "linkedin": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "bsky": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "fosstodon": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\" talk: https://ep2026.europython.eu/3FW7UF", + "tiktok": "Join Oladapo Jesusemilore Jael at EuroPython for \"Python Learning that fits Teen Life\"." } }, { @@ -2097,10 +2300,11 @@ }, "channel": { "instagram": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\".", - "x": "Join Oladapo Kayode Abiodun (@oladapokayodea1) at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\". Talk: https://ep2026.europython.eu/33RGZA", - "linkedin": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\".", - "bsky": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\". Talk: https://ep2026.europython.eu/33RGZA", - "fosstodon": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\". Talk: https://ep2026.europython.eu/33RGZA" + "x": "Join Oladapo Kayode Abiodun (@oladapokayodea1) at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "linkedin": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "bsky": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "fosstodon": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\" session: https://ep2026.europython.eu/33RGZA", + "tiktok": "Join Oladapo Kayode Abiodun at EuroPython for \"Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks\"." } }, { @@ -2113,10 +2317,11 @@ }, "channel": { "instagram": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\".", - "x": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\". Talk: https://ep2026.europython.eu/GP39VP", - "linkedin": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\".", - "bsky": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\". Talk: https://ep2026.europython.eu/GP39VP", - "fosstodon": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\". Talk: https://ep2026.europython.eu/GP39VP" + "x": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "linkedin": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "bsky": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "fosstodon": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\" session: https://ep2026.europython.eu/GP39VP", + "tiktok": "Join Olha Poliuliakh at EuroPython for \"Why Coding Agents Fail at ML (and How to Fix It)\"." } }, { @@ -2129,10 +2334,11 @@ }, "channel": { "instagram": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\".", - "x": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\". Talk: https://ep2026.europython.eu/RGBSS8", - "linkedin": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\".", - "bsky": "Join Pablo Galindo Salgado (@pablogsal.com) at EuroPython for \"Lazy imports and the art of interpreter procrastination\". Talk: https://ep2026.europython.eu/RGBSS8", - "fosstodon": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\". Talk: https://ep2026.europython.eu/RGBSS8" + "x": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "linkedin": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "bsky": "Join Pablo Galindo Salgado (@pablogsal.com) at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "fosstodon": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\" talk: https://ep2026.europython.eu/RGBSS8", + "tiktok": "Join Pablo Galindo Salgado at EuroPython for \"Lazy imports and the art of interpreter procrastination\"." } }, { @@ -2145,10 +2351,11 @@ }, "channel": { "instagram": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\".", - "x": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\". Talk: https://ep2026.europython.eu/8HBEYS", - "linkedin": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\".", - "bsky": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\". Talk: https://ep2026.europython.eu/8HBEYS", - "fosstodon": "Join Petr Viktorin (@encukou@mastodon.social) at EuroPython for \"Python Syntax Diagram\". talk: https://ep2026.europython.eu/8HBEYS" + "x": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "linkedin": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "bsky": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "fosstodon": "Join Petr Viktorin (@encukou@mastodon.social) at EuroPython for \"Python Syntax Diagram\" session: https://ep2026.europython.eu/8HBEYS", + "tiktok": "Join Petr Viktorin at EuroPython for \"Python Syntax Diagram\"." } }, { @@ -2162,10 +2369,11 @@ }, "channel": { "instagram": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\".", - "x": "Join Piotr Grędowski (@piotrgredowski) at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\". Talk: https://ep2026.europython.eu/LRVCYU", - "linkedin": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\".", - "bsky": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\". Talk: https://ep2026.europython.eu/LRVCYU", - "fosstodon": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\". Talk: https://ep2026.europython.eu/LRVCYU" + "x": "Join Piotr Grędowski (@piotrgredowski) at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "linkedin": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "bsky": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "fosstodon": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\" talk: https://ep2026.europython.eu/LRVCYU", + "tiktok": "Join Piotr Grędowski at EuroPython for \"Modern TUI with Textual in Python: Building Monokl\"." } }, { @@ -2178,10 +2386,11 @@ }, "channel": { "instagram": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\".", - "x": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\". Talk: https://ep2026.europython.eu/RB9TKP", - "linkedin": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\".", - "bsky": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\". Talk: https://ep2026.europython.eu/RB9TKP", - "fosstodon": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\". Talk: https://ep2026.europython.eu/RB9TKP" + "x": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "linkedin": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "bsky": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "fosstodon": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\" talk: https://ep2026.europython.eu/RB9TKP", + "tiktok": "Join Piotr Rybak at EuroPython for \"Is Object Detection Dead? A Case for Recognizing LEGO Bricks\"." } }, { @@ -2192,10 +2401,11 @@ "handles": {}, "channel": { "instagram": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\".", - "x": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ", - "linkedin": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\".", - "bsky": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ", - "fosstodon": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\". Talk: https://ep2026.europython.eu/ZFJEUJ" + "x": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "linkedin": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "bsky": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "fosstodon": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\" talk: https://ep2026.europython.eu/ZFJEUJ", + "tiktok": "Join Raúl Cumplido Domínguez at EuroPython for \"Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data\"." } }, { @@ -2211,16 +2421,17 @@ }, "channel": { "instagram": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\".", - "x": "Join Reuven M. Lerner (@reuvenmlerner) at EuroPython for \"Let's write some decorators!\". Talk: https://ep2026.europython.eu/MENRZG", - "linkedin": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\".", - "bsky": "Join Reuven M. Lerner (@lernerpython.com) at EuroPython for \"Let's write some decorators!\". Talk: https://ep2026.europython.eu/MENRZG", - "fosstodon": "Join Reuven M. Lerner (@reuven@fosstodon.org) at EuroPython for \"Let's write some decorators!\". talk: https://ep2026.europython.eu/MENRZG" + "x": "Join Reuven M. Lerner (@reuvenmlerner) at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "linkedin": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "bsky": "Join Reuven M. Lerner (@lernerpython.com) at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "fosstodon": "Join Reuven M. Lerner (@reuven@fosstodon.org) at EuroPython for \"Let's write some decorators!\" tutorial: https://ep2026.europython.eu/MENRZG", + "tiktok": "Join Reuven M. Lerner at EuroPython for \"Let's write some decorators!\"." } }, { "type": "speaker", "name": "Rodrigo Girão Serrão", - "image": "https://ep2026.europython.eu/media/speakers/social-rodrigo-girao-serrao.png", + "image": "https://ep2026.europython.eu/media/speakers/social-rodrigo-girao-serrao-PRGGNW.png", "alt_text": "Speaker announcement for EuroPython 2026 conference: Rodrigo Girão Serrão — A tour of the module `itertools`", "handles": { "x": "@mathsppblog", @@ -2230,10 +2441,31 @@ }, "channel": { "instagram": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\".", - "x": "Join Rodrigo Girão Serrão (@mathsppblog) at EuroPython for \"A tour of the module `itertools`\". Talk: https://ep2026.europython.eu/PRGGNW", - "linkedin": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\".", - "bsky": "Join Rodrigo Girão Serrão (@mathspp.com) at EuroPython for \"A tour of the module `itertools`\". Talk: https://ep2026.europython.eu/PRGGNW", - "fosstodon": "Join Rodrigo Girão Serrão (@mathsppblog@fosstodon.org) at EuroPython for \"A tour of the module `itertools`\". talk: https://ep2026.europython.eu/PRGGNW" + "x": "Join Rodrigo Girão Serrão (@mathsppblog) at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "linkedin": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "bsky": "Join Rodrigo Girão Serrão (@mathspp.com) at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "fosstodon": "Join Rodrigo Girão Serrão (@mathsppblog@fosstodon.org) at EuroPython for \"A tour of the module `itertools`\" session: https://ep2026.europython.eu/PRGGNW", + "tiktok": "Join Rodrigo Girão Serrão at EuroPython for \"A tour of the module `itertools`\"." + } + }, + { + "type": "speaker", + "name": "Rodrigo Girão Serrão", + "image": "https://ep2026.europython.eu/media/speakers/social-rodrigo-girao-serrao-WYBHCE.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Rodrigo Girão Serrão — Cooking with asyncio: an introduction to asynchronous programming", + "handles": { + "x": "@mathsppblog", + "linkedin": "https://www.linkedin.com/in/rodrigo-girão-serrão", + "bsky": "@mathspp.com", + "fosstodon": "@mathsppblog@fosstodon.org" + }, + "channel": { + "instagram": "Join Rodrigo Girão Serrão at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\".", + "x": "Join Rodrigo Girão Serrão (@mathsppblog) at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "linkedin": "Join Rodrigo Girão Serrão at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "bsky": "Join Rodrigo Girão Serrão (@mathspp.com) at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "fosstodon": "Join Rodrigo Girão Serrão (@mathsppblog@fosstodon.org) at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\" tutorial: https://ep2026.europython.eu/WYBHCE", + "tiktok": "Join Rodrigo Girão Serrão at EuroPython for \"Cooking with asyncio: an introduction to asynchronous programming\"." } }, { @@ -2244,10 +2476,11 @@ "handles": {}, "channel": { "instagram": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\".", - "x": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\". Talk: https://ep2026.europython.eu/NELACW", - "linkedin": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\".", - "bsky": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\". Talk: https://ep2026.europython.eu/NELACW", - "fosstodon": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\". Talk: https://ep2026.europython.eu/NELACW" + "x": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "linkedin": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "bsky": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "fosstodon": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\" tutorial: https://ep2026.europython.eu/NELACW", + "tiktok": "Join Sangarshanan at EuroPython for \"Build a Synthesizer with Python\"." } }, { @@ -2262,10 +2495,11 @@ }, "channel": { "instagram": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\".", - "x": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\". Talk: https://ep2026.europython.eu/KFQN3X", - "linkedin": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\".", - "bsky": "Join Savannah Ostrowski (@savannah.dev) at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\". Talk: https://ep2026.europython.eu/KFQN3X", - "fosstodon": "Join Savannah Ostrowski (@savannah@fosstodon.org) at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\". talk: https://ep2026.europython.eu/KFQN3X" + "x": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "linkedin": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "bsky": "Join Savannah Ostrowski (@savannah.dev) at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "fosstodon": "Join Savannah Ostrowski (@savannah@fosstodon.org) at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\" talk: https://ep2026.europython.eu/KFQN3X", + "tiktok": "Join Savannah Ostrowski at EuroPython for \"The coolest feature in Python 3.14: sys.remote_exec()\"." } }, { @@ -2278,10 +2512,11 @@ }, "channel": { "instagram": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\".", - "x": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\". Talk: https://ep2026.europython.eu/TZHTEE", - "linkedin": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\".", - "bsky": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\". Talk: https://ep2026.europython.eu/TZHTEE", - "fosstodon": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\". Talk: https://ep2026.europython.eu/TZHTEE" + "x": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "linkedin": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "bsky": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "fosstodon": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\" talk: https://ep2026.europython.eu/TZHTEE", + "tiktok": "Join Sebastian Buczyński at EuroPython for \"Navigating waters of background jobs and queues in Python as of 2026\"." } }, { @@ -2294,10 +2529,11 @@ }, "channel": { "instagram": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\".", - "x": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\". Talk: https://ep2026.europython.eu/MJTZ7A", - "linkedin": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\".", - "bsky": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\". Talk: https://ep2026.europython.eu/MJTZ7A", - "fosstodon": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\". Talk: https://ep2026.europython.eu/MJTZ7A" + "x": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "linkedin": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "bsky": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "fosstodon": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\" talk: https://ep2026.europython.eu/MJTZ7A", + "tiktok": "Join Sebastian Burzyński at EuroPython for \"The hidden cost of vibe coding\"." } }, { @@ -2310,10 +2546,11 @@ }, "channel": { "instagram": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\".", - "x": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\". Talk: https://ep2026.europython.eu/E3GVVR", - "linkedin": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\".", - "bsky": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\". Talk: https://ep2026.europython.eu/E3GVVR", - "fosstodon": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\". Talk: https://ep2026.europython.eu/E3GVVR" + "x": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "linkedin": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "bsky": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "fosstodon": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\" session: https://ep2026.europython.eu/E3GVVR", + "tiktok": "Join Sergi Porta at EuroPython for \"Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python\"." } }, { @@ -2328,10 +2565,11 @@ }, "channel": { "instagram": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\".", - "x": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\". Talk: https://ep2026.europython.eu/9JALSN", - "linkedin": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\".", - "bsky": "Join Seth Michael Larson (@sethmlarson.dev) at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\". Talk: https://ep2026.europython.eu/9JALSN", - "fosstodon": "Join Seth Michael Larson (@sethmlarson@mastodon.social) at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\". talk: https://ep2026.europython.eu/9JALSN" + "x": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "linkedin": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "bsky": "Join Seth Michael Larson (@sethmlarson.dev) at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "fosstodon": "Join Seth Michael Larson (@sethmlarson@mastodon.social) at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\" talk: https://ep2026.europython.eu/9JALSN", + "tiktok": "Join Seth Michael Larson at EuroPython for \"Learning from the not-so-secret Python security \"cabal\"\"." } }, { @@ -2346,16 +2584,17 @@ }, "channel": { "instagram": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\".", - "x": "Join Stefanie Molin (@stefaniemolin) at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\". Talk: https://ep2026.europython.eu/3TZHB9", - "linkedin": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\".", - "bsky": "Join Stefanie Molin (@stefaniemolin.com) at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\". Talk: https://ep2026.europython.eu/3TZHB9", - "fosstodon": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\". Talk: https://ep2026.europython.eu/3TZHB9" + "x": "Join Stefanie Molin (@stefaniemolin) at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "linkedin": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "bsky": "Join Stefanie Molin (@stefaniemolin.com) at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "fosstodon": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\" tutorial: https://ep2026.europython.eu/3TZHB9", + "tiktok": "Join Stefanie Molin at EuroPython for \"Process, Analyze, and Transform Python Code with ASTs\"." } }, { "type": "speaker", "name": "Sviatoslav Sydorenko (Святослав Сидоренко)", - "image": "https://ep2026.europython.eu/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko.png", + "image": "https://ep2026.europython.eu/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-BX77EE.png", "alt_text": "Speaker announcement for EuroPython 2026 conference: Sviatoslav Sydorenko (Святослав Сидоренко) — reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate", "handles": { "x": "@webknjaz", @@ -2365,10 +2604,31 @@ }, "channel": { "instagram": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\".", - "x": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\". Talk: https://ep2026.europython.eu/BX77EE", - "linkedin": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\".", - "bsky": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz.me) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\". Talk: https://ep2026.europython.eu/BX77EE", - "fosstodon": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz@mastodon.social) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\". talk: https://ep2026.europython.eu/BX77EE" + "x": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "linkedin": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "bsky": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz.me) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "fosstodon": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz@mastodon.social) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\" session: https://ep2026.europython.eu/BX77EE", + "tiktok": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate\"." + } + }, + { + "type": "speaker", + "name": "Sviatoslav Sydorenko (Святослав Сидоренко)", + "image": "https://ep2026.europython.eu/media/speakers/social-sviatoslav-sydorenko-sviatoslav-sidorenko-ZHCNDY.png", + "alt_text": "Speaker announcement for EuroPython 2026 conference: Sviatoslav Sydorenko (Святослав Сидоренко) — Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide", + "handles": { + "x": "@webknjaz", + "linkedin": "https://www.linkedin.com/in/webknjaz", + "bsky": "@webknjaz.me", + "fosstodon": "@webknjaz@mastodon.social" + }, + "channel": { + "instagram": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\".", + "x": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "linkedin": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "bsky": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz.me) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "fosstodon": "Join Sviatoslav Sydorenko (Святослав Сидоренко) (@webknjaz@mastodon.social) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\" talk: https://ep2026.europython.eu/ZHCNDY", + "tiktok": "Join Sviatoslav Sydorenko (Святослав Сидоренко) at EuroPython for \"Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide\"." } }, { @@ -2383,10 +2643,11 @@ }, "channel": { "instagram": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\".", - "x": "Join Sylwia Budzynska (@blazingwindsec) at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\". Talk: https://ep2026.europython.eu/ZSRZPC", - "linkedin": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\".", - "bsky": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\". Talk: https://ep2026.europython.eu/ZSRZPC", - "fosstodon": "Join Sylwia Budzynska (@blazingwind@infosec.exchange) at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\". talk: https://ep2026.europython.eu/ZSRZPC" + "x": "Join Sylwia Budzynska (@blazingwindsec) at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "linkedin": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "bsky": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "fosstodon": "Join Sylwia Budzynska (@blazingwind@infosec.exchange) at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\" tutorial: https://ep2026.europython.eu/ZSRZPC", + "tiktok": "Join Sylwia Budzynska at EuroPython for \"Introduction to security research. Find a CVE with CodeQL.\"." } }, { @@ -2401,10 +2662,11 @@ }, "channel": { "instagram": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\".", - "x": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\". Talk: https://ep2026.europython.eu/Y8QAUA", - "linkedin": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\".", - "bsky": "Join Thomas Wouters (@yhg1s.bsky.social) at EuroPython for \"Free-threaded Python: past, present and future\". Talk: https://ep2026.europython.eu/Y8QAUA", - "fosstodon": "Join Thomas Wouters (@yhg1s@social.coop) at EuroPython for \"Free-threaded Python: past, present and future\". talk: https://ep2026.europython.eu/Y8QAUA" + "x": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "linkedin": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "bsky": "Join Thomas Wouters (@yhg1s.bsky.social) at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "fosstodon": "Join Thomas Wouters (@yhg1s@social.coop) at EuroPython for \"Free-threaded Python: past, present and future\" talk: https://ep2026.europython.eu/Y8QAUA", + "tiktok": "Join Thomas Wouters at EuroPython for \"Free-threaded Python: past, present and future\"." } }, { @@ -2415,10 +2677,11 @@ "handles": {}, "channel": { "instagram": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\".", - "x": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW", - "linkedin": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\".", - "bsky": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW", - "fosstodon": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\". Talk: https://ep2026.europython.eu/GEJAQW" + "x": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "linkedin": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "bsky": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "fosstodon": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\" talk: https://ep2026.europython.eu/GEJAQW", + "tiktok": "Join Tobias Wrigstad at EuroPython for \"Immutability: Fast and Safe sharing of Data across Subinterpreters\"." } }, { @@ -2429,10 +2692,11 @@ "handles": {}, "channel": { "instagram": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\".", - "x": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\". Talk: https://ep2026.europython.eu/B7CMBD", - "linkedin": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\".", - "bsky": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\". Talk: https://ep2026.europython.eu/B7CMBD", - "fosstodon": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\". Talk: https://ep2026.europython.eu/B7CMBD" + "x": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "linkedin": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "bsky": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "fosstodon": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\" talk: https://ep2026.europython.eu/B7CMBD", + "tiktok": "Join Tomas Roun at EuroPython for \"Become a Python Core Developer in 3 Easy Steps\"." } }, { @@ -2445,10 +2709,11 @@ }, "channel": { "instagram": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\".", - "x": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\". Talk: https://ep2026.europython.eu/VXDYGX", - "linkedin": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\".", - "bsky": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\". Talk: https://ep2026.europython.eu/VXDYGX", - "fosstodon": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\". Talk: https://ep2026.europython.eu/VXDYGX" + "x": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "linkedin": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "bsky": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "fosstodon": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\" talk: https://ep2026.europython.eu/VXDYGX", + "tiktok": "Join Vincenzo Ventriglia at EuroPython for \"When the Sun Breaks Your GPS: Building an Explainable Early Warning System\"." } }, { @@ -2461,10 +2726,11 @@ }, "channel": { "instagram": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\".", - "x": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\". Talk: https://ep2026.europython.eu/N39TFS", - "linkedin": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\".", - "bsky": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\". Talk: https://ep2026.europython.eu/N39TFS", - "fosstodon": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\". Talk: https://ep2026.europython.eu/N39TFS" + "x": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "linkedin": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "bsky": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "fosstodon": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\" tutorial: https://ep2026.europython.eu/N39TFS", + "tiktok": "Join Vinícius Gubiani Ferreira at EuroPython for \"Load testing 1-on-1: discovering the limits of your system\"." } }, { @@ -2478,10 +2744,11 @@ }, "channel": { "instagram": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\".", - "x": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\". Talk: https://ep2026.europython.eu/UY9UAG", - "linkedin": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\".", - "bsky": "Join Vlad-Stefan Harbuz (@vlad.website) at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\". Talk: https://ep2026.europython.eu/UY9UAG", - "fosstodon": "Join Vlad-Stefan Harbuz (@vlad@mastodon.vlad.website) at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\". talk: https://ep2026.europython.eu/UY9UAG" + "x": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "linkedin": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "bsky": "Join Vlad-Stefan Harbuz (@vlad.website) at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "fosstodon": "Join Vlad-Stefan Harbuz (@vlad@mastodon.vlad.website) at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\" talk: https://ep2026.europython.eu/UY9UAG", + "tiktok": "Join Vlad-Stefan Harbuz at EuroPython for \"Binary Dependencies: Identifying the Hidden Packages We All Depend On\"." } }, { @@ -2494,10 +2761,11 @@ }, "channel": { "instagram": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\".", - "x": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\". Talk: https://ep2026.europython.eu/9EFAJS", - "linkedin": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\".", - "bsky": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\". Talk: https://ep2026.europython.eu/9EFAJS", - "fosstodon": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\". Talk: https://ep2026.europython.eu/9EFAJS" + "x": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "linkedin": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "bsky": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "fosstodon": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\" talk: https://ep2026.europython.eu/9EFAJS", + "tiktok": "Join Vladimir Slavov at EuroPython for \"How to Talk With Your Legal Department About Open Source\"." } }, { @@ -2510,10 +2778,11 @@ }, "channel": { "instagram": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\".", - "x": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\". Talk: https://ep2026.europython.eu/3FDLUS", - "linkedin": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\".", - "bsky": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\". Talk: https://ep2026.europython.eu/3FDLUS", - "fosstodon": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\". Talk: https://ep2026.europython.eu/3FDLUS" + "x": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "linkedin": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "bsky": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "fosstodon": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\" tutorial: https://ep2026.europython.eu/3FDLUS", + "tiktok": "Join Vyron Vasileiadis at EuroPython for \"Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control\"." } }, { @@ -2528,10 +2797,11 @@ }, "channel": { "instagram": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\".", - "x": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\". Talk: https://ep2026.europython.eu/AGX8D9", - "linkedin": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\".", - "bsky": "Join Will Vincent (@wsvincent.bsky.social) at EuroPython for \"Deploying Python Web Apps in 2026\". Talk: https://ep2026.europython.eu/AGX8D9", - "fosstodon": "Join Will Vincent (@wsvincent@fosstodon.org) at EuroPython for \"Deploying Python Web Apps in 2026\". talk: https://ep2026.europython.eu/AGX8D9" + "x": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "linkedin": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "bsky": "Join Will Vincent (@wsvincent.bsky.social) at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "fosstodon": "Join Will Vincent (@wsvincent@fosstodon.org) at EuroPython for \"Deploying Python Web Apps in 2026\" talk: https://ep2026.europython.eu/AGX8D9", + "tiktok": "Join Will Vincent at EuroPython for \"Deploying Python Web Apps in 2026\"." } }, { @@ -2544,10 +2814,47 @@ }, "channel": { "instagram": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\".", - "x": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\". Talk: https://ep2026.europython.eu/BPJHWT", - "linkedin": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\".", - "bsky": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\". Talk: https://ep2026.europython.eu/BPJHWT", - "fosstodon": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\". Talk: https://ep2026.europython.eu/BPJHWT" + "x": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "linkedin": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "bsky": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "fosstodon": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\" talk: https://ep2026.europython.eu/BPJHWT", + "tiktok": "Join Wojtek Erbetowski at EuroPython for \"You Don't Need to Solve It: What Actually Gets You Hired in Tech\"." + } + }, + { + "type": "sponsor", + "name": "Modal", + "image": "https://ep2026.europython.eu/media/sponsors/social-modal.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: Modal", + "handles": { + "x": "@modal", + "linkedin": "https://www.linkedin.com/company/modal-labs", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome Modal as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @modal https://modal.com/", + "linkedin": "🚀✨ Big shoutout and heartfelt thanks to Modal for sponsoring EuroPython 2026! Your support is crucial in bringing the European Python 🐍 community closer together. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌https://www.linkedin.com/company/modal-labs https://modal.com/", + "bsky": "🎉✨ A big thank you to Modal for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://modal.com/", + "fosstodon": "🎉✨ A big thank you to Modal for joining us as a sponsor for EuroPython 2026! Your support is making a huge impact. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://modal.com/" + } + }, + { + "type": "sponsor", + "name": "OpenEDG | Python Institute", + "image": "https://ep2026.europython.eu/media/sponsors/social-openedg-python-institute.png", + "alt_text": "Sponsor announcement for EuroPython 2026 conference: OpenEDG | Python Institute", + "handles": { + "x": "@pythoninstitute", + "linkedin": "https://www.linkedin.com/company/pythoninstitute", + "bsky": "", + "fosstodon": "" + }, + "channel": { + "x": "🎉✨ We are pleased to welcome OpenEDG | Python Institute as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 @pythoninstitute https://pythoninstitute.org", + "linkedin": "🎉✨ We are pleased to welcome OpenEDG | Python Institute as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://www.linkedin.com/company/pythoninstitute https://pythoninstitute.org", + "bsky": "🎉✨ We are pleased to welcome OpenEDG | Python Institute as a sponsor for EuroPython 2026! Your support is making a huge difference. We are so grateful for your sponsorship and are thrilled to have you with us. 🙌 https://pythoninstitute.org", + "fosstodon": "🚀✨ A huge thank you to OpenEDG | Python Institute for sponsoring EuroPython 2026! Your support helps make this event extraordinary. 🙌 https://pythoninstitute.org" } } ] diff --git a/src/pages/media/speaker/[slug].astro b/src/pages/media/speaker/[slug].astro index 0cccf5073..ab31095f9 100644 --- a/src/pages/media/speaker/[slug].astro +++ b/src/pages/media/speaker/[slug].astro @@ -1,5 +1,5 @@ --- -import { getCollection} from "astro:content"; +import { getCollection, getEntries } from "astro:content"; import SocialMediaCard from "@components/SocialMediaCard.astro"; export async function getStaticPaths() { @@ -11,6 +11,7 @@ export async function getStaticPaths() { } const { entry } = Astro.props; +const allSessions = await getEntries(entry.data.submissions); --- @@ -25,10 +26,11 @@ const { entry } = Astro.props; { - entry && -
- + entry && allSessions.map((session) => + + ) } @@ -85,47 +87,52 @@ fitAllText(); window.addEventListener('resize', fitAllText); - diff --git a/src/pages/media/speakers.astro b/src/pages/media/speakers.astro index 980b60bcf..5f77dc6d9 100644 --- a/src/pages/media/speakers.astro +++ b/src/pages/media/speakers.astro @@ -1,5 +1,5 @@ --- -import { getCollection, type CollectionEntry } from "astro:content"; +import { getCollection, getEntries, type CollectionEntry } from "astro:content"; import SocialMediaCard from "@components/SocialMediaCard.astro"; @@ -19,13 +19,20 @@ type Speaker = CollectionEntry<"speakers">; { - speakers.map((entry: Speaker) => ( - - - - )) + await Promise.all(speakers.map(async (entry: Speaker) => { + const sessions = await getEntries(entry.data.submissions); + return sessions.map((session) => ( + + + + )); + })) }