-
-
diff --git a/app/composables/useNow.ts b/app/composables/useNow.ts
new file mode 100644
index 0000000..f446108
--- /dev/null
+++ b/app/composables/useNow.ts
@@ -0,0 +1,13 @@
+// Time-dependent UI (e.g. "Upcoming" badges) must render the same on the
+// server and during hydration. The prerender time is shared via the payload,
+// then replaced with the visitor's clock after mount so badges stay correct
+// even when the static build is older than a talk's date.
+export const useNow = () => {
+ const now = useState('now', () => Date.now())
+
+ onMounted(() => {
+ now.value = Date.now()
+ })
+
+ return now
+}
diff --git a/app/error.vue b/app/error.vue
index c8127bd..79d91f9 100644
--- a/app/error.vue
+++ b/app/error.vue
@@ -21,19 +21,15 @@ useSeoMeta({
-
-
-
+
diff --git a/app/utils/labs.ts b/app/utils/labs.ts
index e153870..666478d 100644
--- a/app/utils/labs.ts
+++ b/app/utils/labs.ts
@@ -19,18 +19,15 @@ export type LabEntry = {
note?: string
}
-export const labStatusMap: Record = {
+export const labStatusMap: Record = {
wip: {
- label: 'WIP',
- color: 'warning'
+ label: 'WIP'
},
prototype: {
- label: 'Prototype',
- color: 'info'
+ label: 'Prototype'
},
paused: {
- label: 'Paused',
- color: 'neutral'
+ label: 'Paused'
}
}
diff --git a/content/index.yml b/content/index.yml
index a78eb6f..375d872 100644
--- a/content/index.yml
+++ b/content/index.yml
@@ -6,13 +6,13 @@ description: Staff Agentic Engineer at Cordes & Graefe KG focused on organisatio
hero:
name: Fabian Meyer
role: "Staff Agentic Engineer at Cordes\u00A0&\u00A0Graefe\u00A0KG"
- intro: I am moving Cordes & Graefe to agentic engineering. That means shaping how teams work with agents, building the tooling and workflows that make the change stick, and staying hands-on so the practices hold up in real delivery.
+ intro: I help companies make the move to agentic engineering. That means shaping how teams work with agents, building the tooling and workflows that make the change stick, and staying hands-on so the practices hold up in real delivery.
focus:
title: Focus
description: What I spend time on right now.
items:
- title: Agentic engineering transformation
- description: Moving the organisation to agentic engineering by defining the target way of working, guiding teams through the shift, and making sure adoption shows up as real delivery impact.
+ description: Moving companies to agentic engineering by defining the target way of working, guiding teams through the shift, and making sure adoption shows up as real delivery impact.
- title: Agent-ready tooling and workflows
description: Integrating agents into existing delivery tooling and building spec-driven development workflows that let engineers move from executing process to reviewing outcomes.
- title: Enablement and coaching
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 885d279..c9d71d9 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -45,6 +45,21 @@ export default defineNuxtConfig({
},
hooks: {
+ 'build:manifest'(manifest) {
+ // Talk slides (app/utils/talkAssets.ts) are bundled so their URLs are
+ // hashed, but they are only opened on demand. Without this every page
+ // emits for ~3 MB of PDFs, which competes with
+ // the page's own resources on slow connections and hurts LCP.
+ for (const entry of Object.values(manifest)) {
+ if (entry.file?.endsWith('.pdf')) {
+ entry.prefetch = false
+ entry.preload = false
+ }
+ if (entry.assets) {
+ entry.assets = entry.assets.filter(asset => !asset.endsWith('.pdf'))
+ }
+ }
+ },
'nitro:init'(nitro) {
// Resolve __BASE__ in public/.htaccess.tpl using the runtime base URL
// and write the result to .output/public/.htaccess. Templating happens at
diff --git a/public/hero/random-1.avif b/public/hero/random-1.avif
deleted file mode 100644
index f1f3663..0000000
Binary files a/public/hero/random-1.avif and /dev/null differ
diff --git a/public/hero/random-2.avif b/public/hero/random-2.avif
deleted file mode 100644
index 691e1ea..0000000
Binary files a/public/hero/random-2.avif and /dev/null differ
diff --git a/public/hero/random-3.avif b/public/hero/random-3.avif
deleted file mode 100644
index 1b62e43..0000000
Binary files a/public/hero/random-3.avif and /dev/null differ
diff --git a/public/hero/random-4.avif b/public/hero/random-4.avif
deleted file mode 100644
index 14f24d4..0000000
Binary files a/public/hero/random-4.avif and /dev/null differ
diff --git a/public/hero/random-5.avif b/public/hero/random-5.avif
deleted file mode 100644
index 78a0aa1..0000000
Binary files a/public/hero/random-5.avif and /dev/null differ
diff --git a/public/hero/random-6.avif b/public/hero/random-6.avif
deleted file mode 100644
index 16c95b5..0000000
Binary files a/public/hero/random-6.avif and /dev/null differ
diff --git a/public/hero/random-7.avif b/public/hero/random-7.avif
deleted file mode 100644
index 964eb5a..0000000
Binary files a/public/hero/random-7.avif and /dev/null differ
diff --git a/public/hero/random-8.avif b/public/hero/random-8.avif
deleted file mode 100644
index 2f9a31e..0000000
Binary files a/public/hero/random-8.avif and /dev/null differ
diff --git a/public/hero/random-9.avif b/public/hero/random-9.avif
deleted file mode 100644
index 14ff836..0000000
Binary files a/public/hero/random-9.avif and /dev/null differ