--- import Layout from "../../layouts/Layout.astro"; import Section from "../../components/Section.astro"; import PostList from "../../components/PostList.astro"; import { getPosts, allTags, formatDate } from "../../lib/blog"; import { readingTime } from "../../lib/reading"; import { series } from "../../data/series"; import { site } from "../../data/site"; const posts = await getPosts(); const tags = allTags(posts); // Featured = the security-series opener when present, else the newest post. const featured = posts.find((p) => p.id === "secret-zero") ?? posts[0]; const rest = posts.filter((p) => p.id !== featured.id); const featuredSeries = series[featured.id]; --- Lessons from edge Kubernetes, GPUs, and running infrastructure like it matters. {tags.length > 0 && ( tags: {tags.map((t) => ( {t} ))} )} {featured && ( {featuredSeries && ( {featuredSeries.name} · {String(featuredSeries.number).padStart(2, "0")} )} {formatDate(featured.data.date)} · {readingTime(featured.body)} {featured.data.title} {featured.data.summary} {featured.data.tags.map((t) => ( {t} ))} Read the post → {featured.data.hero && ( )} )}
Lessons from edge Kubernetes, GPUs, and running infrastructure like it matters.
{featured.data.summary}