<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
  <title>Riadh Mnasri · Freelance Tech Lead</title>
  <link>https://riadhmnasri.fr/en/blog</link>
  <description>Freelance tech lead: software architecture, applied AI for development, complex systems. Articles, project portfolio and notes.</description>
  <language>en</language>
  <atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="https://riadhmnasri.fr/en/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Agents that run on their own: automating a recurring task with a scheduled agent</title>
      <link>https://riadhmnasri.fr/en/blog/scheduled-agents-automating-a-recurring-task</link>
      <guid>https://riadhmnasri.fr/en/blog/scheduled-agents-automating-a-recurring-task</guid>
      <description>Running an agent unsupervised changes the question you ask: no longer &apos;does it work&apos;, but &apos;what happens the day it doesn&apos;t&apos;.</description>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Building your own Skill: from idea to reusable slash command</title>
      <link>https://riadhmnasri.fr/en/blog/building-your-own-claude-code-skill</link>
      <guid>https://riadhmnasri.fr/en/blog/building-your-own-claude-code-skill</guid>
      <description>A poorly written skill never triggers. Here&apos;s the method I use to turn a repeated habit into a reliable one.</description>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Thread dump: usefulness, how to, and the difference from a heap dump</title>
      <link>https://riadhmnasri.fr/en/blog/thread-dump-usefulness-how-to-and-difference-from-heap-dump</link>
      <guid>https://riadhmnasri.fr/en/blog/thread-dump-usefulness-how-to-and-difference-from-heap-dump</guid>
      <description>A thread dump doesn&apos;t show what&apos;s in memory, it shows what every thread is doing, or waiting for. It&apos;s the tool for a stall, not a leak.</description>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Investigating a JVM stall with a heap dump: capture, read, resolve</title>
      <link>https://riadhmnasri.fr/en/blog/investigating-a-jvm-stall-with-a-heap-dump</link>
      <guid>https://riadhmnasri.fr/en/blog/investigating-a-jvm-stall-with-a-heap-dump</guid>
      <description>A stalled component isn&apos;t always a memory problem, and a heap dump isn&apos;t always the right tool. Here&apos;s how to know which one to reach for, and how to read one correctly once you have it.</description>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Running a coding dojo: choosing a kata and driving it with TDD</title>
      <link>https://riadhmnasri.fr/en/blog/running-a-coding-dojo-choosing-a-kata-and-driving-it-with-tdd</link>
      <guid>https://riadhmnasri.fr/en/blog/running-a-coding-dojo-choosing-a-kata-and-driving-it-with-tdd</guid>
      <description>A dojo isn&apos;t a meeting to ship code, it&apos;s a session to observe how code gets written. The format and the kata determine whether that distinction survives or collapses.</description>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What my MBA at Polytechnique taught me about digital transformation</title>
      <link>https://riadhmnasri.fr/en/blog/what-my-mba-at-polytechnique-taught-me</link>
      <guid>https://riadhmnasri.fr/en/blog/what-my-mba-at-polytechnique-taught-me</guid>
      <description>Twenty years of code teach you how to build a system. The Digital Transformation Strategist program taught me how to decide which one to build, and why.</description>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Swiss pairings: the algorithm behind a tournament&apos;s fairness</title>
      <link>https://riadhmnasri.fr/en/blog/swiss-pairings-the-algorithm-behind-a-tournaments-fairness</link>
      <guid>https://riadhmnasri.fr/en/blog/swiss-pairings-the-algorithm-behind-a-tournaments-fairness</guid>
      <description>Neither a round-robin that would never end, nor a single-elimination bracket that knocks out half the field after one unlucky game: the Swiss system solves a real pairing problem.</description>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Sealed classes: modeling a finite set of cases without a cascade of if/else</title>
      <link>https://riadhmnasri.fr/en/blog/sealed-classes-modeling-a-finite-set-of-cases</link>
      <guid>https://riadhmnasri.fr/en/blog/sealed-classes-modeling-a-finite-set-of-cases</guid>
      <description>A sealed class doesn&apos;t just replace an enum: it turns a forgotten case into a compile error instead of a bug discovered in production.</description>
      <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Apache Spark on Kubernetes and Azure for computing risk indicators</title>
      <link>https://riadhmnasri.fr/en/blog/apache-spark-on-kubernetes-and-azure-for-risk-computation</link>
      <guid>https://riadhmnasri.fr/en/blog/apache-spark-on-kubernetes-and-azure-for-risk-computation</guid>
      <description>Simulating thousands of market scenarios across an entire portfolio, every night, before markets open: the kind of constraint that actually justifies Spark on Kubernetes.</description>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Optimizing token usage with Claude Code and Copilot: what actually works</title>
      <link>https://riadhmnasri.fr/en/blog/optimizing-token-usage-with-claude-and-copilot</link>
      <guid>https://riadhmnasri.fr/en/blog/optimizing-token-usage-with-claude-and-copilot</guid>
      <description>Tokens aren&apos;t just an API bill: a bloated context also degrades response quality. The techniques that make a real difference, day to day.</description>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Kubernetes day to day for a Java developer: what actually matters</title>
      <link>https://riadhmnasri.fr/en/blog/kubernetes-day-to-day-for-a-java-developer</link>
      <guid>https://riadhmnasri.fr/en/blog/kubernetes-day-to-day-for-a-java-developer</guid>
      <description>Not a kubectl tutorial, but the points where Kubernetes and the JVM rub against each other, across GCP, Azure and AWS.</description>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Doing real TDD with Claude Code: the step you must never skip</title>
      <link>https://riadhmnasri.fr/en/blog/real-tdd-with-claude-code</link>
      <guid>https://riadhmnasri.fr/en/blog/real-tdd-with-claude-code</guid>
      <description>TDD isn&apos;t &apos;write tests first&apos;. It&apos;s a precise cycle, with named techniques, that AI makes both easier to follow and easier to unknowingly betray.</description>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Setting your day rate: the method beyond the calculator</title>
      <link>https://riadhmnasri.fr/en/blog/setting-your-day-rate-beyond-the-calculator</link>
      <guid>https://riadhmnasri.fr/en/blog/setting-your-day-rate-beyond-the-calculator</guid>
      <description>A day rate isn&apos;t chosen by looking at the market average. It&apos;s built from what it needs to cover, line by line.</description>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>VaR (Value at Risk): what it measures, and more importantly what it doesn&apos;t</title>
      <link>https://riadhmnasri.fr/en/blog/var-value-at-risk-what-it-measures-and-doesnt</link>
      <guid>https://riadhmnasri.fr/en/blog/var-value-at-risk-what-it-measures-and-doesnt</guid>
      <description>The most widely used market risk metric in banking is also one of the most misunderstood, including by some who cite it.</description>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Schema registry: versioning a Kafka message without breaking existing consumers</title>
      <link>https://riadhmnasri.fr/en/blog/schema-registry-versioning-kafka-without-breaking-consumers</link>
      <guid>https://riadhmnasri.fr/en/blog/schema-registry-versioning-kafka-without-breaking-consumers</guid>
      <description>A Kafka topic decouples services, but the message format stays an implicit contract. A schema registry makes it explicit and verifiable.</description>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How I built this blog with Claude Code</title>
      <link>https://riadhmnasri.fr/en/blog/how-i-built-this-blog-with-claude-code</link>
      <guid>https://riadhmnasri.fr/en/blog/how-i-built-this-blog-with-claude-code</guid>
      <description>An exercise in transparency: this site was designed, redesigned several times, and filled with content in conversation with Claude Code.</description>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Hexagonal architecture in practice</title>
      <link>https://riadhmnasri.fr/en/blog/hexagonal-architecture-in-practice</link>
      <guid>https://riadhmnasri.fr/en/blog/hexagonal-architecture-in-practice</guid>
      <description>Why isolating the business domain from frameworks changes how you design and test a system.</description>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AI is not a code generator, it&apos;s a thinking partner</title>
      <link>https://riadhmnasri.fr/en/blog/ai-as-a-thinking-partner</link>
      <guid>https://riadhmnasri.fr/en/blog/ai-as-a-thinking-partner</guid>
      <description>After more than 20 years of development, it isn&apos;t AI that changed how I code, it&apos;s how I question it.</description>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Agent, harness, skills, hooks: four concepts people mix up</title>
      <link>https://riadhmnasri.fr/en/blog/agent-harness-skills-hooks</link>
      <guid>https://riadhmnasri.fr/en/blog/agent-harness-skills-hooks</guid>
      <description>AI agents are all anyone talks about right now, but four distinct concepts often get blurred together.</description>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>The augmented developer: what Claude Code actually changes day to day</title>
      <link>https://riadhmnasri.fr/en/blog/augmented-developer-claude-code</link>
      <guid>https://riadhmnasri.fr/en/blog/augmented-developer-claude-code</guid>
      <description>Four concrete practices for using an AI CLI tool in a structured, safe and effective way, instead of blind vibe coding.</description>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Living documentation: a Claude Skill that updates itself</title>
      <link>https://riadhmnasri.fr/en/blog/living-documentation-claude-skill</link>
      <guid>https://riadhmnasri.fr/en/blog/living-documentation-claude-skill</guid>
      <description>The problem was never the team&apos;s willingness, it was the cost of updating docs by hand. Here&apos;s how a Claude Skill fixed that.</description>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Counterparty risk, explained to a developer</title>
      <link>https://riadhmnasri.fr/en/blog/counterparty-risk-explained-to-a-developer</link>
      <guid>https://riadhmnasri.fr/en/blog/counterparty-risk-explained-to-a-developer</guid>
      <description>A market finance concept that makes more sense in engineering terms than in formulas.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why TDD isn&apos;t optional when you&apos;re shipping fast</title>
      <link>https://riadhmnasri.fr/en/blog/tdd-under-deadline-pressure</link>
      <guid>https://riadhmnasri.fr/en/blog/tdd-under-deadline-pressure</guid>
      <description>The most common intuition about TDD is also the most wrong: that it slows you down when you&apos;re in a hurry.</description>
      <pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why Kotlin remains my JVM language of choice</title>
      <link>https://riadhmnasri.fr/en/blog/why-kotlin-remains-my-jvm-language-of-choice</link>
      <guid>https://riadhmnasri.fr/en/blog/why-kotlin-remains-my-jvm-language-of-choice</guid>
      <description>Three unrelated projects (a revision app, a counterparty risk library, a tournament engine) share the same language choice, and that&apos;s no coincidence.</description>
      <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Spaced repetition: what the Leitner algorithm teaches about data structure</title>
      <link>https://riadhmnasri.fr/en/blog/spaced-repetition-leitner-data-structure</link>
      <guid>https://riadhmnasri.fr/en/blog/spaced-repetition-leitner-data-structure</guid>
      <description>Kortex, Kafkex, Vocably, Lingopack: four different apps, one revision engine. What makes this problem interesting to model.</description>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Running Stockfish in the browser: what WebAssembly actually changes</title>
      <link>https://riadhmnasri.fr/en/blog/stockfish-in-the-browser-what-wasm-changes</link>
      <guid>https://riadhmnasri.fr/en/blog/stockfish-in-the-browser-what-wasm-changes</guid>
      <description>On OpeningBook, chess analysis runs entirely client-side. What that actually implies, beyond the WASM buzzword.</description>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Event-driven with Kafka: what you gain, and what you lose</title>
      <link>https://riadhmnasri.fr/en/blog/event-driven-with-kafka-what-you-gain-and-lose</link>
      <guid>https://riadhmnasri.fr/en/blog/event-driven-with-kafka-what-you-gain-and-lose</guid>
      <description>Decoupling services through events solves real coupling problems, but introduces others that are less visible at first.</description>
      <pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Getting started with Terraform: what the tutorial doesn&apos;t cover</title>
      <link>https://riadhmnasri.fr/en/blog/getting-started-learning-terraform</link>
      <guid>https://riadhmnasri.fr/en/blog/getting-started-learning-terraform</guid>
      <description>Writing a resource block is easy. What takes time to really understand is state, and why it&apos;s Terraform&apos;s actual subject.</description>
      <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
    </item>
</channel>
</rss>