diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..cf7ed2f --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +This is a simple static website built from a combination of Markdown and HTML. + +The script `build.py` parses Markdown files in the `data/team` and `data/projects` +directories and generate HTML sections based on their content. Check the header of +`build.py` for more details. diff --git a/build.py b/build.py index d5093fc..27955e6 100644 --- a/build.py +++ b/build.py @@ -50,6 +50,7 @@ class Collaborator: title: str = "" affiliation: str = "" website: str = "" + portfolio: str = "" email: str = "" picture: str = "" interests: str = "" @@ -60,7 +61,7 @@ class Collaborator: _KNOWN_FIELDS = { "funding", "period", "partners", "website", "github", "status", - "role", "title", "affiliation", "email", "picture", "interests", + "role", "title", "affiliation", "email", "picture", "interests", "portfolio", } def _parse_entries(text: str) -> list[dict]: @@ -87,7 +88,7 @@ def _parse_entries(text: str) -> list[dict]: # Try key: value field m = re.match(r'^([a-zA-Z_]+)\s*:\s*(.*)$', line) if m and m.group(1).lower() in _KNOWN_FIELDS: - current[m.group(1).lower()] = m.group(2).strip() + current[m.group(1).lower()] = m.group(2).strip().strip("<>") else: current["_body_lines"].append(raw_line) @@ -133,6 +134,7 @@ def parse_collaborators(source: Path) -> list[Collaborator]: title=e.get("title", ""), affiliation=e.get("affiliation", ""), website=e.get("website", ""), + portfolio=e.get("portfolio", ""), email=e.get("email", ""), picture=e.get("picture", ""), interests=e.get("interests", ""), @@ -325,6 +327,22 @@ def render_collaborators(collaborators: list[Collaborator]) -> str: bio = _render_bio(c.bio) + links = [] + if c.website: + links.append( + f'Website →' + ) + if c.portfolio: + links.append( + f'Portfolio →' + ) + links_html = ( + f'
Gregory Mermoud is a professor at HES-SO Valais-Wallis and director of SIMLab. His research focuses on the intersection of physics-based modeling and machine learning, with an emphasis on developing interpretable and uncertainty-aware models for real-world engineering problems.
+Cedric Travelletti is a senior scientist at SIMLab specialising in probabilistic machine learning and spatial statistics. His work addresses inverse problems in geosciences, with a focus on scalable Gaussian process methods and uncertainty quantification for large-scale environmental applications.
+Alexandre Veuthey is a research engineer whose work at HES-SO and SIMLab focuses on the practical applications of Machine Learning for Computer Vision, particularly at the intersection of the 2D and 3D vision modalities. His prior experience in an industrial context enables data-driven solutions for vision tools based on cameras and other sensors.
+