Compare commits

..

4 Commits

Author SHA1 Message Date
9a5c90dc16 feat: simple buttons to show links for media
All checks were successful
Website build and deploy / build (pull_request) Successful in 45s
2026-02-13 00:39:08 +01:00
8e8f38c8b5 fix: margin if not header text is present 2026-02-13 00:11:43 +01:00
c203c8e9ef feat: handle missing header images 2026-02-12 23:59:54 +01:00
b45c29b83b chore: reduce image size 2026-02-12 23:51:39 +01:00
8 changed files with 65 additions and 5 deletions

View File

@@ -11,10 +11,10 @@ tags:
headerimage: headerimage:
src: /blog/file-cabinet.jpg src: /blog/file-cabinet.jpg
text: Neatly organise your records text: Neatly organise your records
audio: https://podcast.opensap.info/open-source-way/2023/11/29/the-growing-importance-of-software-bills-of-materials-sbom/ audio: https://podcasts.apple.com/us/podcast/the-growing-importance-of-software-bills-of-materials-sbom/id1535460646?i=1000636913792
podcast: podcast:
name: SAP's Open Source Way Podcast name: SAP's Open Source Way Podcast
href: https://podcast.opensap.info/open-source-way/2023/11/29/the-growing-importance-of-software-bills-of-materials-sbom/ href: https://podcasts.apple.com/us/podcast/the-growing-importance-of-software-bills-of-materials-sbom/id1535460646?i=1000636913792
--- ---
I had the pleasure to moderate the OpenRail Day 2025 in Paris, organised by the [OpenRail Association](https://openrailassociation.org) to share knowledge and experiences about open source software in the railway industry. The event featured several talks and panel discussions with experts from different companies and organisations involved in open source projects related to railways. I had the pleasure to moderate the OpenRail Day 2025 in Paris, organised by the [OpenRail Association](https://openrailassociation.org) to share knowledge and experiences about open source software in the railway industry. The event featured several talks and panel discussions with experts from different companies and organisations involved in open source projects related to railways.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View File

@@ -0,0 +1,22 @@
---
title: "Software Supply Chain Strategy at Deutsche Bahn"
date: 2026-01-31
categories:
- english
- presentation
tags:
- OSPO
- SupplyChain
- Security
headerimage:
src: firstslide.jpg
video: https://video.fosdem.org/2026/ua2114/ZSWH3N-deutsche-bahn-supply-chain-cra-strategy.av1.webm
slides: https://fosdem.org/2026/events/attachments/ZSWH3N-deutsche-bahn-supply-chain-cra-strategy/slides/266949/2026-01-3_7kstxwl.pdf
event:
name: FOSDEM 2026
href: https://fosdem.org/2026/schedule/event/ZSWH3N-deutsche-bahn-supply-chain-cra-strategy/
---
Deutsche Bahn, with its 230,000 employees and hundreds of subsidiaries, is far from an average organization. Yet it faces the same challenges under the CRA as many others. In this session, I showed how we connected the concrete requirements of CRA compliance with our broader effort to bring transparency to our software supply chains. This forms the basis for security and license compliance processes, as well as for proactively shaping the ecosystems we depend on.
In the presentation, I outlined our strategy for addressing the expectations tied to the different roles we take on -- customer, manufacturer, and indirectly even steward -- from both organizational and technical angles. Given the diversity and scale of Deutsche Bahn, we rely on modular FOSS tools that offer the flexibility to adapt to varying stakeholder needs and evolving regulation. This flexibility is a core element of our approach. This session showed how we align strategy and technology to make this work.

View File

@@ -199,6 +199,8 @@ html, body {
font-size: 18px; font-size: 18px;
.header-image { .header-image {
margin-bottom: 0.5em;
img { img {
width: 100%; width: 100%;
height: auto; height: auto;
@@ -210,9 +212,13 @@ html, body {
font-size: 0.8em; font-size: 0.8em;
text-align: center; text-align: center;
line-height: 1em; line-height: 1em;
margin-bottom: 1.5em; margin-bottom: 0;
} }
} }
.blog-links {
margin-bottom: 1em;
}
} }
/* Metadata */ /* Metadata */

View File

@@ -51,7 +51,8 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-body"> <div class="panel-body">
<div class="blogpost"> <div class="blogpost">
{{ partial "blog/headerimage" . }} {{- partial "blog/headerimage" . }}
{{- partial "blog/links" . }}
{{ .Content }} {{ .Content }}
<!-- only show related posts if param is true, or if it's not a page --> <!-- only show related posts if param is true, or if it's not a page -->
{{ if or (eq .Params.related true) (ne .Params.page true) }} {{ if or (eq .Params.related true) (ne .Params.page true) }}

View File

@@ -12,8 +12,12 @@
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- $processes := .processes | default (slice "fill 1000x440 webp" )}} {{- $processes := .processes | default (slice "fill 1000x440 webp" )}}
{{- $image = partial "image-processing" (dict "image" $image "processes" $processes "filter" .filter) -}} {{- $filter := .filter }}
{{- if not $image }}
{{- warnf "Header image '%s' not found for page %s" .src $page.RelPermalink }}
{{- end }}
{{- with $image }} {{- with $image }}
{{- $image = partial "image-processing" (dict "image" $image "processes" $processes "filter" $filter) -}}
<img src="{{ .RelPermalink }}" /> <img src="{{ .RelPermalink }}" />
{{- end }} {{- end }}
{{- with .text }}<p>{{ . | markdownify }}</p>{{ end }} {{- with .text }}<p>{{ . | markdownify }}</p>{{ end }}

View File

@@ -0,0 +1,27 @@
<div class="blog-links">
{{- with .Params.event }}
<a class="btn btn-default button-event" href="{{ .href }}" target="_blank" aria-label="Event Page" role="button">
<i class="fas fa-calendar-alt" aria-hidden="true"></i>&nbsp;&nbsp;{{ .name }}
</a>
{{- end }}
{{- with .Params.audio }}
<a class="btn btn-default button-audio" href="{{ . }}" target="_blank" aria-label="Audio Recording" role="button">
<i class="fas fa-microphone" aria-hidden="true"></i>&nbsp;&nbsp;Listen to Recording
</a>
{{- end }}
{{- with .Params.article }}
<a class="btn btn-default button-article" href="{{ .href }}" target="_blank" aria-label="Related Article" role="button">
<i class="fas fa-newspaper" aria-hidden="true"></i>&nbsp;&nbsp;Read {{ .name }} Article
</a>
{{- end }}
{{- with .Params.video }}
<a class="btn btn-default button-video" href="{{ . }}" target="_blank" aria-label="Video Recording" role="button">
<i class="fas fa-video" aria-hidden="true"></i>&nbsp;&nbsp;Watch Recording
</a>
{{- end }}
{{- with .Params.slides }}
<a class="btn btn-default button-slides" href="{{ . }}" target="_blank" aria-label="Slides" role="button">
<i class="fas fa-desktop" aria-hidden="true"></i>&nbsp;&nbsp;View Slides
</a>
{{- end }}
</div>