<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Julien Riel</title>
  <subtitle>Essays, case studies, and technical guides on agentic programming</subtitle>
  <link href="https://julien-riel.com/en/feed.xml" rel="self"/>
  <link href="https://julien-riel.com/en/"/>
  <updated>2026-05-08T00:00:00Z</updated>
  <id>https://julien-riel.com/en/</id>
  <author>
    <name>Julien Riel</name>
  </author>
  <entry>
    <title>What's Really Happening When You Talk to an AI</title>
    <link href="https://julien-riel.com/en/articles/understanding-llms/"/>
    <updated>2026-05-08T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/understanding-llms/</id>
    <summary>Tokens, transformers, context window, system prompt, tools: the conceptual foundations for really understanding how ChatGPT, Claude, or Gemini work. No equations.</summary>
  </entry>
  <entry>
    <title>Context Is Finite. Program Accordingly.</title>
    <link href="https://julien-riel.com/en/articles/context-window/"/>
    <updated>2026-05-08T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/context-window/</id>
    <summary>An inventory of the techniques that fill the window, the phenomena that degrade it, the heuristics to master it. And along the way, the most expensive anti-pattern in production agents.</summary>
  </entry>
  <entry>
    <title>Klarna</title>
    <link href="https://julien-riel.com/en/case-studies/klarna/"/>
    <updated>2026-04-12T00:00:00Z</updated>
    <id>https://julien-riel.com/en/case-studies/klarna/</id>
    <summary>How Klarna's triumphant AI customer-service deployment became a public reversal — and why the hybrid that emerged is the real lesson.</summary>
  </entry>
  <entry>
    <title>Duolingo</title>
    <link href="https://julien-riel.com/en/case-studies/duolingo/"/>
    <updated>2026-04-12T00:00:00Z</updated>
    <id>https://julien-riel.com/en/case-studies/duolingo/</id>
    <summary>How Duolingo used AI to transform the content pipeline, the product, and the business model — and what its three-layer architecture teaches about agentic design.</summary>
  </entry>
  <entry>
    <title>WHOOP Coach</title>
    <link href="https://julien-riel.com/en/case-studies/whoop-coach/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/case-studies/whoop-coach/</id>
    <summary>How WHOOP wove artificial intelligence into every screen of its app — architecture, evaluations, and lessons for agentic system design.</summary>
  </entry>
  <entry>
    <title>Cursor</title>
    <link href="https://julien-riel.com/en/case-studies/cursor/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/case-studies/cursor/</id>
    <summary>How Anysphere built an AI-native code editor by solving three problems simultaneously — latency, context, and suggestion quality.</summary>
  </entry>
  <entry>
    <title>RAG: What It Is and How to Actually Use It</title>
    <link href="https://julien-riel.com/en/articles/rag/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/rag/</id>
    <summary>The full RAG pipeline — chunking, embedding, retrieval, reranking — and the production concerns that separate prototypes from systems that work.</summary>
  </entry>
  <entry>
    <title>Multi-Agent Architectures: When One Agent Isn't Enough</title>
    <link href="https://julien-riel.com/en/articles/multi-agent-architectures/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/multi-agent-architectures/</id>
    <summary>A practical guide to multi-agent patterns — orchestrator-workers, pipelines, ensembles, and swarms — and where they break.</summary>
  </entry>
  <entry>
    <title>Fine-Tuning vs. RAG: When to Teach the Model and When to Show It the Answer</title>
    <link href="https://julien-riel.com/en/articles/fine-tuning-vs-rag/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/fine-tuning-vs-rag/</id>
    <summary>Fine-tuning changes how the model thinks. RAG changes what it sees. A practical decision framework for when to use each — and when to use both.</summary>
  </entry>
  <entry>
    <title>Evals: How to Test Systems That Don't Have Right Answers</title>
    <link href="https://julien-riel.com/en/articles/evals/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/evals/</id>
    <summary>A practical guide to LLM evaluation — code-based checks, LLM-as-a-judge, human review, and how to build an eval suite that catches regressions before they ship.</summary>
  </entry>
  <entry>
    <title>Advanced Prompt Engineering: Beyond the Basics</title>
    <link href="https://julien-riel.com/en/articles/advanced-prompt-engineering/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/articles/advanced-prompt-engineering/</id>
    <summary>Patterns that separate prompts that work in demos from prompts that work in production — context management, structured outputs, few-shot engineering, and version control.</summary>
  </entry>
  <entry>
    <title>97. The Bigger the Project, the More You Need to Stay in Charge</title>
    <link href="https://julien-riel.com/en/posts/97-the-bigger-the-project-the-more-you-need-to-stay-in-charge/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/97-the-bigger-the-project-the-more-you-need-to-stay-in-charge/</id>
    <summary>The temptation scales with the capability.</summary>
  </entry>
  <entry>
    <title>96. Let the Tests Define the Contract, Then Let the Assistant Fill It</title>
    <link href="https://julien-riel.com/en/posts/96-let-the-tests-define-the-contract-then-let-the-assistant-fill-it/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/96-let-the-tests-define-the-contract-then-let-the-assistant-fill-it/</id>
    <summary>Writing tests before implementation isn't just a quality practice in an AI-assisted workflow — it's a communication protocol.</summary>
  </entry>
  <entry>
    <title>95. Keep a Decision Log the Assistant Can Reference</title>
    <link href="https://julien-riel.com/en/posts/95-keep-a-decision-log-the-assistant-can-reference/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/95-keep-a-decision-log-the-assistant-can-reference/</id>
    <summary>Why did you choose this database over the alternatives? Why is the authentication layer structured this way? Why does this module have this interface rather than the more obvious one? If these deci...</summary>
  </entry>
  <entry>
    <title>94. Break the Project into Phases the Assistant Can Complete</title>
    <link href="https://julien-riel.com/en/posts/94-break-the-project-into-phases-the-assistant-can-complete/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/94-break-the-project-into-phases-the-assistant-can-complete/</id>
    <summary>A project described as a single continuous flow is hard to work on with an AI assistant.</summary>
  </entry>
  <entry>
    <title>93. Treat Your CLAUDE.md Like a Hiring Document</title>
    <link href="https://julien-riel.com/en/posts/93-treat-your-claude-md-like-a-hiring-document/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/93-treat-your-claude-md-like-a-hiring-document/</id>
    <summary>Claude Code reads a `CLAUDE.md` file at the start of every session.</summary>
  </entry>
  <entry>
    <title>92. Use Markdown, Not Prose, for Specifications</title>
    <link href="https://julien-riel.com/en/posts/92-use-markdown-not-prose-for-specifications/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/92-use-markdown-not-prose-for-specifications/</id>
    <summary>A specification written as flowing prose is hard to reference, hard to update, and hard to provide as context.</summary>
  </entry>
  <entry>
    <title>91. Let the Assistant Write the Plan, Then Edit It</title>
    <link href="https://julien-riel.com/en/posts/91-let-the-assistant-write-the-plan-then-edit-it/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/91-let-the-assistant-write-the-plan-then-edit-it/</id>
    <summary>When you're starting a substantial piece of work, ask the assistant to write an implementation plan before writing any code.</summary>
  </entry>
  <entry>
    <title>90. Write the Spec Before You Write the Prompt</title>
    <link href="https://julien-riel.com/en/posts/90-write-the-spec-before-you-write-the-prompt/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/90-write-the-spec-before-you-write-the-prompt/</id>
    <summary>For a small task — fix this bug, add this field — the prompt can be the spec.</summary>
  </entry>
  <entry>
    <title>89. Large Projects Need a Document the Assistant Can Always Read</title>
    <link href="https://julien-riel.com/en/posts/89-large-projects-need-a-document-the-assistant-can-always-read/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/89-large-projects-need-a-document-the-assistant-can-always-read/</id>
    <summary>On a small task, the context you need fits in a prompt.</summary>
  </entry>
  <entry>
    <title>88. Use the Assistant to Pressure-Test Your Own Ideas</title>
    <link href="https://julien-riel.com/en/posts/88-use-the-assistant-to-pressure-test-your-own-ideas/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/88-use-the-assistant-to-pressure-test-your-own-ideas/</id>
    <summary>Before you commit to an implementation approach, describe it to the assistant and ask what could go wrong.</summary>
  </entry>
  <entry>
    <title>87. Tell the Assistant What to Preserve, Not Just What to Change</title>
    <link href="https://julien-riel.com/en/posts/87-tell-the-assistant-what-to-preserve-not-just-what-to-change/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/87-tell-the-assistant-what-to-preserve-not-just-what-to-change/</id>
    <summary>Every prompt implicitly asks the assistant to optimize for the goal you stated.</summary>
  </entry>
  <entry>
    <title>86. Break Large Tasks into Prompts, Not Just Steps</title>
    <link href="https://julien-riel.com/en/posts/86-break-large-tasks-into-prompts-not-just-steps/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/86-break-large-tasks-into-prompts-not-just-steps/</id>
    <summary>A prompt asking for five hundred lines of code is asking the assistant to make dozens of design decisions without knowing which ones you've already made, which ones are constrained by the rest of t...</summary>
  </entry>
  <entry>
    <title>85. When the Output Is Wrong, Fix the Prompt Before You Fix the Code</title>
    <link href="https://julien-riel.com/en/posts/85-when-the-output-is-wrong-fix-the-prompt-before-you-fix-the-code/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/85-when-the-output-is-wrong-fix-the-prompt-before-you-fix-the-code/</id>
    <summary>When the assistant produces code that isn't quite right, the instinct is to edit the code directly — it's faster, it's familiar, it produces the result you need immediately.</summary>
  </entry>
  <entry>
    <title>84. Show the Assistant What Good Looks Like in Your Codebase</title>
    <link href="https://julien-riel.com/en/posts/84-show-the-assistant-what-good-looks-like-in-your-codebase/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/84-show-the-assistant-what-good-looks-like-in-your-codebase/</id>
    <summary>Abstract instructions produce generic code.</summary>
  </entry>
  <entry>
    <title>83. Start Your Prompt with the Outcome, Not the Method</title>
    <link href="https://julien-riel.com/en/posts/83-start-your-prompt-with-the-outcome-not-the-method/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/83-start-your-prompt-with-the-outcome-not-the-method/</id>
    <summary>\&quot;Refactor this function\&quot; is a method instruction.</summary>
  </entry>
  <entry>
    <title>82. An AI Pair Programmer Has No Ego — Use That</title>
    <link href="https://julien-riel.com/en/posts/82-an-ai-pair-programmer-has-no-ego-use-that/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/82-an-ai-pair-programmer-has-no-ego-use-that/</id>
    <summary>Human pair programming is valuable and comes with friction.</summary>
  </entry>
  <entry>
    <title>81. Context Is a Skill You Can Improve</title>
    <link href="https://julien-riel.com/en/posts/81-context-is-a-skill-you-can-improve/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/81-context-is-a-skill-you-can-improve/</id>
    <summary>Knowing what context to provide — and how to provide it — is the most leveraged skill in working with an AI coding assistant.</summary>
  </entry>
  <entry>
    <title>80. Don't Let the Assistant Drive the Architecture</title>
    <link href="https://julien-riel.com/en/posts/80-dont-let-the-assistant-drive-the-architecture/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/80-dont-let-the-assistant-drive-the-architecture/</id>
    <summary>The assistant is excellent at implementing decisions.</summary>
  </entry>
  <entry>
    <title>79. The Best Use of an AI Assistant Is the Task You Were About to Skip</title>
    <link href="https://julien-riel.com/en/posts/79-the-best-use-of-an-ai-assistant-is-the-task-you-were-about-to-skip/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/79-the-best-use-of-an-ai-assistant-is-the-task-you-were-about-to-skip/</id>
    <summary>Every codebase has work that everyone knows should be done and nobody does.</summary>
  </entry>
  <entry>
    <title>78. Commit Often, So You Have Somewhere to Return To</title>
    <link href="https://julien-riel.com/en/posts/78-commit-often-so-you-have-somewhere-to-return-to/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/78-commit-often-so-you-have-somewhere-to-return-to/</id>
    <summary>Working with an AI coding assistant changes the rhythm of development.</summary>
  </entry>
  <entry>
    <title>77. Use It to Understand, Not Just to Produce</title>
    <link href="https://julien-riel.com/en/posts/77-use-it-to-understand-not-just-to-produce/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/77-use-it-to-understand-not-just-to-produce/</id>
    <summary>The most underused capability of an AI coding assistant isn't code generation — it's explanation.</summary>
  </entry>
  <entry>
    <title>76. The Assistant Doesn't Know Your Codebase Unless You Show It</title>
    <link href="https://julien-riel.com/en/posts/76-the-assistant-doesnt-know-your-codebase-unless-you-show-it/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/76-the-assistant-doesnt-know-your-codebase-unless-you-show-it/</id>
    <summary>Every session starts fresh.</summary>
  </entry>
  <entry>
    <title>75. Read Every Line It Writes</title>
    <link href="https://julien-riel.com/en/posts/75-read-every-line-it-writes/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/75-read-every-line-it-writes/</id>
    <summary>The speed of generation is the trap.</summary>
  </entry>
  <entry>
    <title>74. Give the Assistant Your Constraints, Not Just Your Requirements</title>
    <link href="https://julien-riel.com/en/posts/74-give-the-assistant-your-constraints-not-just-your-requirements/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/74-give-the-assistant-your-constraints-not-just-your-requirements/</id>
    <summary>\&quot;Write a function that parses this config file\&quot; produces something.</summary>
  </entry>
  <entry>
    <title>73. Your IDE Is Now a Conversation</title>
    <link href="https://julien-riel.com/en/posts/73-your-ide-is-now-a-conversation/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/73-your-ide-is-now-a-conversation/</id>
    <summary>The developers who get the least out of AI coding assistants are the ones who use them like autocomplete — they wait for a suggestion, accept it or reject it, and move on.</summary>
  </entry>
  <entry>
    <title>72. The First Version Should Be Embarrassingly Simple</title>
    <link href="https://julien-riel.com/en/posts/72-the-first-version-should-be-embarrassingly-simple/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/72-the-first-version-should-be-embarrassingly-simple/</id>
    <summary>Every lasting principle in software has a version of this at its core.</summary>
  </entry>
  <entry>
    <title>71. Build for the Agent You Have, Not the Agent You Wish You Had</title>
    <link href="https://julien-riel.com/en/posts/71-build-for-the-agent-you-have-not-the-agent-you-wish-you-had/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/71-build-for-the-agent-you-have-not-the-agent-you-wish-you-had/</id>
    <summary>Every developer working with agents has a gap between the current capabilities of the tools they're using and the capabilities they wish those tools had.</summary>
  </entry>
  <entry>
    <title>70. Don't Mistake Fluency for Understanding</title>
    <link href="https://julien-riel.com/en/posts/70-dont-mistake-fluency-for-understanding/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/70-dont-mistake-fluency-for-understanding/</id>
    <summary>You can become fluent with agentic systems without understanding them.</summary>
  </entry>
  <entry>
    <title>69. The Field Rewards Generalists Who Go Deep on One Thing</title>
    <link href="https://julien-riel.com/en/posts/69-the-field-rewards-generalists-who-go-deep-on-one-thing/"/>
    <updated>2026-04-09T00:00:00Z</updated>
    <id>https://julien-riel.com/en/posts/69-the-field-rewards-generalists-who-go-deep-on-one-thing/</id>
    <summary>Agentic programming sits at the intersection of software engineering, system design, language and communication, domain expertise, and product thinking.</summary>
  </entry>
</feed>
