<?xml version="1.0" encoding="UTF-8"?>
<!-- This sitemap was dynamically generated on April 8, 2026 at 11:50 pm by All in One SEO v4.9.5.1 - the original SEO plugin for WordPress. -->

<?xml-stylesheet type="text/xsl" href="https://samfrenchblog.com/default-sitemap.xsl"?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Sam French&#039;s Programming Blog</title>
		<link><![CDATA[https://samfrenchblog.com]]></link>
		<description><![CDATA[Sam French&#039;s Programming Blog]]></description>
		<lastBuildDate><![CDATA[Wed, 08 Apr 2026 17:13:05 +0000]]></lastBuildDate>
		<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
		<atom:link href="https://samfrenchblog.com/sitemap.rss" rel="self" type="application/rss+xml" />
		<ttl><![CDATA[60]]></ttl>

		<item>
			<guid><![CDATA[https://samfrenchblog.com/2026/04/08/how-i-let-ai-agents-write-code-while-i-sleep/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2026/04/08/how-i-let-ai-agents-write-code-while-i-sleep/]]></link>
			<title>How I Let AI Agents Write Code While I Sleep</title>
			<pubDate><![CDATA[Wed, 08 Apr 2026 17:13:05 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2026/03/05/automated-slack-feedback-flywheels-reusable-workflows-claude-code/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2026/03/05/automated-slack-feedback-flywheels-reusable-workflows-claude-code/]]></link>
			<title>Automated Slack Messages, Feedback Flywheels, and Reusable Workflows With Claude Code</title>
			<pubDate><![CDATA[Thu, 05 Mar 2026 01:52:01 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/25/getting-real-world-test-data-from-production/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/25/getting-real-world-test-data-from-production/]]></link>
			<title>Getting Real-World Test Data from Production</title>
			<pubDate><![CDATA[Tue, 20 Jan 2026 02:58:06 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/12/20/evaluating-project-risk-based-on-domain-how-much-testing-do-i-need/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/12/20/evaluating-project-risk-based-on-domain-how-much-testing-do-i-need/]]></link>
			<title>Evaluating Project Risk Based on Domain (How much testing do I need to launch?)</title>
			<pubDate><![CDATA[Sun, 20 Dec 2020 16:32:52 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2026/02/15/how-i-use-todo-md-with-claude-code-to-never-lose-context-between-sessions/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2026/02/15/how-i-use-todo-md-with-claude-code-to-never-lose-context-between-sessions/]]></link>
			<title>How I Use TODO.md With Claude Code to Never Lose Context Between Sessions</title>
			<pubDate><![CDATA[Sun, 15 Feb 2026 03:36:39 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2026/01/20/how-to-get-the-most-from-claude-code-lessons-from-building-50-projects/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2026/01/20/how-to-get-the-most-from-claude-code-lessons-from-building-50-projects/]]></link>
			<title>How to Get the Most From Claude Code: Lessons From Building 50+ Projects</title>
			<pubDate><![CDATA[Sun, 15 Feb 2026 02:17:04 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/08/06/integration-testing-mockserver/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/08/06/integration-testing-mockserver/]]></link>
			<title>Integration Testing: MockServer</title>
			<pubDate><![CDATA[Sun, 15 Feb 2026 02:15:40 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/08/22/ethereum-lottery-example-part-1-setting-up-environment/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/08/22/ethereum-lottery-example-part-1-setting-up-environment/]]></link>
			<title>Ethereum Lottery Example Part 1: Setting Up Environment</title>
			<pubDate><![CDATA[Sat, 22 Aug 2020 15:46:06 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/12/package-json-scripts/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/12/package-json-scripts/]]></link>
			<title>package.json scripts</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:40 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/14/mocking-singletons-in-java-mockk-mockito/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/14/mocking-singletons-in-java-mockk-mockito/]]></link>
			<title>Mocking Static Singletons in Java (Mockito 3.4+, EasyMock, JMockit)</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:39 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/20/videos-refactoring-with-intellij-part-i/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/20/videos-refactoring-with-intellij-part-i/]]></link>
			<title>Extract Method and Inline Variable in IntelliJ</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:38 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2021/09/07/ethereum-lottery-example-part-3-collecting-an-entrance-fee/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2021/09/07/ethereum-lottery-example-part-3-collecting-an-entrance-fee/]]></link>
			<title>Ethereum Lottery Example Part 3: Collecting an Entrance Fee</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:37 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/08/27/ethereum-lottery-example-part-2-participant-aggregation-and-winner-selection/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/08/27/ethereum-lottery-example-part-2-participant-aggregation-and-winner-selection/]]></link>
			<title>Ethereum Lottery Example Part 2: Participant Aggregation and Winner Selection</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:37 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2021/10/01/ethereum-lottery-example-part-4-unit-testing/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2021/10/01/ethereum-lottery-example-part-4-unit-testing/]]></link>
			<title>Ethereum Lottery Example Part 4: Unit Testing</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:36 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/18/testing-vs-alerting-part-i/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/18/testing-vs-alerting-part-i/]]></link>
			<title>Testing vs. Alerting Part I</title>
			<pubDate><![CDATA[Sat, 18 Jul 2020 00:58:35 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/18/in-maven/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/18/in-maven/]]></link>
			<title>dependencyManagement tag in Maven</title>
			<pubDate><![CDATA[Sat, 18 Jul 2020 00:37:20 +0000]]></pubDate>
		</item>
					<item>
			<guid><![CDATA[https://samfrenchblog.com/2020/07/20/suppressing-static-initializers-with-mockito-powermock/]]></guid>
			<link><![CDATA[https://samfrenchblog.com/2020/07/20/suppressing-static-initializers-with-mockito-powermock/]]></link>
			<title>Suppressing Static Initializers with Mockito + Powermock</title>
			<pubDate><![CDATA[Fri, 16 Jan 2026 02:07:39 +0000]]></pubDate>
		</item>
				</channel>
</rss>
