${escapeHtml(meta.summary)}
` : ''} ${linkChips(meta.links)} - ${heroImage(meta, collection.name)} + ${meta.type === 'Personal' ? '' : heroImage(meta, collection.name)} ${markdownToHtml(entry.body)} ${articleDisclosure(isWriting)} ${shareLinks(pageUrl, meta.title)} diff --git a/portfolio/content/writing/builder-platforms-grow-by-owning-the-agent-loop.md b/portfolio/content/writing/builder-platforms-grow-by-owning-the-agent-loop.md index 636213c..93bac1d 100644 --- a/portfolio/content/writing/builder-platforms-grow-by-owning-the-agent-loop.md +++ b/portfolio/content/writing/builder-platforms-grow-by-owning-the-agent-loop.md @@ -11,7 +11,7 @@ shareTitle: Own the Agent Feedback Loop shareSummary: A DevX strategy for making critical developer tasks work across changing models and agent harnesses. shareImageAlt: Social card for Own the Agent Feedback Loop with a compact context, eval, outcome, and distribution loop. tags: ["developer experience", "ai", "evals"] -order: 2 +order: 3 draft: false noindex: false --- diff --git a/portfolio/content/writing/can-i-build-an-ai-agent-that-doesnt-write-slop.md b/portfolio/content/writing/can-i-build-an-ai-agent-that-doesnt-write-slop.md index 05d073e..b96fc22 100644 --- a/portfolio/content/writing/can-i-build-an-ai-agent-that-doesnt-write-slop.md +++ b/portfolio/content/writing/can-i-build-an-ai-agent-that-doesnt-write-slop.md @@ -6,7 +6,7 @@ updated: 2026-08-18 canonical: https://ryanbaumann.dev/writing/can-i-build-an-ai-agent-that-doesnt-write-slop/ aliases: ["/writing/why-i-fine-tuned-a-26b-model-on-my-laptop-instead-of-prompting-frontier-apis/"] tags: ["ai", "evals", "field notes"] -order: 1 +order: 2 draft: false noindex: false image: /img/writing/can-i-build-an-ai-agent-that-doesnt-write-slop-header.svg diff --git a/portfolio/content/writing/devex-is-a-growth-discipline.md b/portfolio/content/writing/devex-is-a-growth-discipline.md index 90c5527..df20a42 100644 --- a/portfolio/content/writing/devex-is-a-growth-discipline.md +++ b/portfolio/content/writing/devex-is-a-growth-discipline.md @@ -12,7 +12,7 @@ shareTitle: DevX Is a Growth Function shareSummary: Docs, code samples, advocacy, tutorials, and even talking to customers all have a limit. Own the friction, ship the fix, distribute the path, and measure the outcome. shareImageAlt: Social preview reading DevX Is a Growth Discipline beside a product, distribution, and measurement loop. tags: ["developer experience", "growth", "ai"] -order: 3 +order: 4 --- Between early 2025 and 2026, our open-source ecosystem more than doubled its unique active users, and API engagement for our open-source client libraries grew strongly. We moved those metrics by treating DevX as a growth discipline, not a documentation queue. Our product, engineering, UX, and technical writing teams treated product, distribution, and measurement as one system, because presence in a workflow is not proof of adoption. diff --git a/portfolio/content/writing/why-we-make-decisions.md b/portfolio/content/writing/why-we-make-decisions.md index e58d9f3..9eeaefe 100644 --- a/portfolio/content/writing/why-we-make-decisions.md +++ b/portfolio/content/writing/why-we-make-decisions.md @@ -6,6 +6,9 @@ summary: AI makes generating options nearly free, which shifts the bottleneck to date: 2026-11-01 updated: 2026-11-01 canonical: https://ryanbaumann.dev/writing/why-we-make-decisions/ +order: 1 +image: /img/writing/why-we-make-decisions.svg +imageAlt: Artifact card reading Personal Field Notes, Why We Decide, and values, principles, and human judgment. socialImage: /social/why-we-make-decisions.jpg shareTitle: Why We Decide Matters More shareSummary: AI makes options cheap, which maxes out judgment fatigue across work and life. Writing down explicit values is how you keep loud defaults from choosing for you. diff --git a/portfolio/static/img/writing/why-we-make-decisions.svg b/portfolio/static/img/writing/why-we-make-decisions.svg new file mode 100644 index 0000000..8c3f144 --- /dev/null +++ b/portfolio/static/img/writing/why-we-make-decisions.svg @@ -0,0 +1,45 @@ + diff --git a/scripts/artifact-cards.mjs b/scripts/artifact-cards.mjs index def58cb..52de72f 100644 --- a/scripts/artifact-cards.mjs +++ b/scripts/artifact-cards.mjs @@ -121,6 +121,13 @@ const CARDS = [ lines: ['official platform context for compatible coding agents'], footer: 'mapsplatform.google.com', }, + { + file: 'writing/why-we-make-decisions.svg', + eyebrow: 'PERSONAL · FIELD NOTES', + title: 'Why We Decide', + lines: ['values · principles · human judgment'], + footer: 'ryanbaumann.dev/writing/why-we-make-decisions', + }, ]; const FLOWS = [ diff --git a/scripts/writer_app.mjs b/scripts/writer_app.mjs index a12d963..e6009b3 100755 --- a/scripts/writer_app.mjs +++ b/scripts/writer_app.mjs @@ -250,7 +250,7 @@ function renderFullArticleHtml(rawMarkdown, collectionName = 'writing', theme = const tagsHtml = Array.isArray(meta.tags) && meta.tags.length ? `` : ''; - const heroHtml = meta.image + const heroHtml = meta.image && meta.type !== 'Personal' ? `