<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://feeds.feedblitz.com/feedblitz_rss.xslt"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	 xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
<channel>
	<title>Petri Kainulainen</title>
	<atom:link href="https://www.petrikainulainen.net/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.petrikainulainen.net/</link>
	<description>Developing Software With Passion</description>
	<lastBuildDate>Thu, 16 Apr 2026 15:03:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/software-development-monthly-3-2026/</feedburner:origLink>
		<title>Software Development Monthly 3 / 2026</title>
		<link>https://feeds.feedblitz.com/~/953900468/0/petrikainulainen~Software-Development-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/953900468/0/petrikainulainen~Software-Development-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Thu, 16 Apr 2026 15:03:36 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jOOQ]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=29061</guid>
					<description><![CDATA[<p>The Software Development Monthly is a monthly blog post that highlights interesting or useful blog posts which I read during the previous month. This blog post shares 32 interesting or useful blog posts which I read during March 2026. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/software-development-monthly-3-2026/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/953900468/0/petrikainulainen~Software-Development-Monthly/">Software Development Monthly 3 / 2026</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Software Development Monthly is a monthly blog post that shares interesting or useful content which I consumed during the previous month. This blog post is always published on the eight day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#ai">AI</a></li>
<li><a href="#cloud">Cloud</a></li>
<li><a href="#sw-development">Software Development</a></li>
</ul>
</div>
<h2 id="ai">AI</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://lucianonooijen.com/blog/why-i-stopped-using-ai-code-editors/">Why I stopped using AI code editors</a> warns that overusing AI code editors can lead to a loss of technical intuition and fundamental engineering skills.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://fagnerbrack.com/ai-as-a-coding-assistant-is-the-wrong-mental-model-ff77e1b39f9a">Writing code was never the bottleneck</a> argues that writing code faster is a reasonable goal, but it doesn't eliminate the real bottlenecks. The author identifies some of these bottlenecks and describes how we can remove them with Claude Code and Github Actions.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://futurism.com/artificial-intelligence/ai-brain-fry">AI Use at Work Is Causing "Brain Fry", Researchers Find, Especially Among High Performers</a> explains that constant interaction with AI tools can lead to cognitive overload, fatigue, and slower decision-making.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://alexeyondata.substack.com/p/how-i-dropped-our-production-database">How I Dropped Our Production Database and Now Pay 10% More for AWS</a> is a post mortem of an incident where a Claude Code agent wiped the production AWS infrastructure (including the database) and deleted all automated backups.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://boristane.com/blog/the-software-development-lifecycle-is-dead/">The Software Development Lifecycle Is Dead</a> argues that AI agents have collapsed the traditional software development lifecycle into a tight loop of intent, execution, and observation.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://apenwarr.ca/log/20260316">Every layer of review makes you 10x slower</a> explains how every layer of approval drastically decreases our velocity, and argues that even though AI can generate code faster, the only way to sustainably increase velocity is to do fewer reviews.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://nanonets.com/blog/ai-agent-hacks-mckinsey/">AI Agent Hacks McKinsey: 5 Situations When You Should Not Deploy Agents</a> identifies five situations where we shouldn't use AI agents.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://boreal.social/post/ai-wont-make-you-rich-but-fixing-bugs-in-ai-slopware-will">AI won't make you rich. But fixing bugs in AI slopware will</a> argues that debugging and stabilizing AI generated code will be the next big economic opportunity for developers.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://andrewmurphy.io/blog/if-you-thought-the-speed-of-writing-code-was-your-problem-you-have-bigger-problems">If you thought the speed of writing code was your problem - you have bigger problems</a> argues that if we increase the amount of generated code with AI without addressing the real bottlenecks, we will only create "traffic jams" which reduce the amount of delivered value.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://notes.visaint.space/ai-coding-is-gambling/">AI Coding is Gambling</a> describes how coding has changed from an act that requires thinking to a form of gambling where developers pull a slot machine for solutions, and argues that this process makes the development work less satisfactory.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.ivanturkovic.com/2026/02/25/ai-made-writing-code-easier-engineering-harder/">AI Made Writing Code Easier. It Made Being an Engineer Harder.</a> argues that AI tools have made code generation faster, but the software engineering role has become more taxing, and the AI tools have caused an identity crisis for developers who love writing code.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.dailydoseofds.com/p/anatomy-of-the-claude-folder">Anatomy of the <em>.claude/</em> Folder</a> provides a comprehensive tutorial to the contents of the <em>.claude/</em> directory. For example, the author provides an introduction to commands, rules, skills, and agents.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://mariozechner.at/posts/2026-03-25-thoughts-on-slowing-the-fuck-down/">Thoughts on slowing the fuck down</a> warns that agentic code generation can create unrecoverable technical debt, and argues that we should slow down and put the developer back to the driver's seat.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://martinelli.ch/ai-tools-for-developers-are-not-enough/">AI Tools for Developers Are Not Enough</a> explains that even though teams can generate code faster than ever before, this doesn't guarantee that they will solve the right problems. The author argues that if we want to build the right thing faster, we need AI tools which support the whole software development lifecycle.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.frankel.ch/writing-agent-skill/">Writing an agent skill</a> explains how we can optimize Claude Code's token usage by writing agent skills.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://piotrminkowski.com/2026/03/24/claude-code-template-for-spring-boot/">Claude Code Template for Spring Boot</a> introduces the author's Claude Code template for Spring Boot applications. This template leverages both agents and skills, and its goal is to help us to generate production ready Spring Boot applications.</p>
<h2 id="cloud">Cloud</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://onecloudplease.com/blog/bucketsquatting-is-finally-dead">Bucketsquatting is (Finally) Dead</a> defines the term 'bucketsquatting' and explains how AWS solved this issue by introducing account specific S3 namespaces.</p>
<h2 id="sw-development">Software Development</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/">Nobody Gets Promoted for Simplicity</a> argues that engineering culture often values over-engineering and ignores the value of simple solutions.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://sushantdhiman.dev/things-i-miss-about-spring-boot-after-switching-to-go/">Things I miss about Spring Boot after switching to Go</a> identifies six Spring Boot features the author misses and highlights three things Go does better.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://unplannedobsolescence.com/blog/xml-cheap-dsl/">XML is a Cheap DSL</a> argues that XML is an effective tool for building domain-specific languages.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://neciudan.dev/name-your-effects">Start naming your <code>useEffect</code> functions, you will thank me later</a> argues that naming <code>useEffect</code> functions makes our code cleaner and helps us to identify effects that shouldn't exist.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://thinkpol.ca/2026/03/24/the-junior-developer-pipeline-is-broken-and-nobody-has-a-plan-to-fix-it/">The junior developer pipeline is broken, and nobody has a plan to fix it</a> explores the problems caused by the collapsing junior developer hiring pipeline and identifies solutions that could help us solve them.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.iankduncan.com/engineering/2026-02-05-github-actions-killing-your-team">GitHub Actions Is Slowly Killing Your Engineering Team</a> compares GitHub Actions and Buildkite, and argues that we should use Buildkite instead of GitHub Actions.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://foojay.io/today/java-for-scripting/">JavaScript (No, Not That One): Modern Automation with Java</a> highlights modern Java features that have transformed Java into a viable scripting language.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://daniel.haxx.se/blog/2026/03/26/dont-trust-verify/">Don’t trust, verify</a> explains why we should verify that the tools we use were released by the correct "source" and haven't been tampered with.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://safedep.io/axios-npm-supply-chain-compromise/">axios Compromised: npm Supply Chain Attack via Dependency Injection</a> is a comprehensive analysis of the supply chain attack where the popular axios NPM package was used to deliver malware. </p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://github.com/axios/axios/issues/10636">Post Mortem: axios npm supply chain compromise</a> is the official post mortem of the axios supply chain attack.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jongallant.com/2026/03/announcing-grut">Announcing grüt - A Terminal File Explorer with Git, GitHub, and AI Integration</a> introduces a new terminal-based file explorer that works in Linux, MacOS, and Windows.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://hanno.codes/2026/03/17/java-26-is-here/">Java 26 Is Here, And With It a Solid Foundation for the Future</a> summarizes the key changes and new features introduced in Java 26.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.sivalabs.in/feel-left-behind-in-tech-this-is-90-day-comeback-plan/">Feeling Left Behind in Tech? This Is Your 90-Day Comeback Plan</a> introduces a structured 90-day strategy that helps experienced developers to modernize their skill sets.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://piotrminkowski.com/2026/03/19/speed-up-java-startup-with-spring-boot-and-project-leyden/">Speed up Java Startup with Spring Boot and Project Leyden</a> explains how we can achieve up to a 75% faster startup time for Spring Boot applications.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jooq.org/managing-sensitive-data-in-jooq-3-21-logs/">Managing Sensitive Data in jOOQ 3.21+ Logs</a> describes how we can exclude sensitive data from jOOQ logs.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/software-development-monthly-3-2026/">Software Development Monthly 3 / 2026</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/953900468/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/953900468/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/953900468/0/petrikainulainen~Software-Development-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/</feedburner:origLink>
		<title>Clean Test Automation Monthly 3 / 2026</title>
		<link>https://feeds.feedblitz.com/~/953460086/0/petrikainulainen~Clean-Test-Automation-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/953460086/0/petrikainulainen~Clean-Test-Automation-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 14:30:20 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[Clean Tests]]></category>
		<category><![CDATA[Playwright]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=29031</guid>
					<description><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that highlights interesting or useful test automation content which I read during the current month. This blog post shares 12 interesting or useful blog posts which I read during March 2026. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/clean-test-automation-monthly-3-2026/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/953460086/0/petrikainulainen~Clean-Test-Automation-Monthly/">Clean Test Automation Monthly 3 / 2026</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2025/">Clean Test Automation Monthly 3 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2024/">Clean Test Automation Monthly 3 / 2024</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that shares interesting or useful test automation content which I consumed during the current month. This blog post is always published on the first day of the "next" month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#design">Test  Design</a></li>
<li><a href="#backend">Backend</a></li>
<li><a href="#ui-end-to-end">UI / End-to-End</a></li>
</ul>
</div>
<h2 id="design">Test Design</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://testerstories.com/2026/02/ai-and-testing-using-local-models-for-testing/">AI and Testing: Using Local Models for Testing</a> demonstrates how we can use local AI models for generating test cases and Playwright tests.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://testingil.com/2026/03/your-api-tests-are-passing-thats-the-problem.html">Your API Tests Are Passing. That’s the Problem</a> argues that a green API test suite can create a false sense security, especially, if our test suite contains so called shallow assertions.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://bencane.com/posts/2026-03-26/">Generating code faster is only valuable if you can validate every change</a> introduces a testing strategy that helps us to ensure that rapid code generation won't introduce bugs.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@jaychopra05/the-testing-pyramid-is-a-relic-here-is-what-actually-works-20882083563a">The Testing Pyramid is a Relic. Here is What Actually Works.</a> argues that the testing pyramid doesn't work when we are writing modern distributed systems, and introduces a testing strategy which concentrates on static analysis, integration tests, and observability.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/who-tests-the-tests-ai-qa-and-the-verification-paradox/who-tests-the-tests-ai-qa-and-the-verification-paradox.html">Who Tests the Tests? AI, QA, and the Verification Paradox</a> explains what "don't trust without verification" means if we generate automated tests with AI.</p>
<h2 id="backend">Backend</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.ontestautomation.com/writing-tests-with-claude-code-part-1-initial-results/">Writing tests with Claude Code - part 1 - initial results</a> describes what the author learned when he used Claude Code for generating automated tests for a Spring Boot REST API.</p>
<h2 id="ui-end-to-end">UI / End-to-End</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.qawolf.com/blog/why-qa-wolf-chose-playwright-over-cypress">Why We Chose Playwright Over Cypress</a> compares Playwright and Cypress, and explains why the author decided to use Playwright.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://elaichenkov.github.io/posts/17-playwright-testing-mistakes-you-should-avoid/">17 Playwright Testing Mistakes You Should Avoid</a> helps us to write better Playwright tests by identifying 17 mistakes we shouldn't make.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://tkdodo.eu/blog/test-ids-are-an-a11y-smell">Test IDs are an a11y smell</a> explains why the author thinks that we shouldn't use <code>data-testid</code> and describes how we can write tests which don't require test ids.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.halfstackdevs.tech/blog/making-code-coverage-work-with-playwright-without-going-insane">Making Code Coverage Work with Playwright</a> explains how we can generate code coverage reports for Playwright tests with <code>@bgotink/playwright-coverage</code>.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/your-tests-are-green-your-app-is-broken/your-tests-are-green-your-app-is-broken.html">Your Tests Are Green. Your App Is Broken</a> identifies a situation where our application is broken even though our tests pass, and provides one possible solution to this problem.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://timdeschryver.dev/blog/introducing-angular-testing-library-zoneless">Introducing Angular Testing Library Zoneless</a> introduces the new <code>@testing-library/angular/zoneless</code> subpackage which is basically q trimmed down version of the original Angular Testing Library.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/953460086/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/953460086/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2025/">Clean Test Automation Monthly 3 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2024/">Clean Test Automation Monthly 3 / 2024</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/953460086/0/petrikainulainen~Clean-Test-Automation-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/software-development-monthly-2-2026/</feedburner:origLink>
		<title>Software Development Monthly 2 / 2026</title>
		<link>https://feeds.feedblitz.com/~/950014982/0/petrikainulainen~Software-Development-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/950014982/0/petrikainulainen~Software-Development-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Thu, 12 Mar 2026 13:53:08 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Spring Modulith]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28990</guid>
					<description><![CDATA[<p>The Software Development Monthly is a monthly blog post that highlights interesting or useful blog posts which I read during the previous month. This blog post shares 25 interesting or useful blog posts which I read during February 2026. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/software-development-monthly-2-2026/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/950014982/0/petrikainulainen~Software-Development-Monthly/">Software Development Monthly 2 / 2026</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Software Development Monthly is a monthly blog post that shares interesting or useful content which I consumed during the previous month. This blog post is always published on the seventh day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#ai">AI</a></li>
<li><a href="#sw-development">Software Development</a></li>
</ul>
</div>
<h2 id="ai">AI</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://hbr.org/2026/02/ai-doesnt-reduce-work-it-intensifies-it">AI Doesn’t Reduce Work — It Intensifies It</a> argues that AI causes workload creep where employees will increase their workload until they start to suffer from cognitive fatigue and burnout.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@jeremydaly/context-is-now-a-first-class-architectural-concern-955eea1ca7e4">Context Is Now a First-Class Architectural Concern</a> explains that context is no longer just data. It's a critical concern that must be designed and limited so that we can ensure that using AI is economically viable.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://openai.com/index/inside-our-in-house-data-agent/">Inside OpenAI’s in-house data agent</a> describes how OpenAPI build an in-house data agent that allows their employees to query over 600 petabytes of internal data and reduces the time it takes to get answers to their questions.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thepragmaticcto.com/p/lines-of-code-are-back-and-its-worse">Lines of Code Are Back (And It's Worse Than Before)</a> argues that AI-assisted coding has revived the lines of code (LOC) as a primary metric of productivity and explains why LOC is still an awful way to measure productivity.</p>
<p>An AI Agent Published a Hit Piece on Me (<a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/">Part 1</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me-part-2/">Part 2</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me-part-3/">Part 3</a>, and <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://theshamblog.com/an-ai-agent-wrote-a-hit-piece-on-me-part-4/">Part 4</a>) provides a detailed account of an incident where an AI agent published a hit piece against an open source developer who closed a pull request opened by the AI agent.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://chaosguru.substack.com/p/who-opened-the-door">Who opened the door?</a> covers an incident where an AI agent started a smear campaign against a developer and identifies a question that's not asked by anyone else.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://siddhantkhare.com/writing/ai-fatigue-is-real">AI fatigue is real and nobody talks about it</a> argues that even though AI helps us to finish individual tasks faster, it increases the time (and mental energy) needed to coordinate AI agents and review the finished work.</p>
<p>Minions: Stripe’s one-shot, end-to-end coding agents <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents">Part 1</a> and <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents-part-2">Part 2</a> introduces homegrown and unattended AI agents which produce over a thousand merged pull request every week.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://tomwojcik.com/posts/2026-02-15/finding-the-right-amount-of-ai/">What AI coding costs you</a> identifies the negative effects of overrelying on AI tools, and argues that we should find a balance between AI assisted coding and old fashioned manual coding.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://jackcamerano.com/blog/a-message-to-devs-at-the-frontier/">A Message To Devs At The Frontier</a> argues that developers should be curious and embrace the new opportunities instead of simply ignoring AI assisted engineering.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://martinelli.ch/two-flavors-of-spec-driven-development-and-why-i-clearly-prefer-one/">Two Flavors of Spec-Driven Development and Why I Clearly Prefer One</a> introduces two interpretations of spec-driven development and explains why the author thinks that one of them is essential for building business-critical systems.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.scottsmitelli.com/articles/you-dont-have-to/">You don’t have to if you don’t want to</a> is a long and an old-fashioned rant about generative AI.</p>
<h2 id="sw-development">Software Development</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://javaevolved.github.io/">Java has evolved. Your code can too</a> highlights 113 code snippets and allows us to compare the old and modern implementation side by side.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://yieldcode.blog/post/farewell-rust/">Farewell, Rust</a> explains why the author started using Node.js instead of Rust when he is doing web development.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://words.filippo.io/dependabot/">Turn Dependabot Off</a> argues that we shouldn't use Dependabot and explains what we should do instead.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://shiftmag.dev/code-isnt-slowing-your-project-down-communication-is-7889/">Code Isn’t Slowing Your Project Down, Communication Is</a> explains that delays in large organizations are rarely caused by the complexity of the produced code and argues that these delays are caused by poor communication, unclear processes, and clashing priorities.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jetbrains.com/kotlin/2026/02/building-modular-monoliths-with-kotlin-and-spring/">Building Modular Monoliths With Kotlin and Spring</a> explains why we should consider building modular monoliths and describes how we can build them with Kotlin and Spring Modulith.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jetbrains.com/idea/2026/02/migrating-to-modular-monolith-using-spring-modulith-and-intellij-idea/">Migrating to Modular Monolith using Spring Modulith and IntelliJ IDEA</a> describes how we can migrate from a traditional monolith to a modular monolith.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://ianbull.com/posts/software-architecture">Sinks, Not Pipes: Software Architecture in the Age of AI</a> introduces techniques that help us to deal with AI agents that lack the long-term memory humans use to navigate poorly structured code bases.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.seangoedecke.com/how-i-estimate-work/">How I estimate work as a staff software engineer</a> explains why estimating is hard, argues that an estimate is a political tool, and describes how the author estimates work.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jbrains.ca/permalink/deadlines-as-an-act-of-love">Deadlines As An Act Of Love</a> argues that a deadline isn't an attempt to control employees. Instead, deadlines help us to schedule our work and support (or not to support) each other's objectives.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/software-development-monthly-2-2026/">Software Development Monthly 2 / 2026</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/950014982/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/950014982/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/950014982/0/petrikainulainen~Software-Development-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2026/</feedburner:origLink>
		<title>Clean Test Automation Monthly 2 / 2026</title>
		<link>https://feeds.feedblitz.com/~/949021628/0/petrikainulainen~Clean-Test-Automation-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/949021628/0/petrikainulainen~Clean-Test-Automation-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 16:23:50 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Clean Tests]]></category>
		<category><![CDATA[Mockito]]></category>
		<category><![CDATA[Playwright]]></category>
		<category><![CDATA[Rest Assured]]></category>
		<category><![CDATA[TestNG]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28951</guid>
					<description><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that highlights interesting or useful test automation content which I read during the current month. This blog post shares 16 interesting or useful blog posts which I read during February 2026. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/clean-test-automation-monthly-2-2026/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/949021628/0/petrikainulainen~Clean-Test-Automation-Monthly/">Clean Test Automation Monthly 2 / 2026</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2025/">Clean Test Automation Monthly 2 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2024/">Clean Test Automation Monthly 2 / 2024</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that shares interesting or useful test automation content which I consumed during the current month. This blog post is always published on the first day of the "next" month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#design">Test  Design</a></li>
<li><a href="#backend">Backend</a></li>
<li><a href="#ui-end-to-end">UI / End-to-End</a></li>
</ul>
</div>
<h2 id="design">Test Design</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://theqacrew.substack.com/p/how-to-keep-your-smoke-test-suite">How to Keep Your Smoke Testing Useful</a> argues that we should keep our smoke test suite as small (and fast) as possible and concentrate on testing things that matter.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://kiss-and-solid.com/blog/why-tdd-matters">The Big TDD Misunderstanding</a> argues that we should write our tests from the user's perspective and provides four tips that help us to write good tests.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/a-field-guide-to-not-overengineering-test-automation/a-field-guide-to-not-overengineering-test-automation.html">A Field Guide to Not Overengineering Test Automation</a> describes how we can avoid writing an over-engineered test framework that requires more maintenance than our application.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://testpappy.wordpress.com/2026/01/29/when-you-outsource-testing-to-the-ai-you-loose-the-ability-to-understand-your-system/">When you outsource testing to the AI, you lose the ability to understand your system</a> explains that if we outsource testing to AI, we will loose our mental model of the application because we don't get the understanding that's traditionally gained by writing tests and reading code.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://thetestingpirate.be/posts/2026/2026-01-28_whyaiwontsaveyourflakytests/">Why AI won't save your Flaky Tests</a> argues that if we use AI for fixing flaky tests, we will only hide the architectural issues which cause our tests to fail randomly. </p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@dingraham01/lessons-i-wish-i-knew-when-i-started-in-test-automation-a97f8d283042">Lessons I Wish I Knew When I Started in Test Automation</a> identifies five lessons the author would have wanted to learn sooner.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.ontestautomation.com/refactoring-the-rest-assured-net-code-with-claude-code/">Refactoring the RestAssured.Net code with Claude Code</a> describes how the author used Claude Code to refactor the codebase of the RestAssured.Net project and explains what the author learned from this experiment.</p>
<h2 id="backend">Backend</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/java-mockito-dont-mock-collections">Why We Should Not Mock Collections With Mockito</a> explains why we should use real collections instead of mock objects when we are writing tests for code that uses collections (this a good advice for model objects as well).</p>
<p>Data Driven API Testing in Java with Rest-Assured and TestNG: <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-1-275795ca2c62">Part 1</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-2-06029e688efe">Part 2</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-3-3eed3cc1e39f">Part 3</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-4-3e90355085d5">Part 4</a>, and <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-5-e7fcde4203cc">Part 5</a> describes how we can write data-driven tests with Rest Assured and TestNG (use the friend link if you don't have a Medium account).</p>
<h2 id="ui-end-to-end">UI / End-to-End</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://martinelli.ch/how-i-solved-smtp-timeouts-with-mailpit-and-javamail/">How I solved SMTP Timeouts with Mailpit and JavaMail</a> explains how the author solved a DNS resolution issue which caused test failures when the system under test tried to send an email to localhost.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/testing-error-boundaries-by-breaking-contracts-not-code/testing-error-boundaries-by-breaking-contracts-not-code.html">Testing Error Boundaries by Breaking Contracts, Not Code</a> argues that we should test our frontend applications by intercepting successful API responses and injecting "contract violations" (such as missing fields or unexpected data types). This helps us to ensure that our UI degrades gracefully instead of crashing.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://tlolkema.substack.com/p/using-agent-skills-to-write-playwright">Using agent skills to write Playwright tests</a> describes how the author generates end-to-end tests by leveraging AI agents.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2026/">Clean Test Automation Monthly 2 / 2026</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/949021628/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/949021628/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2025/">Clean Test Automation Monthly 2 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2024/">Clean Test Automation Monthly 2 / 2024</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/949021628/0/petrikainulainen~Clean-Test-Automation-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/software-development-monthly-1-2026/</feedburner:origLink>
		<title>Software Development Monthly 1 / 2026</title>
		<link>https://feeds.feedblitz.com/~/946239539/0/petrikainulainen~Software-Development-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/946239539/0/petrikainulainen~Software-Development-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Thu, 12 Feb 2026 16:08:16 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Quarkus]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Spring AI]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28772</guid>
					<description><![CDATA[<p>The Software Development Monthly is a monthly blog post that highlights interesting or useful blog posts which I read during the previous month. This blog post shares 24 interesting or useful blog posts which I read during January 2026. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/software-development-monthly-1-2026/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/946239539/0/petrikainulainen~Software-Development-Monthly/">Software Development Monthly 1 / 2026</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Software Development Monthly is a monthly blog post that shares interesting or useful content which I consumed during the previous month. This blog post is always published on the seventh day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#ai">AI</a></li>
<li><a href="#sw-development">Software Development</a></li>
</ul>
</div>
<h2 id="ai">AI</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://python.plainenglish.io/the-death-of-the-code-monkey-why-i-fear-for-the-class-of-2026-13dbf531a76f">We’re not concerned enough about the future of junior-level software engineering</a> explains that because AI has basically removed the need for junior developers, companies will be in serious trouble when the current senior developers and architects retire because there won't be people who can replace them.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.vibe.academy/blog/john-henry-problem-racing-ai">The John Henry Problem - Why Racing Against AI is a Losing Game</a> argues that developers who compete with an AI are winning a race that doesn't matter.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://antirez.com/news/158">Don't fall into the anti-AI hype</a> argues that developers shouldn't ignore AI because of moral reasons and recommends that every developer should test these new AI tools and see if they are helpful for them.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://addyo.substack.com/p/the-80-problem-in-agentic-coding">The 80% Problem in Agentic Coding</a> explains that even though AI can generate "most of the code" quite easily, generating "the rest" is a lot more challenging.</p>
<p>Spring AI Agentic Patterns <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2026/01/13/spring-ai-generic-agent-skills">Part 1</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2026/01/16/spring-ai-ask-user-question-tool">Part 2</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2026/01/20/spring-ai-agentic-patterns-3-todowrite">Part 3</a>, <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2026/01/27/spring-ai-agentic-patterns-4-task-subagents">Part 4</a>, and <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2026/01/29/spring-ai-agentic-patterns-a2a-integration">Part 5</a> is a series of blog posts which highlights the features of the spring-ai-agent-utils toolkit that provides agentic patterns for Spring AI.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://info.michael-simons.eu/2026/01/19/some-thoughts-about-using-ai-coding-tools/">Some thoughts about using AI-Coding tools</a> argues that while AI tools can generate decent code, they don't necessarily increase the productivity of an experienced developer.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.sivalabs.in/stepping-into-crazy-ai-world/">Stepping into Crazy AI World</a> argues that developers should pretty much ignore AI hype and concentrate on learning how they can use AI tools for delivering software faster than ever before.</p>
<h2 id="sw-development">Software Development</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.pcloadletter.dev/blog/craftsmanship-is-dead/">Software craftsmanship is dead</a> argues that software development projects tend to favor speed and short-term metrics over writing high-quality and maintainable code.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://addyosmani.com/blog/21-lessons/">21 Lessons From 14 Years at Google</a> identifies the software development lessons gathered from 14 years at Google.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://nesbitt.io/2026/01/02/how-dependabot-actually-works.html">How Dependabot Actually Works</a> describes how Dependabot identifies the required dependency updates and creates PRs.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://addyosmani.com/blog/next-two-years/">The Next Two Years of Software Engineering</a> identifies five crucial questions that will define software engineering for the next two years.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://lab174.com/blog/202601-yaml-norway/">YAML? That’s Norway problem</a> is an interesting and funny post which explains why the country code <code>NO</code> is parsed as <code>false</code>.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://lalitm.com/post/why-senior-engineers-let-bad-projects-fail/">Why Senior Engineers Let Bad Projects Fail</a> explains that sometimes the most "senior" move is to stay silent and let a flawed project fail.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://alexanderfashakin.substack.com/p/make-it-make-sense-nobody-clicked-the-wrong-button">Make It Make Sense</a> argues that massive failures happen when the meaning of data or UI is left implicit.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.frankel.ch/checked-exceptions-lambdas/">Checked exceptions and lambdas</a> identifies three different approaches which help us to use checked exceptions with lambdas.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/maven-4-upgrades">What’s New in Maven 4</a> highlights the key features of Maven 4.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://quarkus.io/blog/building-large-applications/">Towards faster builds</a> describes how the Quarkus team improved the build time of Quarkus applications when they got feedback that the build time was noticeably higher than the build time of a similar Spring Boot application.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://newsletter.francofernando.com/p/software-design-principles-that-matter">Software Design Principles That Matter</a> identifies three software design principles which help us to build flexible and maintainable code.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jetbrains.com/idea/2026/01/spring-boot-debugging-now-remote/">Spring Boot Debugging – Now Remote</a> describes how we can debug a remote Spring Boot application with IntelliJ Idea.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://openjdk.org/projects/amber/design-notes/beyond-records">Data-Oriented Programming for Java: Beyond Records</a> introduces the next phase of data-oriented programming for the Java programming language: carrier classes and interfaces.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/software-development-monthly-1-2026/">Software Development Monthly 1 / 2026</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/946239539/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/946239539/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/946239539/0/petrikainulainen~Software-Development-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2026/</feedburner:origLink>
		<title>Clean Test Automation Monthly 1 / 2026</title>
		<link>https://feeds.feedblitz.com/~/944744150/0/petrikainulainen~Clean-Test-Automation-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/944744150/0/petrikainulainen~Clean-Test-Automation-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 16:15:50 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[JUnit 5]]></category>
		<category><![CDATA[TestContainers]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28732</guid>
					<description><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that highlights interesting or useful test automation content which I read during the current month. This blog post shares 16 interesting or useful blog posts which I read during January 2026. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/clean-test-automation-monthly-1-2026/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/944744150/0/petrikainulainen~Clean-Test-Automation-Monthly/">Clean Test Automation Monthly 1 / 2026</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2025/">Clean Test Automation Monthly 1 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2024/">Clean Test Automation Monthly 1 / 2024</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that shares interesting or useful test automation content which I consumed during the current month. This blog post is always published on the last day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#design">Test  Design</a></li>
<li><a href="#backend">Backend</a></li>
<li><a href="#ui-end-to-end">UI / End-to-End</a></li>
</ul>
</div>
<h2 id="design">Test Design</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.ploeh.dk/2026/01/26/ai-generated-tests-as-ceremony/">AI-generated tests as ceremony</a> argues that if we use AI to generate tests after writing our code, we reduce testing to a hollow ceremony and miss the opportunity to see the tests fail before they pass.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.todo.space/2025/12/27/buying-the-right-test-coverage/">Buying the Right Test Coverage (With a Deductible)</a> suggests that we should treat automated tests as an economic trade-off and write only the tests which have an acceptable return of investment.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~www.ministryoftesting.com/articles/back-to-the-basics-rethinking-how-we-use-ai-in-testing">Back to the basics: Rethinking how we use AI in testing</a> argues that AI should be used to support, not replace, human expertise and domain knowledge.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://testerstories.com/2025/12/testing-for-quality-betting-on-value/">Testing for Quality, Betting on Value</a> explains that even though testing can verify if a product works, it cannot ensure that we have built the right thing.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@deep.naik/stop-chasing-100-coverage-a-pragmatic-frontend-testing-pyramid-60520cd9a00e">Stop Chasing 100% Coverage: A Pragmatic Frontend Testing Pyramid</a> argues that we should concentrate on writing the correct tests instead of chasing the 100% test coverage.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/qualitynexus/automation-is-not-quality-and-never-was-4ea016eddad1">Automation Is Not Quality, And Never Was</a> explains why automated tests don't help us to create "quality".</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/qualitynexus/designing-api-test-coverage-for-microservices-25ebb342e82d">Designing API Test Coverage for Microservices</a> argues that we shouldn't rely on high test coverage percentages. Instead, we should select the required test cases by doing risk-based prioritization.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://foojay.io/today/flaky-tests-a-journey-to-beat-them-all/">Flaky Tests: a journey to beat them all</a> defines the term flaky test and identifies three methods the author used to eliminate them.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://sourcehawk.medium.com/testing-is-not-about-bugs-its-about-becoming-a-better-engineer-6165e465de09">The Thing Everyone Misses About Tests</a> argues that writing tests helps us to become better engineers.</p>
<h2 id="backend">Backend</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://odrotbohm.de/2025/12/rethinking-spring-application-integration-testing/">Rethinking Spring Application Integration Testing</a> argues that Spring integration tests should shift from traditional horizontal slicing to vertical and functional slices.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/java-testng-rerun-only-failed-tests">How to Execute Tests Selectively in TestNG</a> explores multiple strategies for re-running failed TestNG tests.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@majorbalu/revolutionizing-integration-testing-with-testcontainers-a-modern-enterprise-approach-8f27605f720b">Revolutionizing Integration Testing with TestContainers: A Modern Enterprise Approach</a> explains how we can use Testcontainers for running "real" external services which are used by the system under test.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://eliasnogueira.com/custom-junit-5-extensions-for-testing/">Custom JUnit 5 Extensions for Testing</a> explains how we can simplify our test suites by writing custom JUnit 5 extensions.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://foojay.io/today/testing-emails-with-testcontainers-and-mailpit/">Testing Emails with Testcontainers and Mailpit</a> describes how we can write end-to-end tests for code that sends emails.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://foojay.io/today/introduction-to-behavior-driving-development-with-java-and-mongodb/">Introduction to Behavior Driving Development with Java and MongoDB</a> describes how we can write BDD tests for MongoDB repositories with Java and Cucumber.</p>
<h2 id="ui-end-to-end">UI / End-to-End</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/automating-push-notification-testing-with-appium/automating-push-notification-testing-with-appium.html">Automating Push Notification Testing with Appium</a> describes how we can write tests which ensure that push notifications are sent and received correctly.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2026/">Clean Test Automation Monthly 1 / 2026</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/944744150/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/944744150/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2025/">Clean Test Automation Monthly 1 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2024/">Clean Test Automation Monthly 1 / 2024</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/944744150/0/petrikainulainen~Clean-Test-Automation-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/software-development-monthly-12-2025/</feedburner:origLink>
		<title>Software Development Monthly 12 / 2025</title>
		<link>https://feeds.feedblitz.com/~/939864599/0/petrikainulainen~Software-Development-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/939864599/0/petrikainulainen~Software-Development-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Thu, 08 Jan 2026 17:51:42 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28679</guid>
					<description><![CDATA[<p>The Software Development Monthly is a monthly blog post that highlights interesting or useful blog posts which I read during the previous month. This blog post shares 19 interesting or useful blog posts which I read during December 2025. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/software-development-monthly-12-2025/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/939864599/0/petrikainulainen~Software-Development-Monthly/">Software Development Monthly 12 / 2025</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-11-2025/">Software Development Monthly 11 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-2-2026/">Software Development Monthly 2 / 2026</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Software Development Monthly is a monthly blog post that shares interesting or useful content which I consumed during the previous month. This blog post is always published on the seventh day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#ai">AI</a></li>
<li><a href="#sw-development">Software Development</a></li>
</ul>
</div>
<h2 id="ai">AI</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thrownewexception.com/does-ai-make-engineers-more-productive-its-complicated/">Does AI make engineers more productive? It’s complicated</a> argues that even though AI helps us to write code faster, it may not improve overall productivity.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.scottlogic.com/2025/12/15/the-specification-renaissance-skills-and-mindset-for-spec-driven-development.html">The Specification Renaissance? Skills and Mindset for Spec-Driven Development</a> argues that as AI-generated code becomes more common, our ability to write clear specifications that define what we want to build becomes the new bottleneck.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://mameli.dev/blog/ai_workflow_eng/">My 2026 Coding Stack</a> highlights the author's AI coding stack for 2026. The author's goal is to maintain flexibility and avoid being locked into a single provider.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://verbosemode.dev/p/from-autocomplete-to-co-author-my">From Autocomplete to Co-Author: My Year with AI</a> reflects on a year of using AI and explains how AI evolved from a simple autocomplete tool to a co-author which generates code that requires minimal changes.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://bytesauna.com/post/insight-debt">On insight debt</a> argues that if we concentrate on shipping features without understanding why they work, we take "insight debt" that makes our code hard to change.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.pcloadletter.dev/blog/pr-review-ai-slop-resilience/">Make your PR process resilient to AI slop</a> argues that AI-generated code isn't a problem as long as we have a proper code review process.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://newsletter.eng-leadership.com/p/ai-coding-tools-are-not-the-problem">AI Coding Tools Are Not the Problem, Lack of Accountability Is</a> argues that the issue with AI-generated code is the lack of accountability when developers ship code without understanding and reviewing it.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://simonwillison.net/2025/Dec/31/the-year-in-llms/">2025: The year in LLMs</a> summarizes the AI breakthroughs of 2025, and highlights the shift toward reasoning models and autonomous agents.</p>
<h2 id="sw-development">Software Development</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jbrains.ca/permalink/a-central-conflict-in-readable-code">A Central Conflict in 'Readable' Code</a> argues that if we want to make our code simpler, we must be ready to make it less familiar (temporarily).</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://piotrminkowski.com/2025/12/15/grpc-spring/">gRPC in Spring Boot</a> describes how we can use the Spring gRPC project for implementing gRPC endpoints and explains how we can write a gPRC client that invokes our new endpoints.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/spring-api-versioning">API Versioning in Spring</a> identifies five strategies for implementing API versioning in a Spring Boot web application.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2025/12/18/next-level-kotlin-support-in-spring-boot-4">Next level Kotlin support in Spring Boot 4</a> describes how Spring Boot 4 makes our life easier when we are writing Spring Boot applications with Kotlin.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.jetbrains.com/kotlin/2025/12/the-ultimate-guide-to-successfully-adopting-kotlin-in-a-java-dominated-environment/">The Ultimate Guide to Successfully Adopting Kotlin in a Java-Dominated Environment</a> introduces a five-part tutorial that helps Java developers to adopt Kotlin. This tutorial addresses both technical and organizational challenges which we might face during this transition.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://vladmihalcea.com/spring-transactional-annotation/">The best way to use the Spring @Transactional annotation</a> provides a quick introduction to the <code>@Transactional</code> annotation and describes how the author uses it to configure transaction boundaries.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://github.com/johnousterhout/aposd-vs-clean-code">A Philosophy of Software Design vs Clean Code</a> documents the debate between Robert "Uncle Bob" Martin and John Ousterhout on what's the best way to write clean code.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://loggingsucks.com/">Logging sucks. And here's how to make it better</a> explains why traditional logging sucks, and describes how we can solve this problem and make our logs useful again.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://sushantdhiman.substack.com/p/cs-books-ill-be-reading-in-2026">CS Books I'll be reading in 2026</a> highlights five books the author will read in 2026.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.pcloadletter.dev/blog/clever-code/">Write code that you can understand when you get paged at 2am</a> argues that if we want to prevent on-call disasters, we must prioritize simple and readable code over "clever" abstractions which are impossible to understand in the middle of the night.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://sashafoundtherootcauseagain.substack.com/p/the-case-against-microservices">The Case Against Microservices</a> argues that for most organizations, the drawbacks of micro services outweigh their benefits when compared to a well-structured monolith.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/software-development-monthly-12-2025/">Software Development Monthly 12 / 2025</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/939864599/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/939864599/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-11-2025/">Software Development Monthly 11 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-2-2026/">Software Development Monthly 2 / 2026</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/939864599/0/petrikainulainen~Software-Development-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-12-2025/</feedburner:origLink>
		<title>Clean Test Automation Monthly 12 / 2025</title>
		<link>https://feeds.feedblitz.com/~/939504830/0/petrikainulainen~Clean-Test-Automation-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/939504830/0/petrikainulainen~Clean-Test-Automation-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Wed, 31 Dec 2025 14:07:18 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[JUnit 5]]></category>
		<category><![CDATA[Mockito]]></category>
		<category><![CDATA[Mutation Testing]]></category>
		<category><![CDATA[Playwright]]></category>
		<category><![CDATA[TestNG]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28638</guid>
					<description><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that highlights interesting or useful test automation content which I read during the current month. This blog post shares 13 interesting or useful blog posts which I read during December 2025. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/clean-test-automation-monthly-12-2025/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/939504830/0/petrikainulainen~Clean-Test-Automation-Monthly/">Clean Test Automation Monthly 12 / 2025</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2026/">Clean Test Automation Monthly 2 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2026/">Clean Test Automation Monthly 1 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that shares interesting or useful test automation content which I consumed during the current month. This blog post is always published on the last day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#design">Test  Design</a></li>
<li><a href="#backend">Backend</a></li>
<li><a href="#ui-end-to-end">UI / End-to-End</a></li>
</ul>
</div>
<h2 id="design">Test Design</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@tojosphine/method-based-approach-for-readable-e2e-tests-without-cucumber-2fad1a376ec8">Method-Based Approach for Readable E2E Tests Without Cucumber</a> argues that using a properly named test method can be a better choice than using a BDD tool such as Cucumber.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.ontestautomation.com/less-but-better/">Less, but better</a> argues that we should focus more on doing things better and less on doing more things faster.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@eamonn.faherty_58176/the-fallacy-of-example-based-testing-d03f303105a2">The Fallacy of Example-Based Testing</a> argues that traditional example-based testing gives us a false sense of security and suggests two alternative techniques which help us to catch more bugs.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@noah.goodrich/the-ai-efficiency-trap-why-i-built-a-tool-to-tell-cursor-what-to-test-4fecb95da925">The AI Efficiency Trap: Why I Built a Tool to Tell Cursor What to Test</a> explains how AI can generate many tests that boost code coverage statistics and ignore complex use cases because the code is "too hard to test". Thus, the author decided to write a pytest plugin which helps the AI agent to write more comprehensive tests. </p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.ontestautomation.com/on-getting-started-with-mutation-testing/">On getting started with mutation testing</a> provides a nice high-level introduction to mutation testing.</p>
<h2 id="backend">Backend</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/java-micronaut-junit5">Introduction to Testing Micronaut With JUnit 5</a> describes how we can write our first automated tests for a Micronaut application with JUnit Jupiter.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/junit5-classtemplate-guide">A Guide to @ClassTemplate in Junit 5</a> explains how we can run a test class multiple times with different configurations.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://github.com/mockito/mockito/issues/3777">Stepping down as maintainer after 10 years</a> identifies three main reasons why Tim van der Lippe is stepping down as the maintainer of Mockito (there is <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.reddit.com/r/java/comments/1py3liu/stepping_down_as_maintainer_after_10_years/">a Reddit discussion</a> about this as well).</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/java-testng-conditionally-ignore-tests">Conditionally Ignore Tests in TestNG</a> describes two different methods that allow us to programmatically ignore or run a test with TestNG.</p>
<h2 id="ui-end-to-end">UI / End-to-End</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@thananjayan1988/playwright-attach-api-data-html-report-1f57246c09b7">Playwright Pro Tip: Stop Digging! Auto-Attach API Request/Response Data to Your HTML Reports</a> explains how we can attach HTTP request and response data to our Playwright test reports.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/turn-your-playwright-traces-into-living-test-documentation/turn-your-playwright-traces-into-living-test-documentation.html">Turn Your Playwright Traces Into Living Test Documentation</a> describes how we can use Playwright traces for generating a test documentation that's always up-to-date.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.thegreenreport.blog/articles/5-essential-curl-commands-for-api-testing/5-essential-curl-commands-for-api-testing.html">5 Essential cURL Commands for API Testing</a> introduces five cURL commands which make API testing much easier.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@gunashekarr11/building-a-custom-api-assertion-library-on-top-of-playwright-a795cb1de775">Building a Custom API Assertion Library on Top of Playwright</a> describes how we can write reusable assertions that help us to build a robust test suite that's easy read, write, and maintain.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-12-2025/">Clean Test Automation Monthly 12 / 2025</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/939504830/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/939504830/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2026/">Clean Test Automation Monthly 2 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-1-2026/">Clean Test Automation Monthly 1 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/939504830/0/petrikainulainen~Clean-Test-Automation-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/software-development-monthly-11-2025/</feedburner:origLink>
		<title>Software Development Monthly 11 / 2025</title>
		<link>https://feeds.feedblitz.com/~/932688041/0/petrikainulainen~Software-Development-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/932688041/0/petrikainulainen~Software-Development-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Tue, 09 Dec 2025 17:14:44 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<category><![CDATA[Vibe Coding]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28475</guid>
					<description><![CDATA[<p>The Software Development Monthly is a monthly blog post that highlights interesting or useful blog posts which I read during the previous month. This blog post shares 15 interesting or useful blog posts which I read during November 2025. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/software-development-monthly-11-2025/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/932688041/0/petrikainulainen~Software-Development-Monthly/">Software Development Monthly 11 / 2025</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-12-2025/">Software Development Monthly 12 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-1-2026/">Software Development Monthly 1 / 2026</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Software Development Monthly is a monthly blog post that shares interesting or useful content which I consumed during the previous month. This blog post is always published on the seventh day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#ai">AI</a></li>
<li><a href="#cloud">Cloud</a></li>
<li><a href="#sw-development">Software Development</a></li>
</ul>
</div>
<h2 id="ai">AI</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/software-development/ai-assisted-engineering-with-an-ai-chatbot-from-idea-to-working-code/">AI Assisted Engineering With an AI Chatbot - From Idea to Working Code</a> is my own blog post which highlights six concrete success stories from my short AI assisted engineering journey.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.kagi.com/llms">LLMs are bullshitters. But that doesn't mean they're not useful</a> explains why LLMs deliver the best results when they are used to assist an expert.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.hendrik-erz.de/post/vibe-coding-the-final-form-of-hyper-individualism">Vibe Coding: The Final Form of Hyper-Individualism</a> provides an interesting take on vibe coding and the developers who practice it.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://radekmie.dev/blog/on-ai-code-reviews/">On AI Code Reviews</a> describes the author's experiences on using Github Copilot for code reviews.</p>
<h2 id="cloud">Cloud</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://rameerez.com/send-this-article-to-your-friend-who-still-thinks-the-cloud-is-a-good-idea/">I Took All My Projects Off the Cloud</a> argues that using cloud makes no sense.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.cloudflare.com/18-november-2025-outage/">Cloudflare outage on November 18, 2025</a> is an honest postmortem of the Cloudflare outage which basically broke the internet. </p>
<h2 id="sw-development">Software Development</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://boyney123.substack.com/p/dont-sell-to-developers-focus-on">Don't sell to developers</a> provides three tips which help us to sell our products to developers.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://frederickvanbrabant.com/blog/2025-10-31-architectural-debt-is-not-just-technical-debt/">Architectural debt is not just technical debt</a> argues that architectural debt spans every layer of an organization’s architecture and wrong decisions at the enterprise level can cause more damage than technical debt.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://toomuchcoding.com/post/2015-10-16-business-value-gone-wild/">Business Value Gone Wild</a> is a somewhat depressing blog post that explains what corporate life is like and why software built within large organizations often turns into a big ball of mud.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://spring.io/blog/2025/11/12/null-safe-applications-with-spring-boot-4">Null-Safe applications with Spring Boot 4</a> provides an introduction to the efforts which aim to reduce (or maybe even eliminate) the risk of <code>NullPointerException</code> in code bases which use Spring.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://theaxolot.wordpress.com/2025/11/18/dont-refactor-like-uncle-bob-second-edition/">Don’t Refactor Like Uncle Bob (Second Edition)</a> is a review of Uncle Bob's book Clean Code, 2nd Edition.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://piotrminkowski.com/2025/11/21/arconia-for-spring-boot-dev-services-and-observability/">Arconia for Spring Boot Dev Services and Observability</a> provides a quick introduction to Arconia which enhances the development experience and observability of Spring Boot applications.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://blog.frankel.ch/wasting-time-without-10-libraries/">Are you really wasting your time in Java without these 10 libraries?</a> shares the author's opinion on 10 popular Java libraries.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.ontestautomation.com/on-finding-clients-as-an-independent-consultant/">On finding clients as an independent consultant</a> identifies five ways a freelancer can find gigs even when the market has slowed down significantly.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://iwriteaboutcode.blogspot.com/2025/11/what-still-fascinates-me-about-software.html">What still fascinates me about software dev 15 years into my career</a> identifies six things that still fascinate the author after 15 years in software development.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/software-development-monthly-11-2025/">Software Development Monthly 11 / 2025</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/932688041/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/932688041/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-12-2025/">Software Development Monthly 12 / 2025</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-1-2026/">Software Development Monthly 1 / 2026</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/932688041/0/petrikainulainen~Software-Development-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
<item>
<feedburner:origLink>https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-11-2025/</feedburner:origLink>
		<title>Clean Test Automation Monthly 11 / 2025</title>
		<link>https://feeds.feedblitz.com/~/930759443/0/petrikainulainen~Clean-Test-Automation-Monthly/</link>
					<comments>https://feeds.feedblitz.com/~/930759443/0/petrikainulainen~Clean-Test-Automation-Monthly/#respond</comments>
		
		<dc:creator><![CDATA[Petri Kainulainen]]></dc:creator>
		<pubDate>Mon, 01 Dec 2025 16:55:31 +0000</pubDate>
				<category><![CDATA[Monthly]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Clean Tests]]></category>
		<category><![CDATA[Playwright]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<category><![CDATA[Spring Framework]]></category>
		<guid isPermaLink="false">https://www.petrikainulainen.net/?p=28574</guid>
					<description><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that highlights interesting or useful test automation content which I read during the current month. This blog post shares 16 interesting or useful blog posts which I read during November 2025. <a rel="NOFOLLOW" class="excerpt_read_more" href="/monthly/clean-test-automation-monthly-11-2025/">Read More</a></p>
<p>The post <a rel="NOFOLLOW" href="https://feeds.feedblitz.com/~/930759443/0/petrikainulainen~Clean-Test-Automation-Monthly/">Clean Test Automation Monthly 11 / 2025</a> appeared first on <a rel="NOFOLLOW" href="https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2026/">Clean Test Automation Monthly 2 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-1-2026/">Software Development Monthly 1 / 2026</a></li></ul>&#160;</div>]]>
</description>
										<content:encoded><![CDATA[<p>The Clean Test Automation Monthly is a monthly blog post that shares interesting or useful test automation content which I consumed during the current month. This blog post is always published on the last day of the month.</p>
<p>Let's begin!</p>
<div class="note">
<strong>Table of Contents:</strong></p>
<ul>
<li><a href="#design">Test  Design</a></li>
<li><a href="#backend">Backend</a></li>
<li><a href="#ui-end-to-end">UI / End-to-End</a></li>
</ul>
</div>
<h2 id="design">Test Design</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://masoudbahrami.com/article/epistemic-testing-chapter-01-what-makes-a-test-a-test/">What Makes a Test a Test?</a> is a thought-provoking blog post which explains what an automated test truly is.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@mehsamadi/the-many-meanings-of-test-from-experiment-to-evaluation-9a5757cb2a19">The Many Meanings of 'Test': From Experiment to Evaluation</a> explains how the author transforms understanding into automated tests.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@vaibhavc121/ai-in-test-automation-what-actually-makes-sense-and-what-doesnt-e571e7ed13c1">AI in Test Automation: What Actually Makes Sense (and What Doesn’t)</a> introduces six use cases where using AI makes sense, identifies three situations where we shouldn't use AI, and gives tips that help us combine human logic with AI.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://ai.plainenglish.io/ai-assisted-test-automation-real-world-experience-with-playwright-agents-and-github-copilot-4bcd15ad4ce4">AI-Assisted Test Automation: Real-World Experience with Playwright Agents and GitHub Copilot</a> shares the author's experiences using AI tools like Playwright AI Agents, GitHub Copilot, Cursor, and LLMs in their test automation workflow.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@abhishek.builds/how-i-approach-performance-testing-for-modern-apis-27fe81a2509d">How I Approach Performance Testing for Modern APIs</a> gives six tips that help us to build solid performance tests for modern APIs.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@ran.algawi/why-your-97-test-coverage-is-a-lie-607eff8c6740">Why Your 97% Test Coverage Is a Lie</a> explains why high test coverage doesn't guarantee that our code has no bugs and provides three tips that help us to write better automated tests.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@alexanderzich/from-test-pyramid-to-christmas-tree-0c03ad035e76">From Test Pyramid to Christmas Tree</a> is yet another blog post which argues that the test automation pyramid should be replaced with something else (this time with a Christmas tree).</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@ran.algawi/its-just-a-flaky-test-the-most-expensive-lie-in-engineering-4b18b0207d96">"It’s Just A Flaky Test": The Most Expensive Lie in Engineering</a> explains why ignoring flaky tests and rerunning the CI/CD pipeline is a costly mistake.</p>
<h2 id="backend">Backend</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://vladmihalcea.com/clean-up-test-data-spring/">The best way to clean up test data with Spring and Hibernate</a> describes why the author doesn't use <code>@DataJpaTest</code> and explains how he cleans up test data with Hibernate.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://rieckpil.de/whats-new-for-testing-in-spring-boot-4-0-and-spring-framework-7/">What’s New for Testing in Spring Boot 4 and Spring Framework 7</a> provides an overview of testing-related changes that were introduced in Spring Boot 4 and Spring Framework 7.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://patodev.pl/posts/junit6-suspend/">Introducing JUnit 6: What’s New and How to Test Kotlin Suspend Functions</a> identifies the changes introduced in JUnit 6 and describes how we can write tests for Kotlin suspend functions with JUnit 6.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.baeldung.com/junit-5-engine-test-kit">A Guide to Engine Test Kit in Junit 5</a> describes how we can run tests and track test execution statistics with Engine Test Kit.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://vicky-ivanova.medium.com/beyond-the-happy-path-synthetic-test-data-in-java-with-datafaker-and-instancio-76096ea05bfe">Beyond the Happy Path: Synthetic Test Data in Java with Datafaker and Instancio</a> explains why synthetic test data is better than hard coded test data and demonstrates how we can generate test data with Datafaker and Instancio.</p>
<h2 id="ui-end-to-end">UI / End-to-End</h2>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://dev.to/vitalets/authentication-in-playwright-you-might-not-need-project-dependencies-2e02">Authentication in Playwright: You Might Not Need Project Dependencies </a> identifies the drawbacks of performing authentication in a setup project and introduces a better way to write tests that require authentication.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://medium.com/@dneprokos/how-playwright-test-agents-are-changing-the-game-in-e2e-automation-5827e19574ae">How Playwright Test Agents Are Changing the Game in E2E Automation</a> provides a solid introduction to both the Playwright MCP server and test agents.</p>
<p><a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://aykutdenizci.medium.com/sharding-in-playwright-speeding-up-your-test-suites-and-ci-pipelines-906dc1a6cf39">Sharding in Playwright: Speeding Up Your Test Suites and CI Pipelines</a> explains how we can improve the performance of our Playwright tests by leveraging sharding.</p>
<p>The post <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-11-2025/">Clean Test Automation Monthly 11 / 2025</a> appeared first on <a href="https://feeds.feedblitz.com/~/t/0/0/petrikainulainen/~https://www.petrikainulainen.net">Petri Kainulainen</a>.</p>
<Img align="left" border="0" height="1" width="1" alt="" style="border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;" hspace="0" src="https://feeds.feedblitz.com/~/i/930759443/0/petrikainulainen">
<div style="clear:both;padding-top:0.2em;"><a title="Like on Facebook" href="https://feeds.feedblitz.com/_/28/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/fblike20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Add to LinkedIn" href="https://feeds.feedblitz.com/_/16/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/linkedin20.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Post to X.com" href="https://feeds.feedblitz.com/_/24/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/x.png" style="border:0;margin:0;padding:0;"></a>&#160;<a title="Subscribe by RSS" href="https://feeds.feedblitz.com/_/20/930759443/PetriKainulainen"><img height="20" src="https://assets.feedblitz.com/i/rss20.png" style="border:0;margin:0;padding:0;"></a><h3 style="clear:left;padding-top:10px">Related Stories</h3><ul><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-3-2026/">Clean Test Automation Monthly 3 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/clean-test-automation-monthly-2-2026/">Clean Test Automation Monthly 2 / 2026</a></li><li><a rel="NOFOLLOW" href="https://www.petrikainulainen.net/monthly/software-development-monthly-1-2026/">Software Development Monthly 1 / 2026</a></li></ul>&#160;</div>]]>
</content:encoded>
					
					<wfw:commentRss>https://feeds.feedblitz.com/~/930759443/0/petrikainulainen~Clean-Test-Automation-Monthly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments></item>
</channel></rss>

