Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/speakers/douglas-ardila-garces.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/1.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/10.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/11.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/12.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/13.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/3.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/4.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/5.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/6.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/7.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/8.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/sponsors/interledger/9.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 26 additions & 18 deletions src/assets/data/schedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,7 @@ export const scheduleEvents: ScheduleEvent[] = [
date: "2026-07-25",
title: "Sponsor Space: EPAM",
displayTitle: "Sponsor Space: EPAM",
speaker: "EPAM",
speaker: "Carlos Alberto Riveros Varela",
label: "Sponsor Space",
},
{
Expand Down Expand Up @@ -873,21 +873,12 @@ export const scheduleEvents: ScheduleEvent[] = [
room: "Room 14 - Workshops",
hour: "8:00 - 10:00",
date: "2026-07-26",
title: "Workshop: FACTORED Sponsor",
displayTitle: "FACTORED Sponsor",
speaker: "Factored",
title: "Workshop: Construyendo Agentes de IA para jugar Catan",
displayTitle: "Construyendo Agentes de IA para jugar Catan",
speaker: "Sebastián Rodríguez Colina",
talkKey: "ai-agents-catan",
label: "FACTORED Sponsor",
},
{
id: "83",
type: "workshop",
room: "Room 15 - Workshops",
hour: "8:00 - 10:00",
date: "2026-07-26",
title: "Workshop: EPAM Sponsor",
displayTitle: "EPAM Sponsor",
speaker: "EPAM",
label: "EPAM Sponsor",
language: ["ES"],
},
{
id: "63",
Expand Down Expand Up @@ -1092,10 +1083,27 @@ export const scheduleEvents: ScheduleEvent[] = [
room: "Room 14 - Workshops",
hour: "10:30 - 12:30",
date: "2026-07-26",
title: "Workshop: FACTORED Sponsor",
displayTitle: "FACTORED Sponsor",
speaker: "Factored",
title:
"Workshop: Extracción de datos de PDFs a escala: cuándo confiar en un LLM",
displayTitle:
"Extracción de datos de PDFs a escala: cuándo confiar en un LLM",
speaker: "Douglas Ardila Garcés",
talkKey: "pdf-extraction-llm",
label: "FACTORED Sponsor",
language: ["ES"],
},
{
id: "83",
type: "workshop",
room: "Room 15 - Workshops",
hour: "10:30 - 12:30",
date: "2026-07-26",
title: "Workshop: Forjando Agentes en AWS: Hechizos con Strands, MCP y A2A",
displayTitle: "Forjando Agentes en AWS: Hechizos con Strands, MCP y A2A",
speaker: "David Stiven Jurado Chavarria",
talkKey: "forjando-agentes-aws",
label: "EPAM Sponsor",
language: ["ES"],
},
{
id: "72",
Expand Down
2 changes: 2 additions & 0 deletions src/assets/data/sponsor-gallery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { aimpointGalleryImages } from "@/assets/data/sponsor-gallery/aimpoint";
import { epamGalleryImages } from "@/assets/data/sponsor-gallery/epam";
import { factoredGalleryImages } from "@/assets/data/sponsor-gallery/factored";
import { genlogsGalleryImages } from "@/assets/data/sponsor-gallery/genlogs";
import { interledgerGalleryImages } from "@/assets/data/sponsor-gallery/interledger";
import { lokaGalleryImages } from "@/assets/data/sponsor-gallery/loka";
import { provectusGalleryImages } from "@/assets/data/sponsor-gallery/provectus";
import { slalomGalleryImages } from "@/assets/data/sponsor-gallery/slalom";
Expand All @@ -12,6 +13,7 @@ const sponsorGalleryBySlug: Partial<Record<string, GalleryImage[]>> = {
epam: epamGalleryImages,
factored: factoredGalleryImages,
genlogs: genlogsGalleryImages,
interledger: interledgerGalleryImages,
loka: lokaGalleryImages,
provectus: provectusGalleryImages,
slalom: slalomGalleryImages,
Expand Down
57 changes: 57 additions & 0 deletions src/assets/data/sponsor-gallery/interledger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import type { GalleryImage } from "@/assets/data/gallery";

/** Gallery images for Interledger — files in public/images/sponsors/interledger/ */
export const interledgerGalleryImages: GalleryImage[] = [
{
src: "/images/sponsors/interledger/1.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/2.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/3.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/4.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/5.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/6.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/7.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/8.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/9.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/10.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/11.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/12.webp",
alt: "Interledger at PyCon Colombia",
},
{
src: "/images/sponsors/interledger/13.webp",
alt: "Interledger at PyCon Colombia",
},
];
2 changes: 2 additions & 0 deletions src/assets/data/sponsor-videos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { epamVideos } from "@/assets/data/sponsor-videos/epam";
import { factoredVideos } from "@/assets/data/sponsor-videos/factored";
import { interledgerVideos } from "@/assets/data/sponsor-videos/interledger";
import { lokaVideos } from "@/assets/data/sponsor-videos/loka";
import { lovelyticsVideos } from "@/assets/data/sponsor-videos/lovelytics";
import { provectusVideos } from "@/assets/data/sponsor-videos/provectus";
import { slalomVideos } from "@/assets/data/sponsor-videos/slalom";

Expand All @@ -17,6 +18,7 @@ const sponsorVideosBySlug: Partial<Record<string, SponsorVideo[]>> = {
factored: factoredVideos,
interledger: interledgerVideos,
loka: lokaVideos,
lovelytics: lovelyticsVideos,
provectus: provectusVideos,
slalom: slalomVideos,
};
Expand Down
4 changes: 4 additions & 0 deletions src/assets/data/sponsor-videos/interledger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@ export const interledgerVideos: SponsorVideo[] = [
youtubeId: "1fTdtpLdDH0",
title: "What is Interledger",
},
{
youtubeId: "hMOHUODru_Y",
title: "What is Interledger? Spanish Subtitles",
},
];
8 changes: 8 additions & 0 deletions src/assets/data/sponsor-videos/lovelytics.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { SponsorVideo } from "@/assets/data/sponsor-videos";

export const lovelyticsVideos: SponsorVideo[] = [
{
youtubeId: "LAYzW73aN0I",
title: "Lovelytics at PyCon Colombia",
},
];
11 changes: 11 additions & 0 deletions src/assets/data/workshop-requirements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ A free or paid account for an AI assistant such as Cursor, GitHub Copilot, Claud
"You need a Sigma Public account; just create an account with your email: https://public.sigmacomputing.com/",
"elkin-javier-guerra-galeano":
"Python +3.10, Ollama installed, Docker installed.",
"sebastian-rodriguez-colina":
"uv (https://docs.astral.sh/uv/), Docker, and Git",
"douglas-ardila-garces":
"https://github.com/factoredai/factored-pycon-workshop-2026-data-engineering",
"david-stiven-jurado-chavarria":
"Only a laptop is required; AWS accounts will be provided for the workshop.",
};

export const workshopRequirementsEs: Record<string, string> = {
Expand Down Expand Up @@ -156,6 +162,11 @@ Una cuenta gratuita o versión paga de un asistente de inteligencia artificial c
"Se necesita una cuenta de Sigma Public, solo deben crear una cuenta con su correo: https://public.sigmacomputing.com/",
"elkin-javier-guerra-galeano":
"Python +3.10, Ollama instalado, Docker instalado.",
"sebastian-rodriguez-colina": "uv (https://docs.astral.sh/uv/), docker y git",
"douglas-ardila-garces":
"https://github.com/factoredai/factored-pycon-workshop-2026-data-engineering",
"david-stiven-jurado-chavarria":
"Solo laptop es requerida, cuentas de AWS serán proporcionadas para la ejecución del workshop",
};

export const workshopRequirementsByLocale: Record<
Expand Down
48 changes: 48 additions & 0 deletions src/assets/data/workshop-speakers-content.locale.ts
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,30 @@ const workshopContentEn: SpeakerContentBySlug = {
talkTitle: "",
talkDescription: "",
},
"sebastian-rodriguez-colina": {
title: "Staff Machine Learning Engineer @ Factored",
description:
"Machine Learning Engineer with 10+ years of experience building scalable solutions and delivering high business value through generative AI, computer vision, and MLOps techniques for AI startups, technology companies, and the manufacturing industry. Moreover, I have been a mentor and a teacher of AI related subjects at Universidad EAFIT and Universidad de Antioquia.",
talkTitle: "Building AI Agents to Play Catan",
talkDescription:
"Designing AI for environments with chance and imperfect information is a fascinating challenge. In this workshop, we will develop a Python agent capable of playing Settlers of Catan and compare different approaches live. Beyond the board, attendees will discover how the principles used here apply to any LLM-based agent system. You will learn to equip your agents with tools, connect services via MCP (Model Context Protocol), and structure robust architectures to optimize complex decision-making.",
},
"douglas-ardila-garces": {
title: "Engineering Manager & Data engineer @ Factored",
description:
"Engineering Manager & Data engineer with strong experience in architecting, developing, and maintaining highly reliable analytical data infrastructure and data pipelines that move data in and out to enable better decision-making and create business value primarily within the Fintech sector. Proficient in AWS, Google Cloud, Snowflake’s data ecosystem, Airflow, dbt, and other tools. Cares about other team members and is invested in empowering them to grow personally and professionally. Works cross-functionally with stakeholders (software engineers, data scientists, business analysts, etc), to ensure that the data infrastructure meets their evolving needs.\n\nCurrently, working as a Data Engineering Manager at Factored (one of the fastest-growing data science companies in the Americas, we build very high-caliber teams of rigorously vetted data scientists for top US companies).",
talkTitle: "PDF Data Extraction at Scale: When to Trust an LLM",
talkDescription:
'LLMs read chaotic documents like no one else, but when money or legal liability is on the line, the question is not "can it?" but "when should I trust it, and how do I catch it when it is wrong?". In this hands-on workshop we build, step by step, a real extraction pipeline for legal PDFs with variable formats, orchestrated with Airflow, using a hybrid extractor (deterministic + LLM) and deterministic guardrails in Python. You will leave with a framework for deciding which tool to use and a reliable pattern for production environments.',
},
"david-stiven-jurado-chavarria": {
title: "Lead Systems Engineer @ EPAM",
description:
"I am a DevOps/Cloud Engineer with more than 8 years of experience in Tech. I currently participate in AI projects where I have been able to go deeper into GenAI without limiting my scope only to infrastructure or DevOps. I have been a speaker at multiple events and I lead 2 communities: CloudCrafters and AI AWS UG Colombia.",
talkTitle: "Forging Agents on AWS: Spells with Strands, MCP, and A2A",
talkDescription:
"Artificial intelligence is no longer just a tool that developers use: it is a teammate they can build. In this workshop, you will discover how to forge autonomous AI agents on AWS using Strands, a framework that simplifies creating agents able to think and act on their own. We will explore how to connect these agents with external tools and services via MCP (Model Context Protocol), how to orchestrate communication among multiple agents with A2A (Agent-to-Agent), and how to design systems where several agents collaborate to solve complex problems in a coordinated way.",
},
};

const workshopContentEs: SpeakerContentBySlug = {
Expand Down Expand Up @@ -628,6 +652,30 @@ const workshopContentEs: SpeakerContentBySlug = {
talkTitle: "",
talkDescription: "",
},
"sebastian-rodriguez-colina": {
title: "Staff Machine Learning Engineer @ Factored",
description:
"Ingeniero de Machine Learning con más de 10 años de experiencia construyendo soluciones escalables y generando alto valor de negocio mediante técnicas de IA generativa, visión por computador y MLOps para startups de IA, empresas de tecnología y la industria manufacturera. Además, he sido mentor y docente de temas relacionados con IA en la Universidad EAFIT y la Universidad de Antioquia.",
talkTitle: "Construyendo Agentes de IA para jugar Catan",
talkDescription:
"Diseñar IA para entornos con azar e información imperfecta es un reto fascinante. En este taller, desarrollaremos un agente de Python capaz de jugar Settlers of Catan y enfrentaremos diferentes enfoques en vivo. Más allá del tablero, los asistentes descubrirán cómo los principios utilizados aquí se aplican a cualquier sistema de agentes basados en LLMs. Aprenderás a equipar a tus agentes con herramientas, conectar servicios mediante MCP (Model Context Protocol) y estructurar arquitecturas robustas para optimizar la toma de decisiones complejas.",
},
"douglas-ardila-garces": {
title: "Engineering Manager & Data engineer @ Factored",
description:
"Engineering Manager & Data engineer con sólida experiencia diseñando, desarrollando y manteniendo infraestructura analítica y pipelines de datos altamente confiables que mueven datos de un lado a otro para habilitar mejores decisiones y crear valor de negocio, principalmente en el sector Fintech. Dominio de AWS, Google Cloud, el ecosistema de datos de Snowflake, Airflow, dbt y otras herramientas. Se preocupa por las personas de su equipo y se invierte en empoderarlas para crecer personal y profesionalmente. Trabaja de forma transversal con stakeholders (ingenieros de software, científicos de datos, analistas de negocio, etc.) para asegurar que la infraestructura de datos responda a sus necesidades en evolución.\n\nActualmente trabaja como Data Engineering Manager en Factored (una de las empresas de ciencia de datos de más rápido crecimiento en las Américas; construimos equipos de alto calibre de científicos de datos rigurosamente evaluados para empresas top de EE. UU.).",
talkTitle: "Extracción de datos de PDFs a escala: cuándo confiar en un LLM",
talkDescription:
'Los LLMs leen documentos caóticos como nadie, pero cuando te juegas dinero o responsabilidad legal, la pregunta no es "¿puede?" sino "¿cuándo debo confiar y cómo lo atrapo cuando se equivoca?". En este taller práctico construimos, paso a paso, un pipeline real de extracción de datos de PDFs legales de formato variable orquestado con Airflow, con un extractor híbrido (determinista + LLM) y guardrails deterministas en Python. Saldrás con un framework para decidir qué herramienta usar y un patrón confiable para ambientes productivos.',
},
"david-stiven-jurado-chavarria": {
title: "Lead Systems Engineer @ EPAM",
description:
"Soy DevOps/Cloud Engineer con más de 8 años de experiencia en Tech. Actualmente me encuentro participando en proyectos de IA donde he podido tener la experiencia de adentrarme un poco más en el mundo del GenAI sin limitar mi alcance netamente a infraestructura o DevOps. He sido speaker en múltiples eventos y soy líder de 2 comunidades: CloudCrafters y AI AWS UG Colombia.",
talkTitle: "Forjando Agentes en AWS: Hechizos con Strands, MCP y A2A",
talkDescription:
"La inteligencia artificial ya no es solo una herramienta que los desarrolladores usan: es un compañero de equipo que pueden construir. En este workshop, descubrirás cómo forjar agentes de IA autónomos en AWS usando Strands, un framework que simplifica la creación de agentes capaces de pensar y actuar por sí mismos. Exploraremos cómo conectar estos agentes con herramientas y servicios externos mediante MCP (Model Context Protocol), cómo orquestar la comunicación entre múltiples agentes con A2A (Agent-to-Agent), y cómo diseñar sistemas donde varios agentes colaboran para resolver problemas complejos de forma coordinada.",
},
};
export const workshopSpeakerContentByLocale: Record<
SiteLocale,
Expand Down
53 changes: 53 additions & 0 deletions src/assets/data/workshop-speakers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ const workshopSpeakerImages: Record<string, string> = {
"https://drive.google.com/open?id=1_VnqQ_auY0NHtlSv5JluF3LBIfLnXzmc",
"elkin-javier-guerra-galeano":
"https://drive.google.com/open?id=1OflXShgH7ig1EDesVvdObqXc47GKGS9R",
"sebastian-rodriguez-colina":
"https://drive.google.com/open?id=1HDPMXTg3uGp28m4rsNK2lNjxlPOM31RH",
"douglas-ardila-garces":
"https://drive.google.com/open?id=1AdTgHque9-0dFaw-6RYpK2aXIe7YJiK9",
"david-stiven-jurado-chavarria":
"https://drive.google.com/open?id=1F7dgfO-ta8QPYpbyof2m6mlNLk-VYILH",
};

const workshopSpeakerListBase: SpeakerInput[] = [
Expand Down Expand Up @@ -549,6 +555,53 @@ const workshopSpeakerListBase: SpeakerInput[] = [
level: "Intermediate / Intermedio",
format: "workshop",
},
// 27. Building AI Agents to Play Catan (FACTORED Sponsor)
{
slug: "sebastian-rodriguez-colina",
talkKey: "ai-agents-catan",
name: "Sebastián Rodríguez Colina",
github: "https://github.com/srcolinas",
linkedin: "https://www.linkedin.com/in/srcolinas/",
tracks: [
"artificial-intelligence",
"data-science",
"machine-learning",
] as SpeakerTrack[],
country: "Colombia",
language: "Spanish / Español",
level: "Intermediate / Intermedio",
format: "workshop",
},
// 28. PDF Extraction at Scale (FACTORED Sponsor)
{
slug: "douglas-ardila-garces",
talkKey: "pdf-extraction-llm",
name: "Douglas Ardila Garcés",
github: "https://github.com/douglasag17",
linkedin: "https://www.linkedin.com/in/douglasag17",
tracks: [
"artificial-intelligence",
"core-python",
"machine-learning",
"data-science",
] as SpeakerTrack[],
country: "Colombia",
language: "Spanish / Español",
level: "All / Para todos los niveles",
format: "workshop",
},
// 29. Forjando Agentes en AWS (EPAM Sponsor)
{
slug: "david-stiven-jurado-chavarria",
talkKey: "forjando-agentes-aws",
name: "David Stiven Jurado Chavarria",
linkedin: "https://www.linkedin.com/in/d-jurado/",
tracks: ["artificial-intelligence"] as SpeakerTrack[],
country: "Colombia",
language: "Spanish / Español",
level: "Intermediate / Intermedio",
format: "workshop",
},
];

export const workshopSpeakerList: SpeakerInput[] = workshopSpeakerListBase.map(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,11 @@ function ScheduleEventCard({ event, t, locale }: ScheduleEventCardProps) {
const eventSpeakers = resolveSpeakersForScheduleEvent(event, locale);
const showSpeakers =
shouldShowScheduleSpeakers(event, eventSpeakers) &&
!(sponsor && isSponsorSpaceEvent(event));
!(
sponsor &&
isSponsorSpaceEvent(event) &&
!eventSpeakers.some((speaker) => speaker.slug)
);
const keynoteHref = keynote ? getKeynoteHref(keynote.slug) : undefined;
const talkHref = talk ? getTalkHref(talk.id) : undefined;
const sessionHref = keynoteHref ?? talkHref;
Expand Down
Loading