Skip to content
Draft
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# kylecesmat.com

Personal site. Stack lives on the Cloudflare/Astro PR. **About copy is editable MDX** at `src/pages/about.mdx`.
Personal site. Visual tone is quiet editorial (attardi.org / nickbytes), not a metrics dashboard. **About copy** is editable MDX at `src/pages/about.mdx` — do not rewrite it in layout PRs.

## Stack

Expand Down
31 changes: 31 additions & 0 deletions src/components/ProofCard.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
import type { ProofCardData } from '@/data/proof';

interface Props {
card: ProofCardData;
}

const { card } = Astro.props;
---

<article class="proof-block" data-proof-id={card.id}>
<h3>{card.title}</h3>
{card.summary ? <p class="proof-block__summary">{card.summary}</p> : null}
<ul class="proof-block__metrics">
{
card.metrics.map((metric) => (
<li>
<span
class:list={['metric', metric.redactable && 'metric--redactable']}
title={metric.redactable ? 'Placeholder metric — may redact' : undefined}
>
{metric.label}
</span>
</li>
))
}
</ul>
<p class="proof-block__link">
<a href={card.href}>{card.linkLabel}</a>
</p>
</article>
49 changes: 49 additions & 0 deletions src/content.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { defineCollection } from 'astro:content';
import { glob } from 'astro/loaders';
import { z } from 'astro/zod';

const writing = defineCollection({
loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/writing' }),
schema: z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
draft: z.boolean().default(false),
placeholder: z.boolean().default(true),
pillar: z.enum([
'enterprise-cursor-ai-rollout',
'ax-as-product',
'quality-bars',
'paved-roads-codegen-load',
'measuring-ai-productivity',
]),
tags: z.array(z.string()).default([]),
}),
});

const talks = defineCollection({
loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/talks' }),
schema: z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
draft: z.boolean().default(false),
placeholder: z.boolean().default(true),
venue: z.string().optional(),
externalUrl: z.url().optional(),
}),
});

const archive = defineCollection({
loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/archive' }),
schema: z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
kind: z.enum(['project', 'talk']),
venue: z.string().optional(),
externalUrl: z.url().optional(),
}),
});

export const collections = { writing, talks, archive };
8 changes: 8 additions & 0 deletions src/content/archive/ecommerce-replatform.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Global eCommerce Re-Platforming
description: NextJS / GraphQL / Node
date: 2019-10-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
8 changes: 8 additions & 0 deletions src/content/archive/geospatial-ag.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Geospatial Analysis for Agriculture
description: Redux / Mapbox / Flow
date: 2016-11-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
8 changes: 8 additions & 0 deletions src/content/archive/licensing-tool.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Corporate Software Licensing Tool
description: Redux / Node / SQL / Lerna
date: 2018-05-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
8 changes: 8 additions & 0 deletions src/content/archive/medical-tracker.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Medical Outcome Tracker
description: Devops / SVG / Redux
date: 2017-03-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
8 changes: 8 additions & 0 deletions src/content/archive/speedtest-custom.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Speedtest Custom
description: Websocket / Pattern Library / SQL
date: 2016-06-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
8 changes: 8 additions & 0 deletions src/content/archive/speedtest-viz.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Speedtest.net Data Visualization
description: SVG / Redux / Mapbox
date: 2017-07-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
10 changes: 10 additions & 0 deletions src/content/archive/talk-pwa.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Progressive Webapps With ReactJS
description: PHX ReactJS Meetup talk
date: 2017-12-01
kind: talk
venue: PHX ReactJS Meetup
externalUrl: https://github.com/kylecesmat/phxreactjs-progressive-webapps
---

Archived meetup talk.
10 changes: 10 additions & 0 deletions src/content/archive/talk-react-context.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Questionable Decisions w/ React.Context
description: PHX ReactJS Meetup talk
date: 2018-05-01
kind: talk
venue: PHX ReactJS Meetup
externalUrl: https://github.com/kylecesmat/phxreact-context-may-2018
---

Archived meetup talk.
10 changes: 10 additions & 0 deletions src/content/archive/talk-realtime-hooks.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Realtime Data With Hooks
description: PHX ReactJS Meetup talk
date: 2019-02-01
kind: talk
venue: PHX ReactJS Meetup
externalUrl: https://github.com/kylecesmat/phxreact-realtime-hooks
---

Archived meetup talk.
9 changes: 9 additions & 0 deletions src/content/archive/talk-svelte.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Introduction to Svelte
description: PhoenixJS Meetup talk
date: 2019-01-01
kind: talk
venue: PhoenixJS Meetup
---

Archived meetup talk.
8 changes: 8 additions & 0 deletions src/content/archive/trading-terminal.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Realtime Trading Terminal
description: Websocket / Redux / TypeScript
date: 2018-09-01
kind: project
---

Formidable-era consulting project. Details were light because of NDA.
11 changes: 11 additions & 0 deletions src/content/talks/syntax-fm-944.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: 'Is Coinbase Really Writing Half Their Code With AI?'
description: 'Syntax.fm #944 — a conversation about AI coding at scale.'
date: 2026-09-01
placeholder: true
venue: 'Syntax.fm #944'
---

