Update skills and credentials content
My Gatsby Deployment pipeline / build-and-deploy (push) Successful in 3m32s

Remove SAP BODS from the stack (and from the Swisscom summary line).
Split the single credentials line into Education and Certifications, add
the Udacity nanodegrees and IBM AI Engineering, and note the Tongji
University (Shanghai) master's thesis for international context.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 09:49:50 +02:00
parent f523fa986c
commit 60d9d33f11
+38 -13
View File
@@ -19,7 +19,7 @@ const ROLES = [
location: 'Bern, CH',
title: 'Staff Data, Analytics & AI Engineer',
description:
'ETL and streaming pipelines in Python, Kafka and SAP BODS feeding a Teradata warehouse, while migrating the legacy stack onto AWS (Glue, Redshift, Lambda, Step Functions, Airflow).',
'ETL and streaming pipelines in Python and Kafka feeding a Teradata warehouse, while migrating the legacy stack onto AWS (Glue, Redshift, Lambda, Step Functions, Airflow).',
live: true,
},
{
@@ -58,10 +58,26 @@ const ROLES = [
const STACK = [
{ label: 'Languages', items: ['Python', 'SQL', 'Java', 'C#', 'TypeScript', 'C++'] },
{ label: 'Data & Pipelines', items: ['ETL / ELT', 'Kafka', 'Airflow', 'SAP BODS', 'Teradata', 'Hadoop / Impala'] },
{ label: 'Data & Pipelines', items: ['ETL / ELT', 'Kafka', 'Airflow', 'Teradata', 'Hadoop / Impala'] },
{ label: 'Cloud & Infra', items: ['AWS', 'Docker', 'Kubernetes', 'Ansible', 'CI/CD'] },
{ label: 'ML & Observability', items: ['PyTorch', 'scikit-learn', 'ELK', 'Grafana', 'Prometheus'] },
{ label: 'Credentials', items: ['M.Eng., UniBw München', 'AWS Solutions Architect Associate', 'iSAQB CPSA-F'] },
]
const CREDENTIALS = [
{
label: 'Education',
items: ['M.Eng., UniBw München', 'Masters thesis at Tongji University, Shanghai'],
},
{
label: 'Certifications',
items: [
'AWS Solutions Architect Associate',
'Data Engineering with AWS (Udacity)',
'IBM AI Engineering (Coursera)',
'AI for Trading (Udacity)',
'iSAQB CPSA-F',
],
},
]
const Tags = ({ items }) =>
@@ -72,6 +88,19 @@ const Tags = ({ items }) =>
</React.Fragment>
))
const StackGroups = ({ groups }) => (
<div className="stack">
{groups.map((group) => (
<div className="group" key={group.label}>
<p className="group__label">{group.label}</p>
<p className="group__tags">
<Tags items={group.items} />
</p>
</div>
))}
</div>
)
const IndexPage = () => (
<Layout>
<Helmet>
@@ -157,16 +186,12 @@ const IndexPage = () => (
<section className="section">
<h2 className="section__label">Stack</h2>
<div className="stack">
{STACK.map((group) => (
<div className="group" key={group.label}>
<p className="group__label">{group.label}</p>
<p className="group__tags">
<Tags items={group.items} />
</p>
</div>
))}
</div>
<StackGroups groups={STACK} />
</section>
<section className="section">
<h2 className="section__label">Credentials</h2>
<StackGroups groups={CREDENTIALS} />
</section>
<section className="section">