{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/steipete-me/2025-09-06-live-coding-session-building-arena/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "![](https://steipete.me/assets/img/2025/live-coding-session-building-arena/hero.png)\n\n**tl;dr: I built and shipped a brand-new feature live (in ~1 hour), watch how I approach agentic engineering with codex**\n\nJoin me for an unfiltered look at building Arena - a live coding session where you can see my development process in action, unscripted. Thanks to Eleanor Berger for motivating me to do this video and for organizing the live event!\n\n[YouTube video player](https://www.youtube.com/watch?v=68BS5GCRcBo)\n\n## What we built\n\n🤖 Heads up! This is an AI-Assisted summary.\n\n- **Feature:** *Arena* — a new feature in my upcoming project, to see how well 2–4 users from X match\n- **Input:** Twitter/X user handles\n- **Pipeline:** fetch N tweets per user (shares a 1,000-tweet budget), strip to necessary fields, run profile analysis, then **score compatibility** (per pair + whole team)\n- **UX:** user picker + “Analyze” button, results table, cached runs selectable under the search box\n- **Infra touches:** DB migration for `arena_cache`, long-running job in the background, streaming UI, auth-guarded page\n\nI managed to complete the feature in ~1h, and we got a **pair score of 89** for me and [@intellectronica](https://x.com/intellectronica).\n\n## Stack & Setup\n\n- **Model workflow:** codex (OpenAI/GPT-5) for coding sessions; it eagerly **reads the codebase** and generally “does the right thing” without handheld file lists. I keep a separate Claude-style flow for some web searching, but for repo work codex is the star.\n\n- **Sessions:** start *fresh* for big features, run **multiple agent windows** in parallel; switch tasks while one is thinking.\n\n- **Branching:** work **directly on `main`** with **atomic commits**. Merge conflicts + worktrees cost speed; small, well-scoped commits keep things safe.\n\n- **Tooling:**\n\n  - **Ghostty** for terminals, split panes with agents\n  - **Better Stack** logging via a tiny [**`bslog`**](https://github.com/steipete/bslog) CLI\n  - An **`xl`** CLI (`curl` wrapper) for quick X API pulls\n  - Strict **biome** rules + custom codemods to normalize output\n  - **Background worker** for long jobs ([Inngest](https://www.inngest.com/))\n  - **Cache table** to avoid recompute\n- **Docs ingestion:** pull only what’s needed, prefer **markdown** via a crawler over raw HTML to save tokens.\n\n- **Validation:** schema validation on inputs; fail fast and surface helpful messages.\n\n## Tactics that mattered\n\n- **Keep the agent context clean.** Minimize tool noise and only inject docs when needed; markdown > HTML to conserve context.\n- **Let codex plan on demand.** It proposes next steps that are usually solid; green-light them in sequence.\n- **Cache long tasks early.** Add a table + background job queue before you polish UI; this saves you from re-running expensive analysis.\n- **Copy-paste errors verbatim.** Don’t over-explain; just drop logs in and let the agent fix what broke.\n- **Comments as spec.** Ask for clear intent comments near tricky code; they’re for you and for the agent on the next session.\n- **Write tests afterwards, not first.** These agents are great at back-filling tests once the shape exists, and that’s usually enough to catch regressions.\n- **Work on `main`, commit surgically.** You still get speed with safety. Backups + Git are your safety net.\n- **Avoid local models for this workload.** Context and stability matter more than shaving milliseconds.\n- **CLIs beat MCPs.** A 2-hour CLI wrapper (logs, API pulls) pays for itself and keeps context small.\n- **Small “proof” projects unblock big features.** If streaming or a protocol is hard, build a tiny in-repo example that works, then transplant.\n\n## Q&A highlights\n\n- **Why Codex over Claude Code?** Codex actually **reads more of the repo** without handholding; requires fewer “look here, then there” hints. Claude still useful for search/web, but for coding Codex felt faster end-to-end.\n- **Do you branch?** Not for features at this stage. **Main + disciplined commits** is faster and - counterintuitively - safer for rapid iteration.\n- **Manual approvals for agent actions?** No. That becomes “Windows Vista prompts.” Use Git + backups; review diffs; move fast.\n- **Repo prompts & MCP servers?** Nice idea, but they bloat context and introduce fragility. **Lean instructions + small CLIs** work better.\n- **Compaction & long sessions?** Plan features to **fit the context**. If you expect many loops (e.g., test repairs), use the flow that compacts well - or split the task.\n\nIf you want to read more about my agent workflow, check [my AI development post here](https://steipete.me/posts/2025/optimal-ai-development-workflow).\n\nFor more advanced prompting techniques with GPT-5, also check out the [OpenAI GPT-5 Prompting Guide](https://cookbook.openai.com/examples/gpt-5/gpt-5_prompting_guide).\n\nNew posts, shipping stories, and nerdy links straight to your inbox.\n\n2× per month, pure signal, zero fluff.\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://steipete.me/assets/img/2025/live-coding-session-building-arena/hero.png\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>tl;dr: I built and shipped a brand-new feature live (in ~1 hour), watch how I approach agentic engineering with codex</strong></p>\n<p>Join me for an unfiltered look at building Arena - a live coding session where you can see my development process in action, unscripted. Thanks to Eleanor Berger for motivating me to do this video and for organizing the live event!</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=68BS5GCRcBo\">YouTube video player</a></p>\n<h2>What we built</h2>\n<p>🤖 Heads up! This is an AI-Assisted summary.</p>\n<ul>\n<li><strong>Feature:</strong> <em>Arena</em> — a new feature in my upcoming project, to see how well 2–4 users from X match</li>\n<li><strong>Input:</strong> Twitter/X user handles</li>\n<li><strong>Pipeline:</strong> fetch N tweets per user (shares a 1,000-tweet budget), strip to necessary fields, run profile analysis, then <strong>score compatibility</strong> (per pair + whole team)</li>\n<li><strong>UX:</strong> user picker + “Analyze” button, results table, cached runs selectable under the search box</li>\n<li><strong>Infra touches:</strong> DB migration for <code>arena_cache</code>, long-running job in the background, streaming UI, auth-guarded page</li>\n</ul>\n<p>I managed to complete the feature in ~1h, and we got a <strong>pair score of 89</strong> for me and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/intellectronica\">@intellectronica</a>.</p>\n<h2>Stack &amp; Setup</h2>\n<ul>\n<li>\n<p><strong>Model workflow:</strong> codex (OpenAI/GPT-5) for coding sessions; it eagerly <strong>reads the codebase</strong> and generally “does the right thing” without handheld file lists. I keep a separate Claude-style flow for some web searching, but for repo work codex is the star.</p>\n</li>\n<li>\n<p><strong>Sessions:</strong> start <em>fresh</em> for big features, run <strong>multiple agent windows</strong> in parallel; switch tasks while one is thinking.</p>\n</li>\n<li>\n<p><strong>Branching:</strong> work <strong>directly on <code>main</code></strong> with <strong>atomic commits</strong>. Merge conflicts + worktrees cost speed; small, well-scoped commits keep things safe.</p>\n</li>\n<li>\n<p><strong>Tooling:</strong></p>\n<ul>\n<li><strong>Ghostty</strong> for terminals, split panes with agents</li>\n<li><strong>Better Stack</strong> logging via a tiny <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/steipete/bslog\"><strong><code>bslog</code></strong></a> CLI</li>\n<li>An <strong><code>xl</code></strong> CLI (<code>curl</code> wrapper) for quick X API pulls</li>\n<li>Strict <strong>biome</strong> rules + custom codemods to normalize output</li>\n<li><strong>Background worker</strong> for long jobs (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.inngest.com/\">Inngest</a>)</li>\n<li><strong>Cache table</strong> to avoid recompute</li>\n</ul>\n</li>\n<li>\n<p><strong>Docs ingestion:</strong> pull only what’s needed, prefer <strong>markdown</strong> via a crawler over raw HTML to save tokens.</p>\n</li>\n<li>\n<p><strong>Validation:</strong> schema validation on inputs; fail fast and surface helpful messages.</p>\n</li>\n</ul>\n<h2>Tactics that mattered</h2>\n<ul>\n<li><strong>Keep the agent context clean.</strong> Minimize tool noise and only inject docs when needed; markdown &gt; HTML to conserve context.</li>\n<li><strong>Let codex plan on demand.</strong> It proposes next steps that are usually solid; green-light them in sequence.</li>\n<li><strong>Cache long tasks early.</strong> Add a table + background job queue before you polish UI; this saves you from re-running expensive analysis.</li>\n<li><strong>Copy-paste errors verbatim.</strong> Don’t over-explain; just drop logs in and let the agent fix what broke.</li>\n<li><strong>Comments as spec.</strong> Ask for clear intent comments near tricky code; they’re for you and for the agent on the next session.</li>\n<li><strong>Write tests afterwards, not first.</strong> These agents are great at back-filling tests once the shape exists, and that’s usually enough to catch regressions.</li>\n<li><strong>Work on <code>main</code>, commit surgically.</strong> You still get speed with safety. Backups + Git are your safety net.</li>\n<li><strong>Avoid local models for this workload.</strong> Context and stability matter more than shaving milliseconds.</li>\n<li><strong>CLIs beat MCPs.</strong> A 2-hour CLI wrapper (logs, API pulls) pays for itself and keeps context small.</li>\n<li><strong>Small “proof” projects unblock big features.</strong> If streaming or a protocol is hard, build a tiny in-repo example that works, then transplant.</li>\n</ul>\n<h2>Q&amp;A highlights</h2>\n<ul>\n<li><strong>Why Codex over Claude Code?</strong> Codex actually <strong>reads more of the repo</strong> without handholding; requires fewer “look here, then there” hints. Claude still useful for search/web, but for coding Codex felt faster end-to-end.</li>\n<li><strong>Do you branch?</strong> Not for features at this stage. <strong>Main + disciplined commits</strong> is faster and - counterintuitively - safer for rapid iteration.</li>\n<li><strong>Manual approvals for agent actions?</strong> No. That becomes “Windows Vista prompts.” Use Git + backups; review diffs; move fast.</li>\n<li><strong>Repo prompts &amp; MCP servers?</strong> Nice idea, but they bloat context and introduce fragility. <strong>Lean instructions + small CLIs</strong> work better.</li>\n<li><strong>Compaction &amp; long sessions?</strong> Plan features to <strong>fit the context</strong>. If you expect many loops (e.g., test repairs), use the flow that compacts well - or split the task.</li>\n</ul>\n<p>If you want to read more about my agent workflow, check <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://steipete.me/posts/2025/optimal-ai-development-workflow\">my AI development post here</a>.</p>\n<p>For more advanced prompting techniques with GPT-5, also check out the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cookbook.openai.com/examples/gpt-5/gpt-5_prompting_guide\">OpenAI GPT-5 Prompting Guide</a>.</p>\n<p>New posts, shipping stories, and nerdy links straight to your inbox.</p>\n<p>2× per month, pure signal, zero fluff.</p>\n",
  "content_markdown": "![](https://steipete.me/assets/img/2025/live-coding-session-building-arena/hero.png)\n\n**tl;dr: I built and shipped a brand-new feature live (in ~1 hour), watch how I approach agentic engineering with codex**\n\nJoin me for an unfiltered look at building Arena - a live coding session where you can see my development process in action, unscripted. Thanks to Eleanor Berger for motivating me to do this video and for organizing the live event!\n\n[YouTube video player](https://www.youtube.com/watch?v=68BS5GCRcBo)\n\n## What we built\n\n🤖 Heads up! This is an AI-Assisted summary.\n\n- **Feature:** *Arena* — a new feature in my upcoming project, to see how well 2–4 users from X match\n- **Input:** Twitter/X user handles\n- **Pipeline:** fetch N tweets per user (shares a 1,000-tweet budget), strip to necessary fields, run profile analysis, then **score compatibility** (per pair + whole team)\n- **UX:** user picker + “Analyze” button, results table, cached runs selectable under the search box\n- **Infra touches:** DB migration for `arena_cache`, long-running job in the background, streaming UI, auth-guarded page\n\nI managed to complete the feature in ~1h, and we got a **pair score of 89** for me and [@intellectronica](https://x.com/intellectronica).\n\n## Stack & Setup\n\n- **Model workflow:** codex (OpenAI/GPT-5) for coding sessions; it eagerly **reads the codebase** and generally “does the right thing” without handheld file lists. I keep a separate Claude-style flow for some web searching, but for repo work codex is the star.\n\n- **Sessions:** start *fresh* for big features, run **multiple agent windows** in parallel; switch tasks while one is thinking.\n\n- **Branching:** work **directly on `main`** with **atomic commits**. Merge conflicts + worktrees cost speed; small, well-scoped commits keep things safe.\n\n- **Tooling:**\n\n  - **Ghostty** for terminals, split panes with agents\n  - **Better Stack** logging via a tiny [**`bslog`**](https://github.com/steipete/bslog) CLI\n  - An **`xl`** CLI (`curl` wrapper) for quick X API pulls\n  - Strict **biome** rules + custom codemods to normalize output\n  - **Background worker** for long jobs ([Inngest](https://www.inngest.com/))\n  - **Cache table** to avoid recompute\n- **Docs ingestion:** pull only what’s needed, prefer **markdown** via a crawler over raw HTML to save tokens.\n\n- **Validation:** schema validation on inputs; fail fast and surface helpful messages.\n\n## Tactics that mattered\n\n- **Keep the agent context clean.** Minimize tool noise and only inject docs when needed; markdown > HTML to conserve context.\n- **Let codex plan on demand.** It proposes next steps that are usually solid; green-light them in sequence.\n- **Cache long tasks early.** Add a table + background job queue before you polish UI; this saves you from re-running expensive analysis.\n- **Copy-paste errors verbatim.** Don’t over-explain; just drop logs in and let the agent fix what broke.\n- **Comments as spec.** Ask for clear intent comments near tricky code; they’re for you and for the agent on the next session.\n- **Write tests afterwards, not first.** These agents are great at back-filling tests once the shape exists, and that’s usually enough to catch regressions.\n- **Work on `main`, commit surgically.** You still get speed with safety. Backups + Git are your safety net.\n- **Avoid local models for this workload.** Context and stability matter more than shaving milliseconds.\n- **CLIs beat MCPs.** A 2-hour CLI wrapper (logs, API pulls) pays for itself and keeps context small.\n- **Small “proof” projects unblock big features.** If streaming or a protocol is hard, build a tiny in-repo example that works, then transplant.\n\n## Q&A highlights\n\n- **Why Codex over Claude Code?** Codex actually **reads more of the repo** without handholding; requires fewer “look here, then there” hints. Claude still useful for search/web, but for coding Codex felt faster end-to-end.\n- **Do you branch?** Not for features at this stage. **Main + disciplined commits** is faster and - counterintuitively - safer for rapid iteration.\n- **Manual approvals for agent actions?** No. That becomes “Windows Vista prompts.” Use Git + backups; review diffs; move fast.\n- **Repo prompts & MCP servers?** Nice idea, but they bloat context and introduce fragility. **Lean instructions + small CLIs** work better.\n- **Compaction & long sessions?** Plan features to **fit the context**. If you expect many loops (e.g., test repairs), use the flow that compacts well - or split the task.\n\nIf you want to read more about my agent workflow, check [my AI development post here](https://steipete.me/posts/2025/optimal-ai-development-workflow).\n\nFor more advanced prompting techniques with GPT-5, also check out the [OpenAI GPT-5 Prompting Guide](https://cookbook.openai.com/examples/gpt-5/gpt-5_prompting_guide).\n\nNew posts, shipping stories, and nerdy links straight to your inbox.\n\n2× per month, pure signal, zero fluff.\n",
  "dateCreated": "2026-09-27T19:29:15.293681927+00:00",
  "date_created": "2025-09-06T10:00:00+00:00",
  "date_modified": "2025-09-06T10:00:00+00:00",
  "date_published": "2025-09-06T10:00:00+00:00",
  "description": "Watch me build Arena live - a real-time collaborative coding session exploring AI-powered development workflows.",
  "external_url": "https://steipete.me/posts/2025/live-coding-session-building-arena/",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/steipete-me/2025/09/2025-09-06-live-coding-session-building-arena.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/steipete-me/2025/09/2025-09-06-live-coding-session-building-arena.md"
  },
  "id": "urn:aggr:item:e754b379b061a16b023a736802b1ef1a2b39497b",
  "isBasedOn": {
    "@id": "https://steipete.me/posts/2025/live-coding-session-building-arena/"
  },
  "mainEntity": {
    "@id": "https://steipete.me/posts/2025/live-coding-session-building-arena/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/steipete-me/2025-09-06-live-coding-session-building-arena/#webpage"
    },
    "dateModified": "2025-09-06T10:00:00+00:00",
    "datePublished": "2025-09-06T10:00:00+00:00",
    "headline": "Live Coding Session: Building Arena",
    "timeRequired": "PT4M",
    "url": "https://steipete.me/posts/2025/live-coding-session-building-arena/",
    "wordCount": 704
  },
  "name": "Archived snapshot: Live Coding Session: Building Arena",
  "preview": null,
  "reading_minutes": 4,
  "replicated_at": null,
  "source": "steipete-me",
  "source_name": "Peter Steinberger",
  "summary": "Watch me build Arena live - a real-time collaborative coding session exploring AI-powered development workflows.",
  "tags": [],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "Live Coding Session: Building Arena",
  "url": "https://aggr.aymericbeaumet.com/items/steipete-me/2025-09-06-live-coding-session-building-arena/",
  "word_count": 704
}