Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions src/components/BookCta.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,23 @@ import coverImage from '../../assets/img/open-and-async-cover.webp';

interface Props {
variant?: 'inline' | 'featured';
// Marketing hook for posts that came from the manuscript: 'adapted' (a version
// appears in the book) or 'cut' (didn't make the final cut). Swaps the inline
// headline; both read true before and after launch, so no staleness at launch.
relation?: 'adapted' | 'cut' | undefined;
}

const { variant = 'inline' } = Astro.props;
const { variant = 'inline', relation } = Astro.props;

// Explicit, launch-safe headline for the inline variant. Stating the book
// lineage is itself the marketing win: "adapted" signals depth, "cut" signals
// there's more where this came from.
const inlineHeadline =
relation === 'adapted'
? 'This post is adapted from the book.'
: relation === 'cut'
? "This post didn't make the book's final cut."
: "Like this post? It's becoming a book.";

// Colorize the ampersand with the site's signature lime→pink gradient.
// Consume surrounding spaces so mx-1 controls the total whitespace (natural
Expand Down Expand Up @@ -97,7 +111,7 @@ const commitGraphPaths = `
<span aria-hidden="true">&gt;</span> Coming {siteConfig.bookLaunch}
</p>
<p class="text-sm font-semibold text-white mb-1">
Like this post? It's becoming a book.
{inlineHeadline}
</p>
<a
href={siteConfig.bookUrl}
Expand Down
1 change: 1 addition & 0 deletions src/content.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ const postsCollection = defineCollection({
// Post metadata
image: z.string().optional(), // Open Graph image
hideBookCta: z.boolean().default(false), // Suppress the auto-appended BookCta (e.g. the launch post supplies its own BookLaunchCta)
bookRelation: z.enum(['adapted', 'cut']).optional(), // Post came from the manuscript: swaps the BookCta headline ('adapted' from a chapter, or 'cut' from the final book)

// SEO metadata
sitemap: z.boolean().default(true), // Include in sitemap by default
Expand Down
1 change: 1 addition & 0 deletions src/content/posts/2026-04-06-no-agenda-no-meeting.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: No agenda, no meeting
bookRelation: cut
description: Announcing noagendanomeeting.net — a single-page site advocating that every meeting deserves an agenda, and most meetings deserve to be a document instead.
---

Expand Down
1 change: 1 addition & 0 deletions src/content/posts/2026-04-27-one-on-one-playbook.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: "How to one-on-one"
bookRelation: cut
description: "Most 1:1s waste your team's only protected synchronous time on status updates. Here's how to run ones worth showing up for."
tldr: "Stop using 1:1s for status updates. Prep async, focus on career growth, coaching, feedback, and human connection, and protect the time like it matters—because it does."
---
Expand Down
1 change: 1 addition & 0 deletions src/content/posts/2026-04-27-the-brag-doc.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: The brag doc
bookRelation: cut
description: "Why you need a running record of your wins—and how to keep one without dying of embarrassment"
tldr: "Nobody's compiling your stats for you. Keep a ship log of your impact, update it weekly, and use it to fight recency bias, ace self-assessments, and build your promotion case."
---
Expand Down
1 change: 1 addition & 0 deletions src/content/posts/2026-06-07-reorgs-happen.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Reorgs happen
bookRelation: cut
description: "In thirteen years at GitHub I was part of 25 reorgs—almost one every six months. Reorgs are a constant in tech, not a crisis. Here's how to navigate them."
tldr: "Twenty-five reorgs in thirteen years taught me that reorgs are baseline, not exception. Don't panic, re-onboard yourself, reset with your new manager, and treat the shuffle as a chance to renegotiate your scope. Optimize for what persists: reputation, relationships, and the work itself."
---
Expand Down
4 changes: 3 additions & 1 deletion src/layouts/PostLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ interface Props {
nextPost?: { title: string; url: string; readingTime?: number } | undefined;
archived?: boolean;
hideBookCta?: boolean;
bookRelation?: 'adapted' | 'cut';
robots?: string | undefined;
postId: string;
postFilePath?: string | undefined;
Expand All @@ -63,6 +64,7 @@ const {
nextPost,
archived = false,
hideBookCta = false,
bookRelation,
robots,
postId,
postFilePath,
Expand Down Expand Up @@ -141,7 +143,7 @@ const blogPostingSchema = pubDate ? generateBlogPostingSchema({

<ReadingProgress readingTime={readingTime} />

{!hideBookCta && <BookCta />}
{!hideBookCta && <BookCta relation={bookRelation} />}

{pubDate && (
<div class="mt-12 border-t border-gray-200 dark:border-gray-700 py-5 flex flex-wrap items-center justify-between gap-x-3 gap-y-3 text-sm text-gray-600 dark:text-gray-300" data-pagefind-ignore>
Expand Down
1 change: 1 addition & 0 deletions src/pages/[year]/[month]/[day]/[slug].astro
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ const nextPost = nextEntry ? { title: nextEntry.data.title, url: getPostUrl(next
nextPost={nextPost}
archived={post.data.archived}
hideBookCta={post.data.hideBookCta}
bookRelation={post.data.bookRelation}
robots={post.data.robots}
postId={post.id}
postFilePath={post.filePath}
Expand Down
Loading