{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Ben Monk, Software Developer and AI Engineer",
  "home_page_url": "https://benmonk.dev/",
  "feed_url": "https://benmonk.dev/feed.json",
  "authors": [
    {
      "name": "Ben Monk",
      "url": "https://benmonk.dev/"
    }
  ],
  "items": [
    {
      "id": "https://benmonk.dev/blog/what-an-ai-engineer-actually-does/",
      "url": "https://benmonk.dev/blog/what-an-ai-engineer-actually-does/",
      "title": "What an AI engineer actually does",
      "summary": "The job is less about models than people expect, and far more about the system around them.",
      "date_published": "2026-08-18T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/why-ai-features-fail-in-production/",
      "url": "https://benmonk.dev/blog/why-ai-features-fail-in-production/",
      "title": "Why AI features fail in production",
      "summary": "Most of them do not break for AI reasons. They break for ordinary software reasons nobody was watching for.",
      "date_published": "2026-07-22T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/retrieval-augmented-generation-explained/",
      "url": "https://benmonk.dev/blog/retrieval-augmented-generation-explained/",
      "title": "Retrieval augmented generation, explained without the diagram",
      "summary": "What it is, why it is usually the right first answer, and where it quietly falls apart.",
      "date_published": "2026-06-30T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/how-to-evaluate-llm-output/",
      "url": "https://benmonk.dev/blog/how-to-evaluate-llm-output/",
      "title": "How to evaluate model output without guessing",
      "summary": "You cannot assert equality on a model's answer. Here is what to measure instead.",
      "date_published": "2026-05-26T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/prompting-fine-tuning-or-retrieval/",
      "url": "https://benmonk.dev/blog/prompting-fine-tuning-or-retrieval/",
      "title": "Prompting, fine tuning or retrieval: picking the cheap one first",
      "summary": "Three ways to make a model do what you need, and most teams climb the ladder in the wrong order.",
      "date_published": "2026-04-28T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/building-agents-that-stay-in-their-lane/",
      "url": "https://benmonk.dev/blog/building-agents-that-stay-in-their-lane/",
      "title": "Building agents that stay in their lane",
      "summary": "Loops, drift and unbounded cost. Every agent failure mode is a design decision, not a model limitation.",
      "date_published": "2026-03-24T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/the-real-cost-of-context-windows/",
      "url": "https://benmonk.dev/blog/the-real-cost-of-context-windows/",
      "title": "The real cost of a long context window",
      "summary": "Big windows made it easy to stop thinking about what goes in the prompt. That has a price.",
      "date_published": "2026-02-25T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    },
    {
      "id": "https://benmonk.dev/blog/software-habits-that-survive-ai/",
      "url": "https://benmonk.dev/blog/software-habits-that-survive-ai/",
      "title": "The software habits that survive AI",
      "summary": "Assisted coding changed how fast code appears. It did not change what keeps a system alive.",
      "date_published": "2026-01-27T00:00:00.000Z",
      "tags": [
        "WROTE"
      ]
    }
  ]
}