Notes slot for Syntax.fm #944.

Add the episode URL to `externalUrl` in frontmatter when it should link out.
11 changes: 11 additions & 0 deletions src/content/writing/ax-as-product.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: '[TODO: Agent Experience as a product]'
description: '[TODO: empty stub — AX as product]'
date: 2026-01-04
placeholder: true
pillar: ax-as-product
tags:
- ax-as-product
---

Empty stub. Pillar: Agent Experience as a product.
11 changes: 11 additions & 0 deletions src/content/writing/enterprise-cursor-ai-rollout.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: '[TODO: Enterprise Cursor / AI rollout]'
description: '[TODO: empty stub — enterprise Cursor/AI rollout]'
date: 2026-01-05
placeholder: true
pillar: enterprise-cursor-ai-rollout
tags:
- enterprise-cursor-ai-rollout
---

Empty stub. Pillar: enterprise Cursor/AI rollout.
11 changes: 11 additions & 0 deletions src/content/writing/measuring-ai-productivity.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: '[TODO: Measuring AI productivity]'
description: '[TODO: empty stub — measuring AI productivity]'
date: 2026-01-01
placeholder: true
pillar: measuring-ai-productivity
tags:
- measuring-ai-productivity
---

Empty stub. Pillar: measuring AI productivity.
11 changes: 11 additions & 0 deletions src/content/writing/paved-roads-codegen-load.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: '[TODO: Paved roads under codegen load]'
description: '[TODO: empty stub — paved roads under codegen load]'
date: 2026-01-02
placeholder: true
pillar: paved-roads-codegen-load
tags:
- paved-roads-codegen-load
---

Empty stub. Pillar: paved roads under codegen load.
11 changes: 11 additions & 0 deletions src/content/writing/quality-bars.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: '[TODO: Quality bars]'
description: '[TODO: empty stub — quality bars]'
date: 2026-01-03
placeholder: true
pillar: quality-bars
tags:
- quality-bars
---

Empty stub. Pillar: quality bars.
66 changes: 66 additions & 0 deletions src/data/proof.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
export type RedactableMetric = {
label: string;
/** Resume-backed placeholder. Kyle can drop it without a layout change. */
redactable?: boolean;
};

export type ProofCardData = {
id: string;
title: string;
summary?: string;
metrics: RedactableMetric[];
href: string;
linkLabel: string;
};

/** One-paragraph teaser slots. Metrics are placeholders Kyle can redact. */
export const proofTeaser = {
role: 'SEM, Agent Experience @ Coinbase',
slots: [
{ label: 'founded 0→15 across 3 pods', redactable: true },
{ label: 'AI strategy for 2,200+ eng', redactable: true },
{ label: 'enablement 0%→94%', redactable: true },
{ label: 'Syntax.fm', redactable: false },
] satisfies RedactableMetric[],
};

export const proofCards: ProofCardData[] = [
{
id: 'agent-experience-org',
title: 'Agent Experience org',
metrics: [
{ label: '0→15', redactable: true },
{ label: '>30% code change via integrated SDLC tools', redactable: true },
{ label: 'company AI eng strategy', redactable: true },
],
href: '/writing/ax-as-product',
linkLabel: '[TODO: case link]',
},
{
id: 'governed-agent-platform',
title: 'Governed agent platform',
summary: 'Agents, harnesses, sandboxes, MCPs, and skills',
metrics: [
{ label: '~170 MCP servers', redactable: true },
{ label: '~4.8k users', redactable: true },
{ label: '~16k runs/day', redactable: true },
{ label: 'AI review 100% PRs', redactable: true },
{ label: 'merge ~14h→~3.3h', redactable: true },
],
href: '/writing/enterprise-cursor-ai-rollout',
linkLabel: '[TODO: case link]',
},
{
id: 'platform-app-infra',
title: 'Platform / App Infra',
summary: 'Retail Web + Mobile operational excellence',
metrics: [
{ label: 'Code Red errors >98% down', redactable: true },
{ label: 'Buy Flow 26s→2.4s', redactable: true },
{ label: 'Hermes/Expo', redactable: true },
{ label: 'client SLOs', redactable: true },
],
href: '/writing/paved-roads-codegen-load',
linkLabel: '[TODO: case link]',
},
];
21 changes: 21 additions & 0 deletions src/data/talks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
export type Talk = {
id: string;
title: string;
venue: string;
featured?: boolean;
href?: string;
notesHref?: string;
linkLabel?: string;
};

/** Structured talks list. Syntax.fm #944 stays first. */
export const talks: Talk[] = [
{
id: 'syntax-fm-944',
title: 'Is Coinbase Really Writing Half Their Code With AI?',
venue: 'Syntax.fm #944',
featured: true,
notesHref: '/talks/syntax-fm-944',
linkLabel: '[TODO: episode link]',
},
];
Loading
Loading