diff --git a/content/events/2026-07-13-europython.md b/content/events/2026-07-13-europython.md index 49fbdb74..bf22f315 100644 --- a/content/events/2026-07-13-europython.md +++ b/content/events/2026-07-13-europython.md @@ -1,27 +1,40 @@ --- -title: EuroPython 2026 (placeholder) -date: '2026-07-13' +title: pyOpenSci's Leah Wasser Keynotes at EuroPython 2026 +date: '2026-07-15' excerpt: > - Placeholder for pyOpenSci at EuroPython 2026 in Kraków. Replace with keynote - and session details when the program is confirmed. -image: - src: images/headers/pyopensci-sustainability.png - alt: Decorative pyOpenSci header image + pyOpenSci's Leah Wasser Keynotes at EuroPython 2026 in Kraków — catch Leah Wasser's keynote on + building resilience when things feel hard. event: - start_date: '2026-07-13' - end_date: '2026-07-19' + start_date: '2026-07-15' + end_date: '2026-07-17' location: Kraków, Poland conference: EuroPython 2026 event_type: talk --- -## Details coming soon +EuroPython runs **13–19 July 2026** (tutorials 13–14, conference days 15–17, +sprint weekend 18–19). -EuroPython runs **13–19 July 2026** (tutorials 13–14, conference days -15–17, sprint weekend 18–19). This page is for pyOpenSci's conference -presence — keynote and other sessions during the week. + +## Keynote: How to Run 160 KM (100 Miles) — Building Resilience When Things Feel Hard + +pyOpenSci's Executive Director and Founder, Leah Wasser will give a keynote talk at EuroPython 2026 in Kraków, Poland on Thursday, July 16th at 16:40–17:25. Her talk is on building resilience when things feel hard. If you are going to be at EuroPython 2026, you won't want to miss it! + +* **When:** 16:40–17:25, Thursday 16 July 2026 +* **Room:** S1 + +[View in the schedule](https://ep2026.europython.eu/session/how-to-run-160-km-building-resilience-when-things-feel-hard) + +What does running 160km (100 miles) have to do with open source? Everything. +Both demand that you show up consistently, put in the work, and keep moving +forward — even when the path feels uncertain and people tell you it can't be +done. This talk draws on Leah's journey as an ultrarunner, a data-driven +ecologist in a field dominated by traditional fieldwork, and a founder of a +nonprofit that leverages community as both a support system and a powerful +force to tackle hard technical problems. You'll leave with a simple +framework for moving forward when the path is unclear, how to find signal +through noise, and why the people around you are your most powerful +resource. For the joint EuroPython + EuroSciPy development sprint on **18–19 July**, see the [EuroPython + EuroSciPy Development Sprint](/events/2026-07-18-europython-euroscipy-development-sprint/). - -Update front matter and body when our sessions are announced. diff --git a/content/events/2026-07-18-europython-euroscipy-development-sprint.md b/content/events/2026-07-18-europython-euroscipy-development-sprint.md index 3aeaa403..bfad9aa2 100644 --- a/content/events/2026-07-18-europython-euroscipy-development-sprint.md +++ b/content/events/2026-07-18-europython-euroscipy-development-sprint.md @@ -2,23 +2,33 @@ title: EuroPython + EuroSciPy Development Sprint date: '2026-07-18' excerpt: > - Join pyOpenSci contributors for a beginner-friendly development sprint at the - joint EuroPython and EuroSciPy sprint weekend in Kraków. -image: - src: images/events/sprint-scipy-2025.png - alt: pyOpenSci contributors collaborating at a conference sprint table + Join pyOpenSci contributors for a beginner-friendly development sprint + during the EuroPython + EuroSciPy sprint weekend in Kraków. event: start_date: '2026-07-18' end_date: '2026-07-19' location: Kraków, Poland - conference: EuroPython 2026 + EuroSciPy 2026 + conference: EuroPython 2026 event_type: sprint --- -## Details coming soon +## EuroPython + EuroSciPy Development Sprint -The joint EuroPython and EuroSciPy sprint weekend runs **18–19 July 2026** -in Kraków, Poland — the weekend after the main EuroPython conference days. +* **What:** Two-day collaborative development sprint +* **When:** Saturday–Sunday, 18–19 July 2026 +* **Where:** EuroPython sprint weekend, Kraków, Poland -Replace this content with sprint schedule, venue, and registration links when -they are published. +Join pyOpenSci contributors for a beginner-friendly sprint during the +EuroPython + EuroSciPy sprint weekend. Ways to get involved: + +* Contribute to translation efforts +* Help support and update pyOpenSci infrastructure +* Work through our lessons — find gaps and bugs + +For Leah Wasser's keynote and other pyOpenSci sessions during the conference +week, see [pyOpenSci at EuroPython 2026](/events/2026-07-13-europython/). + +
+ Three contributors collaborating around laptops at a pyOpenSci development sprint +
diff --git a/static/images/events/europython-sprint-2026.png b/static/images/events/europython-sprint-2026.png new file mode 100644 index 00000000..79b4f21b Binary files /dev/null and b/static/images/events/europython-sprint-2026.png differ diff --git a/themes/clean-hugo/assets/css/_blog.scss b/themes/clean-hugo/assets/css/_blog.scss index 4586a306..cc1b1d41 100644 --- a/themes/clean-hugo/assets/css/_blog.scss +++ b/themes/clean-hugo/assets/css/_blog.scss @@ -194,6 +194,17 @@ font-size: 0.75rem; opacity: 0.75; } + + &--solid { + > div:first-of-type { + background: linear-gradient( + to top, + rgba(0, 0, 0, 0.45), + rgba(0, 0, 0, 0.15), + transparent + ); + } + } } .blog-post__excerpt { diff --git a/themes/clean-hugo/assets/css/_content.scss b/themes/clean-hugo/assets/css/_content.scss index bd78d3aa..164cf0f6 100644 --- a/themes/clean-hugo/assets/css/_content.scss +++ b/themes/clean-hugo/assets/css/_content.scss @@ -188,6 +188,18 @@ max-width: 65ch; // Optimal reading width margin: 0 auto; // Center the constrained content + figure { + margin: 1.5rem 0 0; + + img { + display: block; + width: 100%; + max-width: 100%; + height: auto; + border-radius: $radius-md; + } + } + // Full-width shortcodes (defined above) // These will break out of the 65ch constraint when needed } diff --git a/themes/clean-hugo/assets/css/_events.scss b/themes/clean-hugo/assets/css/_events.scss index 6626feca..cbf38149 100644 --- a/themes/clean-hugo/assets/css/_events.scss +++ b/themes/clean-hugo/assets/css/_events.scss @@ -464,3 +464,88 @@ padding: 0.2rem 0.5rem; } } + +/* Upcoming events — event single pages */ +.event-upcoming { + margin-top: 3rem; + width: 100%; + + &__divider { + margin: 0 0 2rem; + border: 0; + border-top: 1px solid var(--color-gray-200); + } + + &__heading { + margin: 0 0 1.25rem; + font-family: $font-family-heading; + font-size: clamp(1.5rem, 3vw, 1.875rem); + font-weight: 700; + line-height: 1.2; + color: var(--color-brand-purple); + } +} + +.event-next { + display: block; + width: 100%; + margin-top: 0; + padding: 1.5rem 1.75rem; + border-radius: $radius-lg; + background-color: color-mix( + in srgb, + var(--color-admonition-success) 40%, + var(--color-white) + ); + box-shadow: 0 4px 12px -2px + color-mix(in srgb, var(--color-admonition-success) 25%, transparent); + + &__inner { + display: flex; + flex-direction: column; + gap: 1.25rem; + align-items: flex-start; + + @media (min-width: $breakpoint-md) { + flex-direction: row; + align-items: center; + justify-content: space-between; + gap: 1.75rem; + } + } + + &__body { + min-width: 0; + flex: 1 1 auto; + } + + &__label { + margin: 0 0 0.35rem; + font-size: 0.9375rem; + font-weight: 600; + line-height: 1.4; + color: var(--color-gray-700); + } + + &__title { + margin: 0 0 0.35rem; + font-family: $font-family-heading; + font-size: clamp(1.125rem, 2.5vw, 1.5rem); + font-weight: 700; + line-height: 1.25; + color: var(--color-gray-900); + } + + &__excerpt { + margin: 0; + font-size: 0.9375rem; + line-height: 1.5; + color: var(--color-gray-700); + } + + &__cta { + flex-shrink: 0; + border-radius: $radius-full; + white-space: nowrap; + } +} diff --git a/themes/clean-hugo/layouts/events/single.html b/themes/clean-hugo/layouts/events/single.html index 0518d258..b218c55a 100644 --- a/themes/clean-hugo/layouts/events/single.html +++ b/themes/clean-hugo/layouts/events/single.html @@ -8,18 +8,17 @@ {{ $dateLine = printf "%s · %s" $dateLine . }} {{ end }} {{ end }} -{{ $gradientFrom := "#71B3B5" }} -{{ $gradientTo := "#2E6060" }} +{{ $headerColor := "#33205C" }} {{ if and $e (not .Params.image) }} {{ $t := lower ($e.event_type | default "") }} - {{ if eq $t "workshop" }} - {{ $gradientFrom = "#71B3B5" }}{{ $gradientTo = "#2E6060" }} + {{ if or (eq $t "training") (eq $t "workshop") }} + {{ $headerColor = "#71B3B5" }} {{ else if eq $t "community" }} - {{ $gradientFrom = "#AC87A0" }}{{ $gradientTo = "#8B6A8F" }} + {{ $headerColor = "#AC87A0" }} {{ end }} {{ end }} -
{{ $img := partial "get-image.html" (dict "image" .Params.image "fallbackAlt" .Title "page" .) }} {{ if $img.exists }} @@ -35,15 +34,11 @@

{{ .Title }}

{{ end }}
- {{ with .Params.excerpt }} -
-

{{ . | markdownify }}

-
- {{ end }}
{{ .Content }} {{ partial "event-instructors.html" . }} {{ partial "learn-more.html" . }} + {{ partial "event-next.html" (dict "Page" .) }}