diff --git a/content/events/other_events/django_pyladies_2022.md b/content/events/other_events/django_pyladies_2022.md index f04af2a1..3aaa8f9a 100644 --- a/content/events/other_events/django_pyladies_2022.md +++ b/content/events/other_events/django_pyladies_2022.md @@ -87,9 +87,9 @@ people_sections: - people_per_line: 4 people: - elisabeth-ortega-carrasco - - lpmayos - - natalia - - nuria + - laura-perez-mayos + - natalia-padilla + - nuria-pujol-vilanova - title: Mentors, speakers & volunteers id: main_organizers levels: @@ -97,15 +97,15 @@ people_sections: people_per_line: 4 people: - carlton-gibson - - david + - david-arcos - elisabeth-ortega-carrasco - ferran-jovell - - israel-saeta + - israel-saeta-perez - johanna-sanchez - - natalia - - nuria + - natalia-padilla + - nuria-pujol-vilanova - selen-ozkan - - xavi + - xavi-francisco-gilabert - name: Speakers people_per_line: 4 people: @@ -114,11 +114,11 @@ people_sections: - johanna-sanchez - nakchidil-melisse-chaumont - roser-parellada - - sonia-estrade + - sonia-estrade-albiol - name: Volunteers people_per_line: 4 people: - - mireia + - mireia-alvarez-dominguez previous_editions: diff --git a/content/events/pydatabcn/pydatabcn_2023.md b/content/events/pydatabcn/pydatabcn_2023.md index db0d27d9..50b9e3d8 100644 --- a/content/events/pydatabcn/pydatabcn_2023.md +++ b/content/events/pydatabcn/pydatabcn_2023.md @@ -57,20 +57,20 @@ people_sections: - adrian-garcia-riber - albert-pujol-torras - alvaro-duran-barata - - amalia_vradi + - amalia-vradi - carmen-iniesta-lopez - daniel-sanchez-santolaya - diego-quintana - edgar-sarria-tenes - fiorella-piriz-sapio - juan-bernardo-lince - - juan-luis-cano + - juan-luis-cano-rodriguez - miquel-sarrias - monica-dominguez - nikita-polovinkin - oriol-abril-pla - rajdeep-pal - - ricardo-ander-egg + - ricardo-ander-egg-aguilar - ruben-afonso - sergi-baena-miret - thais-ruiz-de-alda @@ -79,14 +79,14 @@ people_sections: levels: - people_per_line: 4 people: - - lpmayos - - natalia + - laura-perez-mayos + - natalia-padilla - elisabeth-ortega-carrasco - - amalia_vradi - - ariadna_fernandez_estevez - - paula_szewach - - nuria - - mireia + - amalia-vradi + - ariadna-fernandez + - paula-szewach + - nuria-pujol-vilanova + - mireia-alvarez-dominguez spansDuration: 15 numTracks: 4 diff --git a/content/events/pyday_bcn/pyday_bcn_2018.md b/content/events/pyday_bcn/pyday_bcn_2018.md index 4c7da9b3..5da1b2aa 100644 --- a/content/events/pyday_bcn/pyday_bcn_2018.md +++ b/content/events/pyday_bcn/pyday_bcn_2018.md @@ -84,7 +84,7 @@ heroBackground: /images/photos/people-pyday-2016.jpg
- Speaker: Ignasi Fosch (@ifosch)
+ Speaker: Ignasi Fosch (@ignasi-fosch)
Language: English
Description: In this workshop, the attendees will participate in collaborative developing a small simple application using git and GitHub for the workflow. The goals of the exercise is to practice some simple concepts about contributing code.
Level: Beginner
@@ -112,7 +112,7 @@ heroBackground: /images/photos/people-pyday-2016.jpg
Speaker: Natàlia Padilla (@nataliasirera) and Laura Pérez (@lpmayos) (@PyLadiesBCN)
+
Speaker: Natàlia Padilla (@nataliasirera) and Laura Pérez (@laura-perez-mayos) (@PyLadiesBCN)
Language: English
Description: A hands-on session where you will learn how to analyze data with Jupyter Notebook, Pandas and Plotly. This will be a guided workshop, suitable for both experienced users and beginners with an interest in data analysis.
Level: Beginner
diff --git a/content/events/pyday_bcn/pyday_bcn_2020.md b/content/events/pyday_bcn/pyday_bcn_2020.md
index 589ef091..05046d82 100644
--- a/content/events/pyday_bcn/pyday_bcn_2020.md
+++ b/content/events/pyday_bcn/pyday_bcn_2020.md
@@ -31,37 +31,37 @@ people_sections:
levels:
- people_per_line: 4
people:
- - alberto
- - alvaro_duran
+ - alberto-camara
+ - alvaro-duran-barata
- ankit-mahato
- - carles_barrobes
+ - carles-barrobes
- christian-adell
- - daniel_mesejo
+ - daniel-mesejo-leon
- edgar-riba
- - eduard_cespedes
+ - eduard-cespedes-borras
- elisabeth-ortega-carrasco
- ferran-fabregas
- francesco-faraone
- gajendra-deshpande
- joan-fontanals-martinez
- - jose_haro
+ - jose-haro-peralta
- julio-martinez
- marc-pous
- maria-teresa-grifa
- - miroslav_sedivy
+ - miroslav-sedivy
- title: Organizers
id: organizers
levels:
- people_per_line: 4
people:
- - david
- - eloi
- - ifosch
- - lpmayos
- - mireia
- - natalia
- - nuria
- - rberenguel
+ - david-arcos
+ - eloi-puertas-prats
+ - ignasi-fosch
+ - laura-perez-mayos
+ - mireia-alvarez-dominguez
+ - natalia-padilla
+ - nuria-pujol-vilanova
+ - ruben-berenguel
previous_editions:
- name: PyDay BCN 2019
diff --git a/content/events/pyday_bcn/pyday_bcn_2021.md b/content/events/pyday_bcn/pyday_bcn_2021.md
index ac0af524..94a6901b 100644
--- a/content/events/pyday_bcn/pyday_bcn_2021.md
+++ b/content/events/pyday_bcn/pyday_bcn_2021.md
@@ -42,7 +42,7 @@ people_sections:
levels:
- people_per_line: 4
people:
- - albert-franzi
+ - albert-franzi-cros
- alejandro-nicolas
- alexandre-savio
- anton-caceres
@@ -66,14 +66,14 @@ people_sections:
levels:
- people_per_line: 4
people:
- - lpmayos
- - natalia
- - david
- - nuria
- - xavi
- - rberenguel
- - eloi
- - mireia
+ - laura-perez-mayos
+ - natalia-padilla
+ - david-arcos
+ - nuria-pujol-vilanova
+ - xavi-francisco-gilabert
+ - ruben-berenguel
+ - eloi-puertas-prats
+ - mireia-alvarez-dominguez
previous_editions:
- name: PyDay BCN 2020
diff --git a/content/events/pyday_bcn/pyday_bcn_2022.md b/content/events/pyday_bcn/pyday_bcn_2022.md
index a7d7bf07..60b6b7a2 100644
--- a/content/events/pyday_bcn/pyday_bcn_2022.md
+++ b/content/events/pyday_bcn/pyday_bcn_2022.md
@@ -57,7 +57,7 @@ people_sections:
- cheuk-ting-ho
- eva-martin-del-pico
- gema-parreno
- - jimena-escobar
+ - jimena-escobar-bermudez
- kemalcan-bora
- marc-pous
- pavel-lonkin
@@ -67,10 +67,10 @@ people_sections:
levels:
- people_per_line: 4
people:
- - natalia
- - lpmayos
- - xavi
- - mireia
+ - natalia-padilla
+ - laura-perez-mayos
+ - xavi-francisco-gilabert
+ - mireia-alvarez-dominguez
previous_editions:
- name: PyDay BCN 2021
diff --git a/content/events/pyday_bcn/pyday_bcn_2023.md b/content/events/pyday_bcn/pyday_bcn_2023.md
index 7d9a3259..6c47a9d2 100644
--- a/content/events/pyday_bcn/pyday_bcn_2023.md
+++ b/content/events/pyday_bcn/pyday_bcn_2023.md
@@ -50,7 +50,7 @@ people_sections:
- noe-casas
- vyron-vasileiadis
- adria-blanco
- - guille-abad
+ - guillermo-abad
- javier-sabariego
- christian-adell
- pavel-sulimov
@@ -59,8 +59,8 @@ people_sections:
- diego-giaquinta
- oriol-abril-pla
- gabriel-de-maeztu
- - camilo-chacon
- - israel-saeta
+ - camilo-chacon-sartori
+ - israel-saeta-perez
- emanuel-frazao
- title: Organizers
@@ -68,9 +68,9 @@ people_sections:
levels:
- people_per_line: 4
people:
- - natalia
- - alicia-morales
- - patricia-lamadrid
+ - natalia-padilla
+ - alicia-morales-carrasco
+ - patricia-lamadrid-robles
- elisabeth-ortega-carrasco
previous_editions:
diff --git a/content/events/pyday_bcn/pyday_bcn_2024.md b/content/events/pyday_bcn/pyday_bcn_2024.md
index 1f2441c5..f022c1db 100644
--- a/content/events/pyday_bcn/pyday_bcn_2024.md
+++ b/content/events/pyday_bcn/pyday_bcn_2024.md
@@ -43,14 +43,14 @@ people_sections:
levels:
- people_per_line: 4
people:
- - jimena-escobar
+ - jimena-escobar-bermudez
- kemalcan-bora
- xiang-xu
- dave-pitts
- - paula-bassaganas
+ - paula-bassaganas-odena
- raul-cumplido
- marc-ramirez
- - manuel-gijon
+ - manuel-gijon-agudo
- oriol-abril-pla
- alex-molas
- marina-palma
@@ -61,11 +61,11 @@ people_sections:
levels:
- people_per_line: 4
people:
- - alicia-morales
- - david
+ - alicia-morales-carrasco
+ - david-arcos
- ferran-jovell
- - lpmayos
- - jose-riera
+ - laura-perez-mayos
+ - jose-riera-sanchez
previous_editions:
diff --git a/content/events/pyday_bcn/pyday_bcn_2025.md b/content/events/pyday_bcn/pyday_bcn_2025.md
index 5f70a966..98cf6034 100644
--- a/content/events/pyday_bcn/pyday_bcn_2025.md
+++ b/content/events/pyday_bcn/pyday_bcn_2025.md
@@ -49,21 +49,21 @@ people_sections:
- enric-domingo
- ester-jara
- javier-ramos-panduro
- - natalia
+ - natalia-padilla
- amir-azam
- - david
+ - david-arcos
- javier-sabariego
- - ely-farres
+ - ely-farres-palomeras
- flavie-le-bars
- cristina-cosma
- - ricardo-ander-egg
- - alberto
+ - ricardo-ander-egg-aguilar
+ - alberto-camara
- jordi-bosch
- kemalcan-bora
- - kevin-sanchez
+ - kevin-sanchez-sancho
- oriol-abril-pla
- - camilo-chacon
- - victor-garcia
+ - camilo-chacon-sartori
+ - victor-garcia-dominguez
- eric-massip
- ubaldo-hervas
- kevin-albes
@@ -77,7 +77,7 @@ people_sections:
- sergi-ramirez
- toni-espadas
- jordi-bosch
- - daniel-mesejo
+ - daniel-mesejo-leon
# - title: Staff
# id: staff
@@ -87,8 +87,8 @@ people_sections:
# - sergi-ramirez
# - toni-espadas
# - jordi-bosch
-# - daniel-mesejo
-# - jose-riera
+# - daniel-mesejo-leon
+# - jose-riera-sanchez
# - mauricio
# - brian-power
# - eva-casas
diff --git a/content/people/albert-franzi.md b/content/people/albert-franzi-cros.md
similarity index 96%
rename from content/people/albert-franzi.md
rename to content/people/albert-franzi-cros.md
index 723a07d9..de9aea3c 100644
--- a/content/people/albert-franzi.md
+++ b/content/people/albert-franzi-cros.md
@@ -1,5 +1,5 @@
---
-id: albert-franzi
+id: albert-franzi-cros
name: Albert Franzi Cros
photo: albert-franzi-cros.jpg
photo_anchor: Left
diff --git a/content/people/alberto.md b/content/people/alberto-camara.md
similarity index 97%
rename from content/people/alberto.md
rename to content/people/alberto-camara.md
index 15b14a5e..8272251e 100644
--- a/content/people/alberto.md
+++ b/content/people/alberto-camara.md
@@ -1,5 +1,5 @@
---
-id: alberto
+id: alberto-camara
name: "Alberto Cámara"
github: https://github.com/ber2
photo: alberto-camara.jpg
diff --git a/content/people/alicia-morales.md b/content/people/alicia-morales-carrasco.md
similarity index 96%
rename from content/people/alicia-morales.md
rename to content/people/alicia-morales-carrasco.md
index 69bb6917..bb0ea675 100644
--- a/content/people/alicia-morales.md
+++ b/content/people/alicia-morales-carrasco.md
@@ -1,5 +1,5 @@
---
-id: alicia-morales
+id: alicia-morales-carrasco
name: Alicia Morales Carrasco
photo: alicia-morales-carrasco.jpg
# Smart cropped below the face on this portrait.
diff --git a/content/people/alvaro-duran-barata.md b/content/people/alvaro-duran-barata.md
index 14072e47..381eb603 100644
--- a/content/people/alvaro-duran-barata.md
+++ b/content/people/alvaro-duran-barata.md
@@ -1,6 +1,6 @@
---
id: alvaro-duran-barata
-name: Alvaro Duran Barata
+name: Álvaro Durán Barata
photo: alvaro-duran-barata.jpeg
photo_anchor: Top
@@ -9,4 +9,4 @@ github: https://github.com/ohduran
---
NLP/ML engineer
-Alvaro is a Python developer with a unique blend of expertise in finance, software engineering, and data. He brings curiosity, intensity and an analytical mind to the table. When not in front of the keyboard, Alvaro is likely to be found reading voraciously, near a pizza shop, or working out.
\ No newline at end of file
+Álvaro is a Python developer with a unique blend of expertise in finance, software engineering, and data. He brings curiosity, intensity and an analytical mind to the table. When not in front of the keyboard, Álvaro is likely to be found reading voraciously, near a pizza shop, or working out.
diff --git a/content/people/alvaro_duran.md b/content/people/alvaro_duran.md
deleted file mode 100644
index b95c4545..00000000
--- a/content/people/alvaro_duran.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-id: alvaro_duran
-name: Álvaro Durán Barata
-photo: alvaro_duran.jpg
-
-site: https://alvaroduran.com
----
-An experienced software engineer, Álvaro has worked in top tier global banks and small software vendors. Having majored in Physics, he brings curiosity, intensity and an analytical mind to the table.
diff --git a/content/people/amalia_vradi.md b/content/people/amalia-vradi.md
similarity index 87%
rename from content/people/amalia_vradi.md
rename to content/people/amalia-vradi.md
index a8748d80..e015a1ea 100644
--- a/content/people/amalia_vradi.md
+++ b/content/people/amalia-vradi.md
@@ -1,8 +1,8 @@
---
-id: amalia_vradi
+id: amalia-vradi
name: "Amalia Vradi"
photo: amalia-vradi.jpg
-pybcn_position: PyLadiesBCN Organizer
+pybcn_position: Organizer
linkedin: "https://www.linkedin.com/in/amaliavradi"
github: "https://github.com/amaliavr"
diff --git a/content/people/angel.md b/content/people/angel-fernandez-ibanez.md
similarity index 93%
rename from content/people/angel.md
rename to content/people/angel-fernandez-ibanez.md
index 7039edbc..e47ca881 100644
--- a/content/people/angel.md
+++ b/content/people/angel-fernandez-ibanez.md
@@ -1,5 +1,5 @@
---
-id: angel
+id: angel-fernandez-ibanez
name: Àngel Fernández Ibáñez
twitter: "https://x.com/anxodio"
linkedin: "https://www.linkedin.com/in/anxodio"
diff --git a/content/people/ariadna_fernandez_estevez.md b/content/people/ariadna-fernandez.md
similarity index 80%
rename from content/people/ariadna_fernandez_estevez.md
rename to content/people/ariadna-fernandez.md
index e49559bb..0ce476e3 100644
--- a/content/people/ariadna_fernandez_estevez.md
+++ b/content/people/ariadna-fernandez.md
@@ -1,8 +1,8 @@
---
-id: ariadna_fernandez_estevez
+id: ariadna-fernandez
name: Ariadna Fernández
photo: ariadna-fernandez.jpg
-pybcn_position: PyLadiesBCN Organizer
+pybcn_position: Organizer
linkedin: "https://www.linkedin.com/in/ariadna-fernandez-estevez"
github: "https://github.com/afernaes"
---
diff --git a/content/people/camilo-chacon.md b/content/people/camilo-chacon-sartori.md
similarity index 96%
rename from content/people/camilo-chacon.md
rename to content/people/camilo-chacon-sartori.md
index 416862b1..aabb0d1a 100644
--- a/content/people/camilo-chacon.md
+++ b/content/people/camilo-chacon-sartori.md
@@ -1,5 +1,5 @@
---
-id: camilo-chacon
+id: camilo-chacon-sartori
name: Camilo Chacón Sartori
photo: camilo-chacon-sartori.jpg
twitter: https://x.com/camilo_chacon_s
diff --git a/content/people/carles_barrobes.md b/content/people/carles-barrobes.md
similarity index 96%
rename from content/people/carles_barrobes.md
rename to content/people/carles-barrobes.md
index 6969b8bc..c8e3fc30 100644
--- a/content/people/carles_barrobes.md
+++ b/content/people/carles-barrobes.md
@@ -1,5 +1,5 @@
---
-id: carles_barrobes
+id: carles-barrobes
name: Carles Barrobés
photo: carles-barrobes.jpg
linkedin: https://www.linkedin.com/in/carlesbarrobes
diff --git a/content/people/daniel-mesejo.md b/content/people/daniel-mesejo-leon.md
similarity index 97%
rename from content/people/daniel-mesejo.md
rename to content/people/daniel-mesejo-leon.md
index b61b39b8..341e94c5 100644
--- a/content/people/daniel-mesejo.md
+++ b/content/people/daniel-mesejo-leon.md
@@ -1,5 +1,5 @@
---
-id: daniel-mesejo
+id: daniel-mesejo-leon
name: "Daniel Mesejo Leon"
linkedin: https://www.linkedin.com/in/daniel-alejandro-mesejo-leon
github: https://github.com/mesejo
diff --git a/content/people/daniel_mesejo.md b/content/people/daniel_mesejo.md
deleted file mode 100644
index 36adb131..00000000
--- a/content/people/daniel_mesejo.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-id: daniel_mesejo
-name: Daniel Mesejo
-photo: daniel-mesejo.jpg
-github: https://github.com/mesejo
-site: https://stackoverflow.com/users/story/4001592
----
-Has worked as research engineer, data scientist and backend engineer. When he is not working you can find him at StackOverflow. Has minor contributions to open source projects like eland, scikit-image, cvxpy. I As an interesting fact, he has Erdos 3 number.
diff --git a/content/people/david.md b/content/people/david-arcos.md
similarity index 94%
rename from content/people/david.md
rename to content/people/david-arcos.md
index a091efad..730906ab 100644
--- a/content/people/david.md
+++ b/content/people/david-arcos.md
@@ -1,5 +1,5 @@
---
-id: david
+id: david-arcos
name: David Arcos
photo: david-arcos.jpg
pybcn_position: Organizer
diff --git a/content/people/david-blazquez.md b/content/people/david-blazquez-garcia.md
similarity index 82%
rename from content/people/david-blazquez.md
rename to content/people/david-blazquez-garcia.md
index e9174103..af2fcf68 100644
--- a/content/people/david-blazquez.md
+++ b/content/people/david-blazquez-garcia.md
@@ -1,5 +1,5 @@
---
-id: david-blazquez
+id: david-blazquez-garcia
name: "David Blázquez García"
photo: david-blazquez-garcia.jpg
linkedin: "https://www.linkedin.com/in/dblazquezg"
diff --git a/content/people/dimitri.md b/content/people/dimitri-herrero.md
similarity index 74%
rename from content/people/dimitri.md
rename to content/people/dimitri-herrero.md
index 77c5ba02..7123047e 100644
--- a/content/people/dimitri.md
+++ b/content/people/dimitri-herrero.md
@@ -1,5 +1,5 @@
---
-id: dimitri
+id: dimitri-herrero
name: Dimitri Herrero
pybcn_position: Organizer
diff --git a/content/people/eduard_cespedes.md b/content/people/eduard-cespedes-borras.md
similarity index 96%
rename from content/people/eduard_cespedes.md
rename to content/people/eduard-cespedes-borras.md
index e3c4c820..690e2aff 100644
--- a/content/people/eduard_cespedes.md
+++ b/content/people/eduard-cespedes-borras.md
@@ -1,5 +1,5 @@
---
-id: eduard_cespedes
+id: eduard-cespedes-borras
name: Eduard Céspedes Borràs
photo: eduard-cespedes-borras.jpg
twitter: https://x.com/haduart
diff --git a/content/people/elisabeth-ortega-carrasco.md b/content/people/elisabeth-ortega-carrasco.md
index 13af0796..85ed965d 100644
--- a/content/people/elisabeth-ortega-carrasco.md
+++ b/content/people/elisabeth-ortega-carrasco.md
@@ -4,7 +4,7 @@ name: Elisabeth Ortega Carrasco
photo: elisabeth-ortega-carrasco.jpg
-pybcn_position: PyLadiesBCN Organizer
+pybcn_position: Organizer
twitter: https://x.com/draentropia
github: https://github.com/draentropia
diff --git a/content/people/eloi.md b/content/people/eloi-puertas-prats.md
similarity index 94%
rename from content/people/eloi.md
rename to content/people/eloi-puertas-prats.md
index a1f1ef7d..645640aa 100644
--- a/content/people/eloi.md
+++ b/content/people/eloi-puertas-prats.md
@@ -1,5 +1,5 @@
---
-id: eloi
+id: eloi-puertas-prats
name: Eloi Puertas Prats
pybcn_position: "Organizer"
photo: eloi-puertas-prats.jpg
diff --git a/content/people/ely-farres.md b/content/people/ely-farres-palomeras.md
similarity index 88%
rename from content/people/ely-farres.md
rename to content/people/ely-farres-palomeras.md
index e762edbe..60483ce6 100644
--- a/content/people/ely-farres.md
+++ b/content/people/ely-farres-palomeras.md
@@ -1,5 +1,5 @@
---
-id: ely-farres
+id: ely-farres-palomeras
name: "Ely Farrés Palomeras"
photo: ely-farres-palomeras.jpg
linkedin: "https://www.linkedin.com/in/ely-farr%C3%A9s-palomeras-4459882b7"
diff --git a/content/people/esteve.md b/content/people/esteve-fernandez.md
similarity index 93%
rename from content/people/esteve.md
rename to content/people/esteve-fernandez.md
index 74a59eab..17c14608 100644
--- a/content/people/esteve.md
+++ b/content/people/esteve-fernandez.md
@@ -1,5 +1,5 @@
---
-id: esteve
+id: esteve-fernandez
name: "Esteve Fernàndez"
photo: esteve-fernandez.jpg
pybcn_position: "Collaborator"
diff --git a/content/people/guille-abad.md b/content/people/guillermo-abad.md
similarity index 97%
rename from content/people/guille-abad.md
rename to content/people/guillermo-abad.md
index cc232790..8f71a9cc 100644
--- a/content/people/guille-abad.md
+++ b/content/people/guillermo-abad.md
@@ -1,5 +1,5 @@
---
-id: guille-abad
+id: guillermo-abad
name: "Guillermo Abad"
photo: guillermo-abad.jpg
linkedin: "https://www.linkedin.com/in/guillermo-abad-l%C3%B3pez"
diff --git a/content/people/ifosch.md b/content/people/ignasi-fosch.md
similarity index 95%
rename from content/people/ifosch.md
rename to content/people/ignasi-fosch.md
index a8fbda39..9cd2b0b9 100644
--- a/content/people/ifosch.md
+++ b/content/people/ignasi-fosch.md
@@ -1,5 +1,5 @@
---
-id: ifosch
+id: ignasi-fosch
name: Ignasi Fosch
photo: ignasi-fosch.jpg
pybcn_position: Organizer
diff --git a/content/people/israel-saeta.md b/content/people/israel-saeta-perez.md
similarity index 90%
rename from content/people/israel-saeta.md
rename to content/people/israel-saeta-perez.md
index 970e3076..e8d67ac2 100644
--- a/content/people/israel-saeta.md
+++ b/content/people/israel-saeta-perez.md
@@ -1,5 +1,5 @@
---
-id: israel-saeta
+id: israel-saeta-perez
name: "Israel Saeta Pérez"
photo: israel-saeta-perez.jpg
twitter: "https://x.com/dukebody"
diff --git a/content/people/jimena-escobar.md b/content/people/jimena-escobar-bermudez.md
similarity index 94%
rename from content/people/jimena-escobar.md
rename to content/people/jimena-escobar-bermudez.md
index 0bd6e381..ab302a39 100644
--- a/content/people/jimena-escobar.md
+++ b/content/people/jimena-escobar-bermudez.md
@@ -1,5 +1,5 @@
---
-id: jimena-escobar
+id: jimena-escobar-bermudez
name: "Jimena Escobar Bermúdez"
photo: jimena-escobar-bermudez.jpg
linkedin: "https://www.linkedin.com/in/jimena-eb"
diff --git a/content/people/jordi.md b/content/people/jordi-soucheiron.md
similarity index 93%
rename from content/people/jordi.md
rename to content/people/jordi-soucheiron.md
index c8f32781..cf7b1b5b 100644
--- a/content/people/jordi.md
+++ b/content/people/jordi-soucheiron.md
@@ -1,5 +1,5 @@
---
-id: jordi
+id: jordi-soucheiron
name: Jordi Soucheiron
photo: jordi-soucheiron.jpg
photo_anchor: Top
diff --git a/content/people/jose_haro.md b/content/people/jose-haro-peralta.md
similarity index 94%
rename from content/people/jose_haro.md
rename to content/people/jose-haro-peralta.md
index db2c8c32..0218cb31 100644
--- a/content/people/jose_haro.md
+++ b/content/people/jose-haro-peralta.md
@@ -1,5 +1,5 @@
---
-id: jose_haro
+id: jose-haro-peralta
name: Jose Haro Peralta
photo: jose-haro-peralta.png
photo_anchor: Top
diff --git a/content/people/jose-riera.md b/content/people/jose-riera-sanchez.md
similarity index 92%
rename from content/people/jose-riera.md
rename to content/people/jose-riera-sanchez.md
index f2da07af..86ba8d2b 100644
--- a/content/people/jose-riera.md
+++ b/content/people/jose-riera-sanchez.md
@@ -1,5 +1,5 @@
---
-id: jose-riera
+id: jose-riera-sanchez
name: "José Riera Sánchez"
photo: jose-riera-sanchez.jpg
diff --git a/content/people/josep.md b/content/people/josep-martinez-vila.md
similarity index 91%
rename from content/people/josep.md
rename to content/people/josep-martinez-vila.md
index d9304ce1..c0b8fc89 100644
--- a/content/people/josep.md
+++ b/content/people/josep-martinez-vila.md
@@ -1,5 +1,5 @@
---
-id: josep
+id: josep-martinez-vila
name: "Josep Martínez Vilà"
pybcn_position: "Organizer"
twitter: "https://x.com/jmartinezvila"
diff --git a/content/people/juan-luis-cano.md b/content/people/juan-luis-cano-rodriguez.md
similarity index 97%
rename from content/people/juan-luis-cano.md
rename to content/people/juan-luis-cano-rodriguez.md
index 201cdcf5..2d92bef4 100644
--- a/content/people/juan-luis-cano.md
+++ b/content/people/juan-luis-cano-rodriguez.md
@@ -1,5 +1,5 @@
---
-id: juan-luis-cano
+id: juan-luis-cano-rodriguez
name: Juan Luis Cano Rodríguez
photo: juan-luis-cano-rodriguez.jpg
linkedin: https://www.linkedin.com/in/juanluiscanor
diff --git a/content/people/kevin-sanchez.md b/content/people/kevin-sanchez-sancho.md
similarity index 84%
rename from content/people/kevin-sanchez.md
rename to content/people/kevin-sanchez-sancho.md
index 0147d45b..57eded5c 100644
--- a/content/people/kevin-sanchez.md
+++ b/content/people/kevin-sanchez-sancho.md
@@ -1,5 +1,5 @@
---
-id: kevin-sanchez
+id: kevin-sanchez-sancho
name: "Kevin Sanchez Sancho"
photo: kevin-sanchez-sancho.jpg
linkedin: "https://www.linkedin.com/in/kevin-sanchez-sancho-807b7268"
diff --git a/content/people/lpmayos.md b/content/people/laura-perez-mayos.md
similarity index 85%
rename from content/people/lpmayos.md
rename to content/people/laura-perez-mayos.md
index d056a2c9..aaaf4276 100644
--- a/content/people/lpmayos.md
+++ b/content/people/laura-perez-mayos.md
@@ -1,10 +1,10 @@
---
-id: lpmayos
+id: laura-perez-mayos
name: "Laura Pérez Mayos"
photo: laura-perez-mayos.jpg
site: https://lpmayos.github.io
-pybcn_position: "PyLadiesBCN Organizer"
+pybcn_position: "Organizer"
linkedin: "https://www.linkedin.com/in/lpmayos"
github: "https://github.com/lpmayos"
diff --git a/content/people/loris.md b/content/people/loris-mularoni.md
similarity index 92%
rename from content/people/loris.md
rename to content/people/loris-mularoni.md
index fabf8558..c56dab9e 100644
--- a/content/people/loris.md
+++ b/content/people/loris-mularoni.md
@@ -1,5 +1,5 @@
---
-id: loris
+id: loris-mularoni
name: Loris Mularoni
photo: loris-mularoni.jpg
diff --git a/content/people/manuel-gijon.md b/content/people/manuel-gijon-agudo.md
similarity index 91%
rename from content/people/manuel-gijon.md
rename to content/people/manuel-gijon-agudo.md
index dfe52020..f692e419 100644
--- a/content/people/manuel-gijon.md
+++ b/content/people/manuel-gijon-agudo.md
@@ -1,5 +1,5 @@
---
-id: manuel-gijon
+id: manuel-gijon-agudo
name: Manuel Gijón Agudo
photo: manuel-gijon-agudo.jpg
linkedin: https://www.linkedin.com/in/manuel-gij%C3%B3n-agudo
diff --git a/content/people/mireia.md b/content/people/mireia-alvarez-dominguez.md
similarity index 85%
rename from content/people/mireia.md
rename to content/people/mireia-alvarez-dominguez.md
index 84e0c543..adb4cf54 100644
--- a/content/people/mireia.md
+++ b/content/people/mireia-alvarez-dominguez.md
@@ -1,5 +1,5 @@
---
-id: mireia
+id: mireia-alvarez-dominguez
name: Mireia Álvarez Domínguez
photo: mireia-alvarez-dominguez.jpg
pybcn_position: "Former Treasurer"
diff --git a/content/people/miroslav_sedivy.md b/content/people/miroslav-sedivy.md
similarity index 94%
rename from content/people/miroslav_sedivy.md
rename to content/people/miroslav-sedivy.md
index cf967311..3295aeda 100644
--- a/content/people/miroslav_sedivy.md
+++ b/content/people/miroslav-sedivy.md
@@ -1,5 +1,5 @@
---
-id: miroslav_sedivy
+id: miroslav-sedivy
name: "Miroslav Šedivý"
photo: miroslav-sedivy.jpg
twitter: "https://x.com/eumiro"
diff --git a/content/people/natalia.md b/content/people/natalia-padilla.md
similarity index 82%
rename from content/people/natalia.md
rename to content/people/natalia-padilla.md
index eca41bcc..dd5bbec3 100644
--- a/content/people/natalia.md
+++ b/content/people/natalia-padilla.md
@@ -1,8 +1,8 @@
---
-id: natalia
+id: natalia-padilla
name: "Natàlia Padilla"
photo: natalia-padilla.jpg
-pybcn_position: "PyLadiesBCN Organizer"
+pybcn_position: "Organizer"
twitter: "https://x.com/nataliasirera"
linkedin: "https://www.linkedin.com/in/natàlia-padilla-sirera-8112305a"
diff --git a/content/people/nuria.md b/content/people/nuria-pujol-vilanova.md
similarity index 79%
rename from content/people/nuria.md
rename to content/people/nuria-pujol-vilanova.md
index 28025277..0e2fecc5 100644
--- a/content/people/nuria.md
+++ b/content/people/nuria-pujol-vilanova.md
@@ -1,9 +1,9 @@
---
-id: nuria
+id: nuria-pujol-vilanova
name: "Núria Pujol Vilanova"
github: https://github.com/llevaNEUS
photo: nuria-pujol-vilanova.jpg
-pybcn_position: "PyLadiesBCN Organizer"
+pybcn_position: "Organizer"
twitter: "https://x.com/llevaneus"
linkedin: "https://www.linkedin.com/in/n%C3%BAria-pujol-780a145"
diff --git a/content/people/patricia-lamadrid.md b/content/people/patricia-lamadrid-robles.md
similarity index 92%
rename from content/people/patricia-lamadrid.md
rename to content/people/patricia-lamadrid-robles.md
index fdfdd37e..822bac45 100644
--- a/content/people/patricia-lamadrid.md
+++ b/content/people/patricia-lamadrid-robles.md
@@ -1,5 +1,5 @@
---
-id: patricia-lamadrid
+id: patricia-lamadrid-robles
name: Patricia Lamadrid Robles
photo: patricia-lamadrid-robles.jpg
diff --git a/content/people/patricio-reyes.md b/content/people/patricio-reyes-valenzuela.md
similarity index 91%
rename from content/people/patricio-reyes.md
rename to content/people/patricio-reyes-valenzuela.md
index ababed58..1e445670 100644
--- a/content/people/patricio-reyes.md
+++ b/content/people/patricio-reyes-valenzuela.md
@@ -1,5 +1,5 @@
---
-id: patricio-reyes
+id: patricio-reyes-valenzuela
name: "Patricio Reyes Valenzuela"
photo: patricio-reyes-valenzuela.jpg
twitter: "https://x.com/pareyesv"
diff --git a/content/people/paula-bassaganas.md b/content/people/paula-bassaganas-odena.md
similarity index 97%
rename from content/people/paula-bassaganas.md
rename to content/people/paula-bassaganas-odena.md
index edaa856b..e4f6b55d 100644
--- a/content/people/paula-bassaganas.md
+++ b/content/people/paula-bassaganas-odena.md
@@ -1,5 +1,5 @@
---
-id: paula-bassaganas
+id: paula-bassaganas-odena
name: Paula Bassagañas Òdena
photo: paula-bassaganas-odena.jpg
diff --git a/content/people/paula_szewach.md b/content/people/paula-szewach.md
similarity index 86%
rename from content/people/paula_szewach.md
rename to content/people/paula-szewach.md
index 37fbe70d..b7ab2163 100644
--- a/content/people/paula_szewach.md
+++ b/content/people/paula-szewach.md
@@ -1,7 +1,7 @@
---
-id: paula_szewach
+id: paula-szewach
name: "Paula Szewach"
-pybcn_position: PyLadiesBCN Organizer
+pybcn_position: Organizer
site: "https://www.paulaszewach.com"
linkedin: "https://www.linkedin.com/in/paulaszewach"
github: "https://github.com/pszewach"
diff --git a/content/people/peter-krupa.md b/content/people/peter-krupa.md
index 52acae74..87bd26f9 100644
--- a/content/people/peter-krupa.md
+++ b/content/people/peter-krupa.md
@@ -5,8 +5,6 @@ name: "Peter Krupa"
photo: peter-krupa.jpg
photo_anchor: Bottom
-pybcn_position: "Board member of Communications"
-
---
Originari dels Estats Units, tinc dues dècades d'experiència com a periodista i traductor, i em sento molt còmode escrivint per a les xarxes socials i gestionant campanyes per augmentar la visibilitat i fomentar la participació. Actualment estic cursant un Bachelor of Science amb especialització en Data Analytics a la Western Governors University, i fa dos anys que treballo amb Python i assisteixo a les trobades de PyBCN. M'encantaria tenir l'oportunitat d'ajudar aquesta organització a créixer augmentant-ne el perfil a les xarxes socials, actualitzant els materials de difusió i col·laborant en tot allò que calgui.
\ No newline at end of file
diff --git a/content/people/ricardo-ander-egg.md b/content/people/ricardo-ander-egg-aguilar.md
similarity index 90%
rename from content/people/ricardo-ander-egg.md
rename to content/people/ricardo-ander-egg-aguilar.md
index a3a30c39..78f9cfb0 100644
--- a/content/people/ricardo-ander-egg.md
+++ b/content/people/ricardo-ander-egg-aguilar.md
@@ -1,5 +1,5 @@
---
-id: ricardo-ander-egg
+id: ricardo-ander-egg-aguilar
name: Ricardo Ander-Egg Aguilar
photo: ricardo-ander-egg-aguilar.jpg
photo_anchor: Top
diff --git a/content/people/ricardo.md b/content/people/ricardo-martinez.md
similarity index 74%
rename from content/people/ricardo.md
rename to content/people/ricardo-martinez.md
index 16eb55ae..139d2d51 100644
--- a/content/people/ricardo.md
+++ b/content/people/ricardo-martinez.md
@@ -1,5 +1,5 @@
---
-id: ricardo
+id: ricardo-martinez
name: Ricardo Martínez
pybcn_position: Collaborator
diff --git a/content/people/rberenguel.md b/content/people/ruben-berenguel.md
similarity index 97%
rename from content/people/rberenguel.md
rename to content/people/ruben-berenguel.md
index 29cd50a1..56bc52df 100644
--- a/content/people/rberenguel.md
+++ b/content/people/ruben-berenguel.md
@@ -1,5 +1,5 @@
---
-id: rberenguel
+id: ruben-berenguel
name: "Ruben Berenguel"
photo: ruben-berenguel.png
pybcn_position: Organizer
diff --git a/content/people/sonia-estrade.md b/content/people/sonia-estrade-albiol.md
similarity index 92%
rename from content/people/sonia-estrade.md
rename to content/people/sonia-estrade-albiol.md
index 5c360a2b..5c322807 100644
--- a/content/people/sonia-estrade.md
+++ b/content/people/sonia-estrade-albiol.md
@@ -1,5 +1,5 @@
---
-id: sonia-estrade
+id: sonia-estrade-albiol
name: "Sònia Estradé Albiol"
photo: sonia-estrade-albiol.jpg
twitter: "https://x.com/estrade_sonia"
diff --git a/content/people/toni-espadas.md b/content/people/toni-espadas.md
index 4b800668..64b3d628 100644
--- a/content/people/toni-espadas.md
+++ b/content/people/toni-espadas.md
@@ -5,8 +5,6 @@ name: "Toni Espadas"
photo: toni-espadas.jpg
photo_anchor: Bottom
-pybcn_position: "Treasurer"
-
linkedin: "https://www.linkedin.com/in/toni-espadas"
github: "https://github.com/anthonyswords"
diff --git a/content/people/victor-garcia.md b/content/people/victor-garcia-dominguez.md
similarity index 85%
rename from content/people/victor-garcia.md
rename to content/people/victor-garcia-dominguez.md
index 5d595702..f88acb67 100644
--- a/content/people/victor-garcia.md
+++ b/content/people/victor-garcia-dominguez.md
@@ -1,5 +1,5 @@
---
-id: victor-garcia
+id: victor-garcia-dominguez
name: "Víctor Garcia Domínguez"
photo: victor-garcia-dominguez.jpg
linkedin: "https://www.linkedin.com/in/v%C3%ADctor-garcia-dom%C3%ADnguez-9083571a3"
diff --git a/content/people/xavi.md b/content/people/xavi-francisco-gilabert.md
similarity index 91%
rename from content/people/xavi.md
rename to content/people/xavi-francisco-gilabert.md
index 2da3d064..04acbaf8 100644
--- a/content/people/xavi.md
+++ b/content/people/xavi-francisco-gilabert.md
@@ -1,5 +1,5 @@
---
-id: xavi
+id: xavi-francisco-gilabert
name: Xavi Francisco Gilabert
photo: xavi-francisco-gilabert.jpg
pybcn_position: Organizer
diff --git a/content/pybcn_association/information.md b/content/pybcn_association/information.md
index 3bb0c502..95ba205c 100644
--- a/content/pybcn_association/information.md
+++ b/content/pybcn_association/information.md
@@ -29,8 +29,8 @@ We have a Management Board and a Permanent Committee to make decisions, and work
* President: Jordi Bosch Alibau
* Secretary: Daniel Mesejo Leon
* Treasurer: Yago Tafalla
- * Board member of Comunication: Mauricio Volcanes
- * Board member of Events: Sergi Ramírez Mitjans
+ * Communications: Mauricio Volcanes
+ * Events: Sergi Ramírez Mitjans
* **Permanent Committee**: It is mostly a consultive board and help coordinate the work groups.
diff --git a/content/pybcn_association/organizers.md b/content/pybcn_association/organizers.md
index 2737f170..742a502a 100644
--- a/content/pybcn_association/organizers.md
+++ b/content/pybcn_association/organizers.md
@@ -1,5 +1,10 @@
---
title: "Organizers"
+# The name the appearance list of a person modal calls this page by. The
+# line there reads "Permanent Committee at PyBCN", where the title would
+# read "Permanent Committee at Organizers" and repeat the role. See
+# appearances_index.html.
+appearances_title: "PyBCN"
description: "Get to know the people behind PyBCN!"
menu:
main:
@@ -11,22 +16,22 @@ heroBackground: /images/photos/reg-desk-pyday-2019.jpg
people_levels:
- people_per_line: 5
- people: [jordi-bosch, daniel-mesejo, yago-tafalla, mauricio-volcanes, sergi-ramirez]
+ people: [jordi-bosch, daniel-mesejo-leon, yago-tafalla, mauricio-volcanes, sergi-ramirez]
name: Management Board (2026)
- people_per_line: 6
- people: [alberto, david, ifosch, natalia, alicia-morales, ferran-jovell]
+ people: [alberto-camara, david-arcos, ignasi-fosch, natalia-padilla, alicia-morales-carrasco, ferran-jovell]
name: Permanent Committee
- people_per_line: 4
- people: [elisabeth-ortega-carrasco, josep, loris, lpmayos, nuria, jose-riera, rberenguel, xavi]
+ people: [elisabeth-ortega-carrasco, josep-martinez-vila, loris-mularoni, laura-perez-mayos, nuria-pujol-vilanova, jose-riera-sanchez, ruben-berenguel, xavi-francisco-gilabert]
name: Collaborators
- people_per_line: 5
name: Management Board (2018 - 2025)
# An entry with a role shows that role on this page instead of the
# pybcn_position of the person file. See people-grid.html.
people:
- - id: lpmayos
+ - id: laura-perez-mayos
role: Former President
- - mireia
- - id: natalia
+ - mireia-alvarez-dominguez
+ - id: natalia-padilla
role: Former Secretary
---
diff --git a/content/pyladies_bcn/organizers-and-speakers.md b/content/pyladies_bcn/organizers-and-speakers.md
index 9c4a576b..dc4a95ac 100644
--- a/content/pyladies_bcn/organizers-and-speakers.md
+++ b/content/pyladies_bcn/organizers-and-speakers.md
@@ -1,5 +1,9 @@
---
title: "PyLadies BCN Organizers"
+# The name the appearance list of a person modal calls this page by. The
+# line there reads "Organizer at PyLadies BCN", where the title would
+# repeat the role. See appearances_index.html.
+appearances_title: "PyLadies BCN"
description: "The people that makes it possible!"
menu:
main:
@@ -11,6 +15,6 @@ heroBackground: /images/photos/pyladies/header/header2.jpeg
people_levels:
- people_per_line: 4
- people: [nuria, lpmayos, natalia, elisabeth-ortega-carrasco]
+ people: [nuria-pujol-vilanova, laura-perez-mayos, natalia-padilla, elisabeth-ortega-carrasco]
name: PyLadiesBCN Organizers
---
diff --git a/data/role_emoji.yaml b/data/role_emoji.yaml
new file mode 100644
index 00000000..41eb4cbe
--- /dev/null
+++ b/data/role_emoji.yaml
@@ -0,0 +1,51 @@
+# The emoji that marks each row of the Roles and the Events lists
+# of a person modal (see person_appearances.html). Left side: the role of
+# the row. For an events row that is the first of its roles, the heading
+# of the event page through roles.yaml. For a roles row it is the label of
+# the row, which is a level name of an organizers page through roles.yaml,
+# and a level name that is not a role ("Permanent Committee",
+# "Collaborators", "Management Board (2026)") is not here and takes the
+# "*" entry. Right side: one emoji. A role that is not here takes the "*"
+# entry, so a new role shows up with a neutral glyph rather than with
+# none, and the row does not change shape when it is added. The four
+# level names above are the live test of that fallback.
+#
+# Every emoji here has emoji presentation by default (Emoji_Presentation
+# in the Unicode emoji data), so none of them needs U+FE0F, the variation
+# selector, and none is a ZWJ sequence. Both are banned: a selector or a
+# joiner is one glyph to one font and two to another, so the marker column
+# would depend on the visitor's font. Keep to that set when adding a row:
+# a candidate that needs FE0F (a heart, a star, a hammer and pick) is out
+# even if it fits the role better.
+#
+# Close roles share one glyph. A Former X takes the glyph of X: the row
+# already prints "Former", and a second glyph for a past post would say
+# that the post itself was different, which it was not.
+# The four posts of the board have a glyph each, so that the posts tell
+# apart at a glance when the board page lists them.
+Speaker: 🎤
+Mentor: 🎓
+Volunteer: 🙋
+Organizer: 🧭
+Collaborator: 🤝
+President: 🔑
+Former President: 🔑
+Secretary: 📝
+Former Secretary: 📝
+Treasurer: 💶
+Former Treasurer: 💶
+Communications: 📣
+Events: 📅
+"*": 👤
+
+# The Roles list of the modal is keyed by the level a person sits
+# at, not by a role: "Permanent Committee", not "Organizer". Those names
+# are below so that the list reads as a group per row rather than as the
+# fallback silhouette on every row. A level name that is not here falls
+# back to "*", which is why the board rows carry the year: a 2027 board
+# needs a row of its own, and until it has one its glyph is the neutral
+# one, not a wrong one.
+Permanent Committee: 🧭
+Collaborators: 🤝
+Management Board (2026): 📋
+Management Board (2018 - 2025): 📋
diff --git a/data/roles.yaml b/data/roles.yaml
index 23f6975b..e8dc8c49 100644
--- a/data/roles.yaml
+++ b/data/roles.yaml
@@ -18,4 +18,4 @@ Speakers: Speaker
Organizers: Organizer
Mentors: Mentor
Volunteers: Volunteer
-PyLadiesBCN Organizers: PyLadiesBCN Organizer
+PyLadiesBCN Organizers: Organizer
diff --git a/themes/pybcn_theme/assets/images/people/alvaro_duran.jpg b/themes/pybcn_theme/assets/images/people/alvaro_duran.jpg
deleted file mode 100644
index 74b6790c..00000000
Binary files a/themes/pybcn_theme/assets/images/people/alvaro_duran.jpg and /dev/null differ
diff --git a/themes/pybcn_theme/assets/images/people/daniel-mesejo.jpg b/themes/pybcn_theme/assets/images/people/daniel-mesejo.jpg
deleted file mode 100644
index 24dc697a..00000000
Binary files a/themes/pybcn_theme/assets/images/people/daniel-mesejo.jpg and /dev/null differ
diff --git a/themes/pybcn_theme/assets/scss/main.scss b/themes/pybcn_theme/assets/scss/main.scss
index bfef0d21..f3582d45 100644
--- a/themes/pybcn_theme/assets/scss/main.scss
+++ b/themes/pybcn_theme/assets/scss/main.scss
@@ -1,5 +1,9 @@
$navbar-color: #FFFFFF;
$blue-pybcn: #006c9b;
+// The rest colour of an icon that lights up under the pointer: a social
+// glyph on a card and in a modal. 4.68:1 on white, above the 3:1 WCAG
+// 1.4.11 asks of a graphic that carries meaning.
+$icon-grey: #6c757d;
$yellow-pybcn-OLD: #ffdc39;
$yellow-pybcn: #fdbf2e;
$dark-grey: #343a40;
diff --git a/themes/pybcn_theme/assets/scss/people.scss b/themes/pybcn_theme/assets/scss/people.scss
index ec259eed..86d676a2 100644
--- a/themes/pybcn_theme/assets/scss/people.scss
+++ b/themes/pybcn_theme/assets/scss/people.scss
@@ -2,6 +2,15 @@
// people section, so there is no single id to target.
.people_grid {
+ // The card width, the space between two cards, and the count a row
+ // falls back to on a tablet. Declared here because the rules below use
+ // them from the first one.
+ $card: 178px;
+ $gutter: 12px;
+ // A literal divisor is not a division in Dart Sass, which emits
+ // width: 100%/3 and the browser drops the rule. A variable divides.
+ $tablet_per_line: 3;
+
// A Bootstrap container adds its own 15px of padding inside the padding
// the column already has. On an event page the level heading band spans
// the full width of the col-md-9 while the row of cards sat 15px inside
@@ -13,12 +22,17 @@
padding-right: 0;
}
- // The last row of a section rarely fills. Centring it puts the remainder
- // in the middle instead of leaving one card alone on the left, and it
- // means every section can keep the same cards per row, so no section ends
- // up with wider cards than another and reads as more important.
+ // Every row of cards starts on the same left edge as the heading above
+ // it, which is the line the eye follows down the page. Three rules are
+ // needed. The row caps its own width further down, so it must not be
+ // centred in the column. The cards of a row that does not fill must not
+ // be centred under the cards above them. And the half gutter each card
+ // carries on its left has to come back off the row, so the edge of the
+ // first card, not the edge of its gutter, is what lands on the line.
.row.level {
- justify-content: center;
+ justify-content: flex-start;
+ margin-left: -$gutter / 2;
+ margin-right: -$gutter / 2;
}
// Every card is the same width in every section, and so is the space
@@ -32,12 +46,6 @@
// dropped that page from four cards a row to three. As a fraction, four
// slots of 190px fit, and the card there is the same 178px as on the
// organizers page.
- $card: 178px;
- $gutter: 12px;
- // A literal divisor is not a division in Dart Sass, which emits
- // width: 100%/3 and the browser drops the rule. A variable divides.
- $tablet_per_line: 3;
-
.person_wrapper {
flex: 0 0 auto;
// The card is the container the type sizes against, at the end of
@@ -61,7 +69,6 @@
@media (min-width: 768px) and (max-width: 991.98px) {
.row.level {
max-width: ($card + $gutter) * 3;
- margin-left: auto;
margin-right: auto;
.person_wrapper {
@@ -76,7 +83,6 @@
@for $n from 1 through 8 {
.row.level.per_line_#{$n} {
max-width: ($card + $gutter) * $n;
- margin-left: auto;
margin-right: auto;
.person_wrapper {
@@ -273,10 +279,21 @@
// (see .icon_x in main.scss), so it follows the same rule.
i {
font-size: clamp(18px, 16cqi, 32px);
- color: black;
- &:hover {
- color: $blue-pybcn;
- }
+ // Grey at rest and the PyBCN blue under the pointer,
+ // the same treatment the glyph of an appearance row
+ // takes in the modal. They were solid black here and
+ // the link blue in the modal, which are two answers to
+ // the same question on one page. 4.68:1 on white, so
+ // the grey still passes the 3:1 WCAG asks of a graphic.
+ color: $icon-grey;
+ transition: color 0.15s linear;
+ }
+
+ // On the link and not on the glyph, so the margin each
+ // link carries is part of the target.
+ a:hover i,
+ a:focus i {
+ color: $blue-pybcn;
}
}
@@ -306,39 +323,49 @@
.modal {
.modal-dialog {
- // 900px, from the content and not from the window: the
- // 300px photo column and its 20px gap, a 548px text
- // column, and the 16px of body padding each side. The
- // text column holds the longest line the modal renders
- // in one line, the 498px event line "Mentor and
- // Organizer at Hands-on Django with PyLadiesBCN (2022)"
- // behind its 20px list indent, and is about 65
- // characters of the body font, a comfortable measure
- // for a bio paragraph. The old cap was 70% of the
- // window: 1006px at 1440px, where a line of text ran
- // 650px and the foot of the modal was blank to the
- // right of the social links, and a percentage of a
- // 2560px screen is wider still. Under 900px the dialog
- // fits the window, as a max-width does.
- max-width: 900px;
-
- // Two columns: the photo on the left, everything else
- // on the right. The photo used to sit in the header
- // only, beside the name, the role and the bio, with
- // the sections running full width under it: three
- // short lines beside a 200px photo left a gap under
- // the photo that the first section had to clear. The
- // right column now holds the sections too, so nothing
- // runs under the photo whatever the length of the text.
+ // 580px, from the content and not from the window:
+ // the 548px text column, which is now the whole body,
+ // and the 16px of body padding each side. The cap was
+ // 900px while the photo was a 300px column with a
+ // 20px gap beside that text column. With the photo in
+ // the header row the column and the gap are gone, and
+ // 900px put 866px of bio on one line: 122 characters
+ // of the 16px body font on the first line of Jordi
+ // Bosch's bio, measured at 1440px, about twice a
+ // comfortable measure. The 548px holds the longest
+ // line the modal renders in one line, the 498px event
+ // line "Mentor and Organizer at Hands-on Django with
+ // PyLadiesBCN (2022)" behind its 38px marker column, and
+ // is about 76 characters of the body font at the 7.15px
+ // the average glyph of that bio measures. The header
+ // row leaves 422px for the name after the 40px that
+ // clears the close button, the 20px gap, and the 64px
+ // photo, and "Elisabeth Ortega Carrasco", the longest
+ // name on the organizers page, sits on one line there
+ // at 28px. The cap before 900px was 70% of the window:
+ // 1006px at 1440px, and a percentage of a 2560px
+ // screen is wider still. Under 580px the dialog fits
+ // the window, as a max-width does.
+ max-width: 580px;
+
+ // One column: a header row, then the sections at the
+ // full width of the body. The body used to be two
+ // columns, the photo on the left at 300px and the text
+ // on the right, so that nothing ran under the photo.
+ // That put a blank strip under the photo instead, as
+ // tall as the text beside it, which for a person with
+ // a bio is most of the modal. The photo is small and
+ // round now and takes the corner of the header, so the
+ // text has nothing to clear and the columns are gone.
+ // The body is a block again, the Bootstrap default, and
+ // the close button stays where the two-column layout
+ // put it: absolute in the corner, at the body padding.
+ // Bootstrap floats it, and a float beside the header
+ // row would narrow the row by the width of the button
+ // through the block formatting context a flex
+ // container opens, which is true but not something a
+ // reader of this file should have to know.
.modal-body {
- display: flex;
- align-items: flex-start;
-
- // Bootstrap floats the close button, and a flex
- // container ignores floats: the button would become
- // the first item of the row and push the photo
- // right. It sits in the corner instead, where the
- // float put it, at the body padding.
.close {
position: absolute;
top: 1rem;
@@ -346,47 +373,148 @@
}
}
- // The photo column is as wide as the photo and no
- // wider: 300px, or the short side of a smaller source
- // (see people_summary.html), so a 200px photo leaves
- // the room to the text and not to a blank strip. 300px
- // is a third of the dialog on a wide screen, half again
- // the 200px of before, which was the card's size and
- // small next to the text, and under the 400px that was
- // a quarter of the modal and the only thing a reader
- // saw at first. The 400px file serves it at 1x and the
- // 800px file at 2x.
- .person_photo {
- flex: 0 0 auto;
- margin-right: 20px;
+ // The name and the role on the left, the photo on the
+ // right, and only those two share the row: a flex row
+ // and not a float, because a float would let the bio
+ // run up beside the photo and collide with the section
+ // headings and their rules. The row is as tall as the
+ // taller of the two, and the photo is sized so that
+ // the two are nearly the same height (see .person_photo
+ // below), so the row ends where the text ends and the
+ // first section starts right under the role. With the
+ // 120px photo the row was 120px tall against 60px of
+ // name and role, and the Bio heading sat 80px under
+ // the role: a blank band that read as a missing
+ // section. Centred, not top-aligned: the two differ by
+ // 4px on one line, so centring moves the name 2px,
+ // and when a long name wraps to two lines the photo
+ // sits on the middle of the block instead of hanging
+ // off its first line. Top alignment was chosen when
+ // the photo was 120px and centring would have floated
+ // the name 30px under the close button; at 64px that
+ // reason is gone.
+ //
+ // The right padding is what keeps the photo off the
+ // close button, which sits in the rightmost 14px of the
+ // body, 24px tall, at the top right corner the photo
+ // now takes too. 2.5rem is 40px: the 14px of the button
+ // and 26px of air, so the ring of the photo does not
+ // touch the button and the pointer has a clear target.
+ // The padding is on the row and not on the title, so
+ // the photo clears the button too, not only the text.
+ .person_header {
+ display: flex;
+ align-items: center;
+ padding-right: 2.5rem;
+ // Padding and no rule. A rule under this row put a
+ // line right above the one the BIO heading carries,
+ // so the first section opened with two hairlines a
+ // few pixels apart.
+ padding-bottom: 16px;
}
// min-width: 0 lets a long name wrap instead of
- // pushing the column wider than the modal: a flex
- // item is as wide as its longest word by default.
- .person_main {
+ // pushing the row wider than the modal: a flex item
+ // is as wide as its longest word by default. The 20px
+ // to the photo is the gap the two columns had.
+ .person_heading {
flex: 1 1 auto;
min-width: 0;
+ margin-right: 20px;
+ }
+
+ // The photo: a round frame that clips, with a hairline
+ // ring, after the avatar on davidarcos.net. 160px is
+ // the size the markup gives the image too (see
+ // people_summary.html). This block is on its way to
+ // becoming the header of a page per person, and a
+ // portrait is what a person page opens with, so the
+ // face is shown at a size a reader can read a face at.
+ // It was 64px for one build, which is the height of
+ // the name and the role beside it, and at that size it
+ // is a mark, not a portrait.
+ //
+ // The band that costs is under the role: the row is as
+ // tall as the photo, so a name that fits on one line
+ // leaves (160 - 60) / 2 of air above the name and the
+ // same under the role. The heading grows to take a
+ // share of it, and what is left reads as the padding
+ // of a header band rather than as a gap, because the
+ // rule under the row closes it.
+ //
+ // The 160px image is the 400px card file scaled down
+ // by the browser, no new variant and no new request:
+ // the card has already loaded it when the modal opens.
+ //
+ // The ring is a box-shadow and not a border: a border
+ // takes part in the layout and shifts the image by its
+ // width, and a shadow is drawn outside the box. 15%
+ // black on the white of the modal, a hairline, so the
+ // frame has an edge where the photo is light at the rim.
+ // The frame clips the zoom below, so the photo never
+ // spills out of the circle.
+ .person_photo {
+ flex: 0 0 auto;
+ border-radius: 50%;
+ overflow: hidden;
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15);
+
+ // display: block, because an inline image sits on
+ // the text baseline and leaves a few pixels of
+ // space under it inside the frame, which the ring
+ // would show. object-fit covers the fallback image,
+ // which is not square; a person photo is already
+ // square from the pipeline.
+ img {
+ display: block;
+ width: 160px;
+ height: 160px;
+ border-radius: 50%;
+ object-fit: cover;
+ }
+
+ // On hover the photo comes closer inside the frame,
+ // the same move the card makes. Only for a reader
+ // who has not asked for less motion: the card
+ // moves for everyone, and this one is the rule to
+ // follow from now on.
+ @media (prefers-reduced-motion: no-preference) {
+ img {
+ transition: transform 0.2s linear;
+ }
+
+ &:hover img {
+ transform: scale(1.2);
+ }
+ }
}
- // The right padding keeps the name clear of the close
- // button, which no longer floats beside it. On the
- // title only: the lists below do not reach that
- // corner and get the whole column.
+ // No right padding on the title any more: the header
+ // row above carries it, for the photo as well.
+ // Larger than Bootstrap's 28px, because this row is
+ // on its way to being the header of a page per person
+ // and the name is its title. It also takes a share of
+ // the air the 160px photo opens beside a one line
+ // name: the heading block goes from 60px to 66px.
.modal-title {
+ font-size: 2rem;
margin-bottom: 2px;
- padding-right: 24px;
}
// Italic and plain, as on the card, so the pair
- // under the photo reads the same in both places.
+ // beside the photo reads the same in both places. No
+ // margin under it: the first section brings its own
+ // 20px, the gap every section keeps from the block
+ // above it, and the 8px that used to be here put the
+ // Bio heading 28px under the role, 8px further than
+ // Roles sits under the bio.
.person_role {
font-style: italic;
- margin-bottom: 8px;
+ margin-bottom: 0;
}
// Every block of the modal below the name is a section
- // with a heading: Bio, Description, Roles at PyBCN,
+ // with a heading: Bio, Description, Roles,
// Events, Social Links. The modal used to be a stack of
// blocks with no label, so a reader had to guess that a bold word was
// a role and a list of years was a history. A section
@@ -419,34 +547,26 @@
}
}
- // The roles the person holds, one row per label: the
- // label in the first column, the linked page titles
- // in the second. A grid rather than a table, so the
- // label column is as wide as its longest word and no
- // wider. See person_appearances.html.
- .appearances {
- display: grid;
- grid-template-columns: max-content 1fr;
- gap: 4px 12px;
- margin: 0;
-
- dt {
- font-weight: bold;
- }
- dd {
- margin: 0;
- }
- }
+ // The roles the person holds, one line per role, built
+ // and styled exactly as an event line: the glyph, the
+ // role in bold, an italic "at", and the page. It was a
+ // definition list in a two column grid, which put the
+ // same kind of statement in a different shape from the
+ // list right under it, and on a phone the label column
+ // was as wide as "Management Board (2018 - 2025)" and
+ // left 80px of a 390px screen for the page beside it.
+ // Nothing is set here: ul.events below carries it, and
+ // the selector lists both. See person_appearances.html.
// The two lists of the modal, the events and the
- // social links, with one treatment: a disc marker and
- // the indent that goes with it, so each reads as a
- // list. Both used to drop the marker and the padding,
- // and five events were five loose lines with nothing
- // to say they were one list, under a heading styled
- // like the one over a table. The indent is the width
- // of the marker and a space, no more: the browser
- // default of 40px pushed a list in from the headings.
+ // social links, with one treatment: a marker and the
+ // indent that goes with it, so each reads as a list.
+ // Both used to drop the marker and the padding, and
+ // five events were five loose lines with nothing to
+ // say they were one list, under a heading styled like
+ // the one over a table. The indent is the width of
+ // the marker and a space, no more: the browser default
+ // of 40px pushed a list in from the headings.
.modal_section ul {
list-style: disc;
padding-left: 1.25em;
@@ -458,9 +578,129 @@
}
}
- // The events, one line per event, newest first, the
- // role before the linked title. See
- // person_appearances.html.
+ // The roles and the events, one line each, the role
+ // before the linked page or title. See
+ // person_appearances.html. The marker is the role
+ // glyph that starts the row, not the disc: the row
+ // carries it as the social rows carry the network
+ // icon. The padding is the glyph's column, so the
+ // text starts where it starts under a disc, at the
+ // padding edge, and a wrapped line starts there too.
+ // The selector repeats the ul of the rule above,
+ // because a class alone loses to that class and
+ // element pair, and the list kept the disc and the
+ // 1.25em indent under the glyph.
+ .modal_section ul.appearances,
+ .modal_section ul.events {
+ list-style: none;
+ padding-left: calc(1.875em + 8px);
+
+ // The whole row answers the pointer, not only the
+ // link in it: the glyph, the role and the link are
+ // one statement, and a reader aiming at any of the
+ // three is after the same page. focus-within does
+ // the same for the keyboard, where the link is what
+ // takes focus. The glyph drops its grey and comes
+ // back in colour, which is the only place on the
+ // page a role shows its own colour.
+ li:hover,
+ li:focus-within {
+ .role_emoji {
+ filter: none;
+ }
+
+ strong {
+ color: $blue-pybcn;
+ }
+
+ a {
+ text-decoration: underline;
+ }
+ }
+
+ // The whole row is the link, not only its text. The
+ // link stretches over the row with a pseudo element
+ // rather than by wrapping the row in an anchor,
+ // which would put the glyph and the role inside the
+ // link text and read them out with it.
+ //
+ // :only-of-type is the guard. A role held on two
+ // pages prints two links on one row, and there is
+ // no one row to stretch: those rows keep their own
+ // link areas. No row has two links today, out of
+ // 135 role rows and every event row, but the
+ // template allows it.
+ li {
+ position: relative;
+ }
+
+ li > a:only-of-type::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ }
+
+ // A colour change, not a move, so there is nothing
+ // for prefers-reduced-motion to turn off.
+ .role_emoji,
+ strong {
+ transition: color 0.15s linear, filter 0.15s linear;
+ }
+ }
+
+ // The role glyph as the marker of a Roles or an Events
+ // row, from data/role_emoji.yaml. Sized as the network
+ // icon of .modal_links below: 1.25em in a 1.5em column
+ // with 8px to the text, so a glyph of any width leaves
+ // the text on one line down the list. The column is
+ // 1.875em of the body font plus 8px, which is the
+ // padding the two lists above set, and the negative
+ // margin pulls the glyph back into that padding, where
+ // a disc sits. Pulled back and not placed with
+ // position, so it stays on the line of its row when
+ // the row wraps.
+ //
+ // Desaturated, so the glyph sits with the black icons
+ // of Social Links rather than being the one spot of
+ // colour in the modal. grayscale and nothing else: a
+ // colour emoji is a shaded picture, and in grey it is
+ // a light one, which is what this list wants. The
+ // marker labels the row; the text beside it is what
+ // the reader is here for, and a grey mark does not
+ // compete with it.
+ //
+ // Measured in Chromium with Noto Color Emoji, over
+ // the ink of a whole modal of glyphs: grayscale alone
+ // gives a mean luminance of 142 (0 is black) with 2%
+ // of the ink almost black. Darkening first and then
+ // stretching the contrast, which this rule did for one
+ // build, gives a mean of 53 with 64% of the ink almost
+ // black: the shaded faces of the compass and the
+ // calendar fill in and the glyph reads as a blot. A
+ // flat black glyph like the icons is out of reach for
+ // a filter either way, because the emoji keeps its
+ // shading.
+ //
+ // Upright and at the normal weight, because the dt is
+ // bold and a slanted or heavy emoji is a font bug on
+ // some platforms and never a style. line-height: 1
+ // keeps the glyph from opening the line box of its
+ // row further than its own height, and middle-aligned
+ // the text sits on the centre of the glyph instead of
+ // on its bottom edge.
+ .role_emoji {
+ display: inline-block;
+ font-size: 1.25em;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ width: 1.5em;
+ margin-left: calc(-1.5em - 8px);
+ margin-right: 8px;
+ text-align: center;
+ vertical-align: middle;
+ filter: grayscale(1);
+ }
// The links of the card, listed with their text at the
// foot of the modal, so a reader can see the handle or
@@ -468,7 +708,23 @@
// place the modal shows them: a bare icon row next to
// the name said the same thing with less. See
// person_links.html.
- .modal_links {
+ // The selector repeats the ul, as .events above does:
+ // a class alone loses to the class and element pair of
+ // .modal_section ul, and the list kept the disc and the
+ // 1.25em indent that rule sets.
+ .modal_section ul.modal_links {
+ // The network icon is this list's marker, so the
+ // disc goes: with both, the row carried two
+ // markers and its text started 20px to the right
+ // of the text in the two lists above, which now
+ // start with a glyph of their own. The padding is
+ // the one those two set, so the three lists share
+ // one column. The negative margin on the icon is
+ // what pulls it back into the padding; it is set
+ // on i below, where the column width is.
+ list-style: none;
+ padding-left: calc(1.875em + 8px);
+
// A link text is one unbroken string, the path of
// a LinkedIn profile or a site address, and one of
// them is 600px of percent-encoded emoji. A string
@@ -479,18 +735,66 @@
overflow-wrap: anywhere;
}
+ // The whole row answers the pointer and is the
+ // link, as a row of the two lists above is: the
+ // icon colours, the address takes an underline,
+ // and a click anywhere on the row follows it. The
+ // network name is bold, so it lights like the role
+ // of a role row.
+ li {
+ position: relative;
+ }
+
+ li > a::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ }
+
+ li:hover,
+ li:focus-within {
+ i {
+ color: $blue-pybcn;
+ }
+
+ strong {
+ color: $blue-pybcn;
+ }
+
+ a {
+ text-decoration: underline;
+ }
+ }
+
// One column for the icon whatever its width, so
// the text starts on one line down the list. The
// LinkedIn glyph is narrower than the globe, and
// the X mark is a box of its own (see .icon_x in
// main.scss) that sets neither width nor gap.
+ // Grey at rest and the PyBCN blue under the
+ // pointer, the same as the card above and as the
+ // role glyph of the two lists above. The icon took
+ // the link colour, so it was blue at rest and the
+ // row said nothing when the pointer reached it.
+ strong {
+ transition: color 0.15s linear;
+ }
+
i {
display: inline-block;
+ color: $icon-grey;
+ transition: color 0.15s linear;
// Larger than the text beside it, because these
// are now the only icons in the modal.
font-size: 1.25em;
width: 1.5em;
margin-right: 8px;
+ // Into the padding above, where the disc used
+ // to sit and where the role glyph of the two
+ // lists above sits. The margin is in em of the
+ // icon; the 8px is the gap it sets above, so the
+ // pull is the column plus the gap.
+ margin-left: calc(-1.5em - 8px);
text-align: center;
vertical-align: -2px;
}
@@ -510,55 +814,23 @@
.modal-dialog {
max-width: 100%;
- // The columns stack: the photo on top, the text
- // under it. Side by side, a 300px photo left 50px
- // of a 390px screen for the text, and the 120px
- // photo the modal used beside the name left the
- // name wrapping one word to a line. Stacked, the
- // photo is capped at 200px so the name is still on
- // the first screen: at 300px the first section
- // started half way down it. The title comes down
- // too: at Bootstrap's 28px a three-word name took
- // three lines of a 374px dialog.
- .modal-body {
- flex-direction: column;
- }
-
- .person_photo {
- margin: 0 0 12px;
-
- img {
- max-width: 200px;
- }
- }
-
- .person_main {
- // The column is as wide as the dialog, not as
- // wide as its content, so a list does not run
- // past the edge.
- width: 100%;
+ // A 360px screen gives the modal body 310px, and
+ // 40px of that clears the close button and 20px is
+ // the gap to the photo. At the desktop 160px the
+ // name is left 90px and "Laura Perez Mayos" takes
+ // three lines of it. 112px leaves 138px and two.
+ .person_photo img {
+ width: 112px;
+ height: 112px;
}
+ // The title comes down too: at 32px the same name
+ // takes four lines of that 138px, and two at
+ // 1.4rem.
.modal-title {
font-size: 1.4rem;
- // No close button beside the first line any
- // more: it is above the photo.
- padding-right: 0;
}
- // The roles stack on a phone: the label column is
- // as wide as "Management Board (2018 - 2025)", which
- // left 80px of a 390px screen for the page title
- // beside it, three lines for "PyLadies BCN
- // Organizers". The page goes under its label,
- // indented, as a definition list does by default.
- .appearances {
- display: block;
-
- dd {
- margin: 0 0 4px 1em;
- }
- }
}
}
diff --git a/themes/pybcn_theme/layouts/_default/event.html b/themes/pybcn_theme/layouts/_default/event.html
index 3b43d4e5..379a55cf 100644
--- a/themes/pybcn_theme/layouts/_default/event.html
+++ b/themes/pybcn_theme/layouts/_default/event.html
@@ -73,7 +73,7 @@
{{ $role }}
+ {{/* Left out when empty, as in the modal below: a person with no + position under a heading roles.yaml does not map has no role, + and the line used to print as an empty paragraph. The text + alone: the role glyph of data/role_emoji.yaml sat here for + one commit, and it read as a stray character of the italic + line rather than as a mark. It is the list marker of the + Roles and Events rows of the modal now, where it has a column + of its own, like the network icon in Social Links (see + person_appearances.html). */}} + {{ with $role }}{{ . }}
{{ end }}