Replace the single Gatsby page with a dark, terminal-style agent that answers
questions about Dennis's work from one curated knowledge base. There is no
model and no network call, so answers cannot be invented. A plain "Classic
view" and an optional light theme sit one click away.
Site
- Terminal UI (React island): typed answers, tool-call lines, slash commands,
autocomplete, history, deep links, a short /oncall game
- Content focused on what recruiters scan for; personal and employer-internal
details are left out
- No profile photo anywhere, including the new link-preview card and icons
- Corrected facts from the old page (dates, titles, tenses, skill tiers)
Tooling
- Migrate Gatsby 5 to Astro 7 (Node 22.23+); builds in about 1 second
- Self-host fonts, so visitors make no request to third parties
- Link-preview card, favicon set, web manifest and a service-worker clean-up
for returning visitors
- Deploy workflow builds with npm ci on Node 22 and uploads dist/
- Track package-lock.json
Quality
- Tests for routing and for markup injection from visitor input
- A content guard scans every reachable answer; the list of things that must
never be published lives in a git-ignored local file
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Add a quiet mono route line (Munich → Shanghai → Hamburg → Bergen →
Dresden → Bern) above the experience timeline, echoing the pipeline
motif, and a short profile line on working across three countries with a
research stint in Shanghai.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Make the portrait smaller (200px) and tighten the hero columns. Remove
the "Open to new work" status and neutralise the contact copy so nothing
reads as job-seeking; show a plain location in the top bar instead.
Deploy/tooling: drop the unneeded `--force` from the install (verified a
clean --legacy-peer-deps install + gatsby build both pass). Replace
gatsby-plugin-offline with gatsby-plugin-remove-serviceworker to retire
the service worker (fixes stale-cache-after-deploy and removes the
workbox deprecation).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Make the name a quiet heading and let the one-line thesis lead the hero.
Replace the portrait with a center-cropped 4:5 version of the new photo
(downscaled 1.2 MB -> 91 KB) and drop the now-pointless grayscale hover.
Remove em-dashes from copy (restructured prose; en-dashes for year ranges;
mid-dot in the page titles).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the HTML5-UP "Strata" theme with a Swiss-minimal single-page
design (plain CSS, Space Grotesk / Hanken Grotesk / Space Mono). Rewrite
copy for current positioning: Staff Data, Analytics & AI Engineer at
Swisscom, open to new work. Experience shown as a pipeline timeline;
contact simplified to email + LinkedIn (drop the broken form).
Prune unused deps (lightbox, FontAwesome, sass/gatsby-plugin-sass) and
the old SCSS, fonts and gallery assets. Fix package.json metadata.
Harden the Gitea deploy: merge build+deploy into one job (removes the
deprecated artifact upload/download handoff), bump Node 18 -> 20, use
npx gatsby build. Rename .nvrmc -> .nvmrc and refresh the README.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>