﻿<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
	<channel>
		<title>Peter Ritchie's Blog</title>
		<link>http://blog.peterritchie.com/</link>
		<description>Peter Ritchie</description>
		<copyright>2026</copyright>
		<pubDate>Fri, 06 Mar 2026 14:35:46 GMT</pubDate>
		<lastBuildDate>Fri, 06 Mar 2026 14:35:46 GMT</lastBuildDate>
		<item>
			<title>Things That Caught My Attention Last Week - March 1</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-march-1%20copy</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-march-1%20copy</guid>
			<pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source

## Domain-Driven Design, CQRS
 --&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/fencing-tokens-and-generation-clock-in-net-stop-zombie-leaders-from-writing/?utm_source=rss&amp;amp;utm_medium=rss&amp;amp;utm_campaign=fencing-tokens-and-generation-clock-in-net-stop-zombie-leaders-from-writing?utm_source=blog.peterritchie.com"&gt;Fencing Tokens and Generation Clock in .NET: Stop Zombie Leaders From Writing&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://vladikk.com/2026/02/26/coupling-weighed/?utm_source=blog.peterritchie.com"&gt;Coupling Should Be Weighed, Not Counted&lt;/a&gt; by Vlad Khononov&lt;/p&gt;
&lt;!--## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-february-update/?utm_source=blog.peterritchie.com"&gt;Visual Studio February Update&lt;/a&gt; by Mark Downie&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/recording-metrics-in-process-using-meterlistener/?utm_source=blog.peterritchie.com"&gt;Recording metrics in-process using MeterListener&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/02/24/on-debugging-problems/?utm_source=blog.peterritchie.com"&gt;On Debugging Problems&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.nimblepros.com/blogs/validating-benchmarks/#sq_hshvked81h?utm_source=blog.peterritchie.com"&gt;Validating Benchmarks in .NET&lt;/a&gt; by Philippe Vaillancourt&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tabsoverspaces.com/233961-is-it-faster-to-index-into-an-array-or-use-switch-statement-for-lookups?utm_source=paulomorgado.net&amp;amp;utm_medium=bluesky?utm_source=blog.peterritchie.com"&gt;Is it faster to index into an array or use switch statement for lookups?&lt;/a&gt; by Jiří Činčura&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/updates-to-team-calendar-extension/?utm_source=blog.peterritchie.com"&gt;Updates to Team Calendar extension&lt;/a&gt; by Dan Hellem&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/azure-documentdb-mongodb-compatible/?utm_source=blog.peterritchie.com"&gt;Azure DocumentDB: A Fully Managed MongoDB-Compatible Database&lt;/a&gt; by Khelan Modi&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-sdk-release-february-2026/?utm_source=blog.peterritchie.com"&gt;Azure SDK Release (February 2026)&lt;/a&gt; by Ronnie Geraghty&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-february-2026/?utm_source=blog.peterritchie.com"&gt;Azure Developer CLI (azd) - February 2026: JMESPath Queries &amp;amp; Deployment Slots&lt;/a&gt; by PuiChee (PC) Chan&lt;/p&gt;
&lt;!-- ## Software Development
 --&gt;
&lt;!-- ## Windows
 --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.blog/ai-and-ml/github-copilot/from-idea-to-pull-request-a-practical-guide-to-building-with-github-copilot-cli/?utm_source=blog.peterritchie.com"&gt;From idea to pull request: A practical guide to building with GitHub Copilot CLI - The GitHub Blog&lt;/a&gt; by Ari LiVigni&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/ai-and-ml/github-copilot/whats-new-with-github-copilot-coding-agent/?utm_source=blog.peterritchie.com"&gt;What's new with GitHub Copilot coding agent - The GitHub Blog&lt;/a&gt; by Andrea Griffiths&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/vector-data-in-dotnet-building-blocks-for-ai-part-2/?utm_source=blog.peterritchie.com"&gt;Vector Data in .NET - Building Blocks for AI Part 2&lt;/a&gt; by Jeremy Likness&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/ai-and-ml/generative-ai/multi-agent-workflows-often-fail-heres-how-to-engineer-ones-that-dont/?utm_source=blog.peterritchie.com"&gt;Multi-agent workflows often fail. Here's how to engineer ones that don't.&lt;/a&gt; by Gwen Davis&lt;/p&gt;
&lt;p&gt;&lt;a href="https://garymarcus.substack.com/p/turns-out-generative-ai-was-a-scam?utm_source=blog.peterritchie.com"&gt;Turns out Generative AI was a scam &lt;/a&gt; by Gary Marcus&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nolanlawson.com/2026/02/07/we-mourn-our-craft/?utm_source=blog.peterritchie.com"&gt;We mourn our craft&lt;/a&gt; by Nolan Lawson&lt;/p&gt;
&lt;p&gt;&lt;a href="https://theconversation.com/using-ai-responsibly-means-knowing-when-not-to-use-it-274671?utm_source=blog.peterritchie.com"&gt;Using AI responsibly means knowing when not to use it&lt;/a&gt; by Sam Illingworth&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - February 22</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-22</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-22</guid>
			<pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/passkeys/?utm_source=blog.peterritchie.com"&gt;How passkeys work&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;h2 id="open-source"&gt;Open-source&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.blog/open-source/maintainers/securing-the-ai-software-supply-chain-security-results-across-67-open-source-projects/?utm_source=blog.peterritchie.com"&gt;Securing the AI software supply chain: Security results across 67 open source projects&lt;/a&gt; by Gregg Cochran&lt;/p&gt;
&lt;h2 id="domain-driven-design-cqrs"&gt;Domain-Driven Design, CQRS&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/read-replicas-are-not-cqrs-stop-confusing-this/?utm_source=blog.peterritchie.com"&gt;Read Replicas Are NOT CQRS (Stop Confusing This)&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/where-vertical-slices-fit-inside-the-modular-monolith-architecture?utm_source=blog.peterritchie.com"&gt;Where Vertical Slices Fit Inside the Modular Monolith Architecture&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!--## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/02/19/using-the-azure-service-bus-emulator-for-local-wolverine-development/?utm_source=blog.peterritchie.com"&gt;Using the Azure Service Bus Emulator for Local Wolverine Development&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/validating-powershell-script-syntax-in-github-actions-workflows.htm?utm_source=blog.peterritchie.com"&gt;Validating PowerShell script syntax in GitHub Actions workflows&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/ef-core-hasqueryfilter-ii-39gf?utm_source=blog.peterritchie.com"&gt;EF Core HasQueryFilter II&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/creating-standard-and-observable-instruments/?utm_source=blog.peterritchie.com"&gt;Creating standard and &amp;quot;observable&amp;quot; instruments&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/custom-agents-in-visual-studio-built-in-and-build-your-own-agents/?utm_source=blog.peterritchie.com"&gt;Custom Agents in Visual Studio: Built in and Build-Your-Own agents&lt;/a&gt; by Rhea Patel&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://apisyouwonthate.com/newsletter/rest-is-dead-again/?utm_source=blog.peterritchie.com"&gt;Is REST Dead... Again?&lt;/a&gt; by Alexander Karan&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-jmespath-query-support/?utm_source=blog.peterritchie.com"&gt;JMESPath support comes to azd JSON output&lt;/a&gt; by Scott Addie&lt;/p&gt;
&lt;!-- ## Software Development
 --&gt;
&lt;!-- ## Windows
 --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/shortwave-ai-fatigue-and-the-long?utm_source=blog.peterritchie.com"&gt;Shortwave: AI fatigue and the long middle of adoption&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.xda-developers.com/microsoft-backing-off-its-ai-everywhere-plan-is-too-little-too-late/?utm_source=blog.peterritchie.com"&gt;Microsoft's backing off on its &amp;quot;AI everywhere&amp;quot; plan is too little, too late&lt;/a&gt; by Simon Batt&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.cio.com/article/4129620/agentic-ai-fails-without-an-architecture-of-flow-to-eliminate-the-friction-tax.html?utm_source=blog.peterritchie.com"&gt;Agentic AI fails without an architecture of flow to eliminate the friction tax&lt;/a&gt; by David Smith&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - February 15</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-15</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-15</guid>
			<pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

 --&gt;
&lt;h2 id="open-source"&gt;Open-source&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.blog/open-source/maintainers/welcome-to-the-eternal-september-of-open-source-heres-what-we-plan-to-do-for-maintainers/?utm_source=blog.peterritchie.com"&gt;Welcome to the Eternal September of open source. Here's what we plan to do for maintainers&lt;/a&gt; by Ashley Wolf&lt;/p&gt;
&lt;!-- ## Software Architecture

## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=KTsyS3rDUgg?utm_source=blog.peterritchie.com"&gt;On .NET Live: Lessons Learned Building Source Generators - YouTube&lt;/a&gt; by Jason Bock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-1/?utm_source=blog.peterritchie.com"&gt;.NET 11 Preview 1 is now available!&lt;/a&gt; by .NET Team&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/unlock-language-specific-rich-symbol-context-using-new-find_symbol-tool/?utm_source=blog.peterritchie.com"&gt;Unlock language-specific rich symbol context using new find_symbol tool&lt;/a&gt; by Sinem Akinci&lt;/p&gt;
&lt;p&gt;&lt;a href="https://barretblake.dev/posts/development/2026/02/hangfire/?utm_source=blog.peterritchie.com"&gt;Getting Started with .NET Scheduling in Hangfire&lt;/a&gt; by Barret Black&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/getting-more-information-in-msbuild-binlogs-with-property-tracking.htm?utm_source=blog.peterritchie.com"&gt;Getting more information in MSBuild binlogs with property tracking&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/aspnet-core-warmup-ef-core-58gl?utm_source=blog.peterritchie.com"&gt;ASP.NET Core warmup EF Core&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/02/14/2-weeks-of-claude-code-for-me/?utm_source=blog.peterritchie.com"&gt;2 Weeks of Claude Code for Me ΓÇô The Shade Tree Developer&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/how-to-extract-structured-data-from-images-using-ollama-in-dotnet?utm_source=blog.peterritchie.com"&gt;How to Extract Structured Data From Images Using Ollama in .NET&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=dsyyvSxL7iM?utm_source=blog.peterritchie.com"&gt;Subscribe E2/2026 - Microsoft Fabric Real-Time Intelligence - YouTube&lt;/a&gt; by Clemens Vasters&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-app-service-slot/?utm_source=blog.peterritchie.com"&gt;Deploy to Azure App Service deployment slots with azd&lt;/a&gt; by PuiChee (PC) Chan&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/maximize-azure-cosmos-db-performance-with-azure-advisor-recommendations/?utm_source=blog.peterritchie.com"&gt;Maximize Azure Cosmos DB Performance with Azure Advisor Recommendations&lt;/a&gt; by Iria Osara&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/february-patches-for-azure-devops-server-5/?utm_source=blog.peterritchie.com"&gt;February Patches for Azure DevOps Server&lt;/a&gt; by Gloridel Morales&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blogs.windows.com/windowsdeveloper/2026/02/11/enhanced-developer-tools-on-the-microsoft-store/?utm_source=blog.peterritchie.com"&gt;Enhanced developer tools on the Microsoft Store&lt;/a&gt; by Windows Developer Blog&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.eventsourcingdb.io/blog/2026/02/09/soft-delete-is-a-workaround/?utm_source=blog.peterritchie.com"&gt;Soft Delete Is a Workaround&lt;/a&gt; by Golo Roden&lt;/p&gt;
&lt;!-- ## Windows
 --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/?utm_source=blog.peterritchie.com"&gt;An AI Agent Published a Hit Piece on Me&lt;/a&gt; by Scott Shambaugh&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ardalis.com/llms-need-mark-as-answer/?utm_source=blog.peterritchie.com"&gt;Llms Need Mark as Answer&lt;/a&gt; by Ardalis (Steve Smith)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/shortwave-human-centered-ai-is-not?utm_source=blog.peterritchie.com"&gt;Shortwave: Human-centered AI is not a new idea&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - February 8</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-8</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-8</guid>
			<pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

 --&gt;
&lt;h2 id="open-source"&gt;Open-source&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://clemensv.github.io/stopwatch/?utm_source=blog.peterritchie.com"&gt;Stopwatch Overlay - Always-on-top timer for recordings &amp;amp; presentations&lt;/a&gt; by Clemens Vasters&lt;/p&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-framework-3-5-moves-to-standalone-deployment-in-new-versions-of-windows/?utm_source=blog.peterritchie.com"&gt;.NET Framework 3.5 Moves to Standalone Deployment in new versions of Windows&lt;/a&gt; by Tara Overfield&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.microsoft.com/blog/winget-configuration-set-up-your-dev-machine-in-one-command?utm_source=paulomorgado.net&amp;amp;utm_medium=bluesky?utm_source=blog.peterritchie.com"&gt;WinGet Configuration: Set up your dev machine in one command&lt;/a&gt; by Kayla Cinnamon&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/lease-pattern-in-net-a-lock-with-an-expiration-date-that-saves-your-data/?utm_source=blog.peterritchie.com"&gt;Lease Pattern in .NET: A Lock With an Expiration Date That Saves Your Data&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/roadmap-for-ai-in-visual-studio-february/?utm_source=blog.peterritchie.com"&gt;Roadmap for AI in Visual Studio (February)&lt;/a&gt; by Rhea Patel&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/creating-strongly-typed-metics-with-a-source-generator/?utm_source=blog.peterritchie.com"&gt;Exploring the (underwhelming) System.Diagnostics.Metrics source generators&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/02/02/building-a-greenfield-system-with-the-critter-stack/?utm_source=blog.peterritchie.com"&gt;Building a Greenfield System with the Critter Stack&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/integrate-keycloak-with-aspnetcore-using-oauth-2?utm_source=blog.peterritchie.com"&gt;Integrate Keycloak with ASP.NET Core Using OAuth 2.0&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.stevejgordon.co.uk/encrypting-properties-with-system-text-json-and-a-typeinforesolver-modifier-part-2?utm_source=blog.peterritchie.com"&gt;Encrypting Properties with System.Text.Json and a TypeInfoResolver Modifier (Part 2)&lt;/a&gt; by Steve Gordon&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

 --&gt;
&lt;h2 id="project-managementadministration"&gt;Project Management/Administration&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.jsnover.com/blog/2026/02/01/welcome-to-the-room/?utm_source=blog.peterritchie.com"&gt;Welcome to the Room&lt;/a&gt; by Jeffrey Snove&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/shortwave-when-institutions-stop?utm_source=blog.peterritchie.com"&gt;Shortwave: When institutions stop thinking for themselves&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://apisyouwonthate.com/newsletter/building-sustainable-apis/?utm_source=blog.peterritchie.com"&gt;Sustainable APIs&lt;/a&gt; by Alexander Karan&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-devcontainer-extensions/?utm_source=blog.peterritchie.com"&gt;Auto-install &lt;code&gt;azd&lt;/code&gt; extensions in dev containers&lt;/a&gt; by PuiChee (PC) Chan&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/how-to-enable-microsoft-entra-id-for-azure-cosmos-db-nosql/?utm_source=blog.peterritchie.com"&gt;How to Enable Microsoft Entra ID for Azure Cosmos DB (NoSQL)&lt;/a&gt; by Sudhanshu Khera&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/azure-boards-integration-with-github-copilot-includes-custom-agent-support/?utm_source=blog.peterritchie.com"&gt;Azure Boards integration with GitHub Copilot includes custom agent support&lt;/a&gt; by Dan Hellem&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://lucisqr.substack.com/p/bjarnes-last-stand-how-the-father?utm_source=blog.peterritchie.com"&gt;Bjarne-s Last Stand: How the Father of C++ Is Fighting a Losing War Against Rust&lt;/a&gt; by Henrique Bucher&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2026/02/02/code-that-fits-in-a-context-window/?utm_source=blog.peterritchie.com"&gt;Code that fits in a context window&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/essential-rules-of-software-engineering.htm?utm_source=blog.peterritchie.com"&gt;Essential Rules of Software Engineering&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/your-idempotent-code-is-lying-to-you/?utm_source=blog.peterritchie.com"&gt;Your Idempotent Code Is Lying To You&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;h2 id="windows"&gt;Windows&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://tech.slashdot.org/story/26/02/05/0023249/microsoft-adds-sysmon-to-windows?utm_source=blog.peterritchie.com"&gt;Microsoft Adds Sysmon To Windows&lt;/a&gt; by Slashdot&lt;/p&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/gh-copilot-instructions/?utm_source=blog.peterritchie.com"&gt;Using personal instructions in GitHub Copilot Chat&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;p&gt;&lt;a href="https://frontendmasters.com/blog/what-senior-engineers-need-to-know-about-ai-coding-tools/?utm_source=blog.peterritchie.com"&gt;What Senior Engineers Need to Know About AI Coding Tools&lt;/a&gt; by Marc Grabanski&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/?utm_source=blog.peterritchie.com"&gt;How to write a great agents.md: Lessons from over 2,500 repositories&lt;/a&gt; by Matt Nigh&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/ai-and-ml/generative-ai/continuous-ai-in-practice-what-developers-can-automate-today-with-agentic-ci/?utm_source=blog.peterritchie.com"&gt;Continuous AI in practice: What developers can automate today with agentic CI&lt;/a&gt; by GitHub Staff&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - February 1</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-1</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-february-1</guid>
			<pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

 --&gt;
&lt;h2 id="open-source"&gt;Open-source&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/madskristensen/Modes?utm_source=blog.peterritchie.com"&gt;GitHub - madskristensen/Modes: A Visual Studio extension&lt;/a&gt; by madskristensen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/enable-debug-logging-in-the-github-cli-gh.htm?utm_source=blog.peterritchie.com"&gt;Enable debug logging in the GitHub CLI (gh)&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/patterns-of-distributed-systems-in-c-and-net-a-new-series-for-people-who-ship-real-systems/?utm_source=blog.peterritchie.com"&gt;Patterns of Distributed Systems in C# and .NET: A New Series for People Who Ship Real Systems&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=MadsKristensen.Modes?utm_source=blog.peterritchie.com"&gt;Modes - Visual Studio Marketplace&lt;/a&gt; by Mads Kristensen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.josephguadagno.net/2026/01/30/introducing-morespeakers-com?utm_source=blog.peterritchie.com"&gt;Introducing MoreSpeakers.com&lt;/a&gt; by Joseph Guadagno&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/join-us-at-ndc-london-2026/?utm_source=blog.peterritchie.com"&gt;Join Microsoft at NDC London 2026&lt;/a&gt; by .NET Team&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-january-update-enhanced-editor-experience/?utm_source=blog.peterritchie.com"&gt;Visual Studio January Update&lt;/a&gt; by Simona Liao&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/developer-skills/programming-languages-and-frameworks/7-learnings-from-anders-hejlsberg-the-architect-behind-c-and-typescript/?utm_source=blog.peterritchie.com"&gt;7 learnings from Anders Hejlsberg: The architect behind C# and TypeScript&lt;/a&gt; by Aaron Winston&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/creating-and-consuming-metrics-with-system-diagnostics-metrics-apis/?utm_source=blog.peterritchie.com"&gt;Creating and consuming metrics with System.Diagnostics.Metrics APIs&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/doomsummarizer-deep-research?utm_source=blog.peterritchie.com"&gt;DoomSummarizer: DocSummarizer's Younger, Smarter Brother (English)&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/c-14-extension-blocks-1d6k?utm_source=blog.peterritchie.com"&gt;C# 14 extension blocks&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/01/26/wolverine-idioms-for-mediatr-users/?utm_source=blog.peterritchie.com"&gt;Wolverine Idioms for MediatR Users&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/containerize-your-dotnet-applications-without-a-dockerfile?utm_source=blog.peterritchie.com"&gt;Containerize Your .NET Applications Without a Dockerfile&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.stevejgordon.co.uk/the-grand-mystery-of-the-missing-18-bytes?utm_source=blog.peterritchie.com"&gt;The Grand Mystery of the Missing 18 Bytes&lt;/a&gt; by Steve Gordon&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-sdk-release-january-2026/?utm_source=blog.peterritchie.com"&gt;Azure SDK Release (January 2026)&lt;/a&gt; by Ronnie Geraghty&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/github-copilot-cli-cosmos-db-agent-kit/?utm_source=blog.peterritchie.com"&gt;Accelerate Your Cosmos DB Infrastructure with GitHub Copilot CLI and Azure Cosmos DB Agent Kit&lt;/a&gt; by Sajeetharan Sinnathurai&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/css-corner-shape/?utm_source=blog.peterritchie.com"&gt;Making interesting borders with CSS corner-shape&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;!-- ## Windows

--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.anthropic.com/research/disempowerment-patterns?utm_source=blog.peterritchie.com"&gt;Disempowerment patterns in real-world AI usage&lt;/a&gt; by Anthropic&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hbr.org/2026/01/when-ai-amplifies-the-biases-of-its-users?utm_source=blog.peterritchie.com"&gt;When AI Amplifies the Biases of Its Users&lt;/a&gt; by Grace Chang and Heidi Grant&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/shortwave-they-just-dont-work-yet?utm_source=blog.peterritchie.com"&gt;Shortwave: They Just DonΓÇÖt Work (Yet)&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apievangelist.com/2026/02/02/why-do-i-need-agents-when-i-have-requests-cron-jobs-and-events/?utm_source=blog.peterritchie.com"&gt;Why Do I Need Agents When I Have Requests, CRON Jobs, and Events?&lt;/a&gt; by Kin Lane&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - January 26</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-26</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-26</guid>
			<pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source
 --&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/systems-thinking-meets-simplicity-first-a-decision-framework-for-software-architects/?utm_source=blog.peterritchie.com"&gt;Systems Thinking Meets Simplicity-First: A Decision Framework for Software Architects&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/you-cant-future-proof-software-architecture/?utm_source=blog.peterritchie.com"&gt;You Can't Future-Proof Software Architecture&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/making-foreach-on-an-ienumerable-allocation-free-using-reflection-and-dynamic-methods/?utm_source=blog.peterritchie.com"&gt;Making foreach on an IEnumerable allocation-free using reflection and dynamic methods&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/enterprise-patterns-for-asp-net-core-minimal-api-data-transfer-object-pattern/?utm_source=blog.peterritchie.com"&gt;Enterprise Patterns for ASP.NET Core Minimal API: Data Transfer Object Pattern&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/simple-ocr-ner-extraction?utm_source=blog.peterritchie.com"&gt;Simple OCR and NER Feature Extraction in C# with ONNX&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/c-console-menus-with-actions-67n?utm_source=blog.peterritchie.com"&gt;C# Console menus with Actions&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/01/22/martens-aggregation-projection-subsystem/?utm_source=blog.peterritchie.com"&gt;Marten's Aggregation Projection Subsystem&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

 --&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2026/01/19/filtering-as-domain-logic/?utm_source=blog.peterritchie.com"&gt;Filtering as domain logic&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;!-- ## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/azure-cosmos-db-tv-ep-110-mcp-toolkit-ai-agents/?utm_source=blog.peterritchie.com"&gt;AI Agents MCP Cosmos DB Transforming Development&lt;/a&gt; by Mark Brown&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/azure-boards-additional-field-filters-private-preview/?utm_source=blog.peterritchie.com"&gt;Azure Boards Additional Field Filters in Preview&lt;/a&gt; by Dan Hellem&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20260123-00/?p=112008?utm_source=blog.peterritchie.com"&gt;C++ has scope_exit for running code at scope exit. C# says &amp;quot;We have scope_exit at home.&amp;quot;&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/touch-on-ps/?utm_source=blog.peterritchie.com"&gt;Remaking the Linux &amp;quot;touch&amp;quot; command in PowerShell&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/signal-ping-code-is-easy-ownership?utm_source=blog.peterritchie.com"&gt;Signal ping : Code is easy; ownership is not&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sadukie.com/2026/01/19/cleveland-tech-is-not-dead.html?utm_source=blog.peterritchie.com"&gt;Cleveland Tech is not Dead!&lt;/a&gt; by sadukie&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/a-practical-demo-of-zero-downtime-migrations-using-password-hashing?utm_source=blog.peterritchie.com"&gt;A Practical Demo of Zero-Downtime Migrations Using Password Hashing&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Windows

--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.blog/developer-skills/application-development/context-windows-plan-agent-and-tdd-what-i-learned-building-a-countdown-app-with-github-copilot/?utm_source=blog.peterritchie.com"&gt;Context windows, Plan agent, and TDD: What I learned building a countdown app with GitHub Copilot&lt;/a&gt; by Chris Reddington&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Introducing Pri.ProductivityExtensions.Source - A .NET Standard Package to Enable Modern C# Language Features</title>
			<link>http://blog.peterritchie.com/posts/Introducing-Pri.ProductivityExtensions.Source</link>
			<description>&lt;p&gt;&lt;img src="../assets/dotnet-standard-errors.png" class="img-fluid" alt=".NET Standard compile errors"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/Introducing-Pri.ProductivityExtensions.Source</guid>
			<pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/dotnet-standard-errors.png" class="img-fluid" alt=".NET Standard compile errors" /&gt;&lt;/p&gt;
&lt;p&gt;Targeting .NET Standard for a class library means that the library will be compatible with applications designed for past versions of .NET. E.g., an application targeting .NET Framework 4.8 or .NET Core 2.1 will be able to load a class library targeting .NET Standard 2.0 because it can only rely on the same API surface that the application does.&lt;/p&gt;
&lt;p&gt;There are a few reasons developers need to work in .NET Standard. A popular one is writing Roslyn analyzers, another is writing PowerShell modules (Cmdlets) in C#. .NET Standard is a formal specification of .NET APIs available across multiple .NET implementations. It's like a definition of a slice of APIs that are implemented across .NET versions. Designing for a slice of APIs allows you to design and deploy class libraries that will work across .NET implementations. The latest version of .NET Standard (2.1) was released in September 2020.&lt;/p&gt;
&lt;p&gt;Paradoxically, .NET languages depend on base-class libraries for aspects of their implementation. For example, the C# language feature &lt;code&gt;foreach&lt;/code&gt; depends on the types &lt;code&gt;IEnumerable&lt;/code&gt;, &lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt;, &lt;code&gt;IEnumerator&lt;/code&gt;, and &lt;code&gt;IEnumerator&amp;lt;T&amp;gt;&lt;/code&gt;. Specifications like .NET Standard enable C# language features across .NET implementations by including those dependent types in their specification. But languages evolve and improve over time, as do base class libraries.&lt;/p&gt;
&lt;p&gt;Since .NET Standard was last updated in 2020, some new language features that depend on new types in the base class library have been introduced. Some of these new language features aren't necessarily supported in .NET Standard, even though you can use the latest compiler version when building .NET Standard class libraries. For example, Ranges and Indices are a feature added to C# 8.0, released in September 2019. Ranges and Indices depend upon the &lt;code&gt;Range&lt;/code&gt; and &lt;code&gt;Index&lt;/code&gt; types. But to write a PowerShell library that supports Windows PowerShell and PowerShell 7, you have to target .NET Standard 2.0, whose API surface was specified around August 2017--roughly two years before &lt;code&gt;Range&lt;/code&gt; and &lt;code&gt;Index&lt;/code&gt; existed. This means Ranges and Indices aren't supported out of the box in C# code targeting .NET Standard 2.0. &lt;code&gt;var lastWord = words[^1]&lt;/code&gt; or &lt;code&gt;var firstFourWords = words[0..3]&lt;/code&gt; will cause errors (&lt;code&gt;Predefined type 'System.Index' is not defined or imported&lt;/code&gt;, and &lt;code&gt;Predefined type 'System.Range' is not defined or imported&lt;/code&gt;, respectively).&lt;/p&gt;
&lt;p&gt;Fortunately, the compiler is flexible about where those predefined types are defined. Someone can't simply create a .NET Standard 2.0 library with Range and Index as public types, because they will clash with modern versions of .NET (e.g., in an XUnit test project). But the .NET Standard 2.0 library can create internal versions of those classes that the compiler is happy to resolve to. But having everyone who authors a .NET Standard 2.0 library write their own &lt;code&gt;Range&lt;/code&gt; and &lt;code&gt;Index&lt;/code&gt; classes (as well as any other class that modern C# syntax requires, like &lt;code&gt;CallerArgumentExpressionAttribute&lt;/code&gt;, &lt;code&gt;DoesNotReturnAttribute&lt;/code&gt;, etc.) is &lt;em&gt;problematic&lt;/em&gt;, to say the least.&lt;/p&gt;
&lt;h2 id="content-only-nuget-packages"&gt;Content-only NuGet Packages&lt;/h2&gt;
&lt;p&gt;.NET and NuGet packages support content- or source-only packages. Source-only packages are NuGet packages that, instead of packaging binaries like DLLs, package source code. Source-only packages don't add any assembly dependencies that require deployment.&lt;/p&gt;
&lt;p&gt;That's where Pri.ProductivityExtensions.Source comes in. Pri.ProductivityExtensions.Source is a source-only NuGet package that includes the source code for various types created after .NET Standard 2.x to support C# language features (and some helper extensions like &lt;code&gt;ArgumentException.ThrowIfNull&lt;/code&gt; that depend on those features) that aren't available in .NET Standard.&lt;/p&gt;
&lt;p&gt;&amp;quot;Pri.ProductivityExtensions.Source&amp;quot; is also the ID of the package and can be found on NuGet.org &lt;a href="https://www.nuget.org/packages/Pri.ProductivityExtensions.Source" title="Pri.ProductivityExtensions.Source on NuGet.org"&gt;here&lt;/a&gt;. It can be added to a project via the .NET API: &lt;code&gt;dotnet add package Pri.ProductivityExtensions.Source&lt;/code&gt;, or via Package Manager Console: &lt;code&gt;Install-Package Pri.ProductivityExtensions.Source&lt;/code&gt;. It is open source, and the source code is available on &lt;a href="https://github.com/peteraritchie/Pri.ProductivityExtensions.Source" title="Pri.ProductivityExtensions.Source on GitHub"&gt;GitHub&lt;/a&gt;. For an example using Pri.ProductivityExtensions.Source see &lt;a href="https://github.com/peteraritchie/Pri.Essentials.DotnetPsCmds"&gt;Pri.Essentials.DotnetPsCmds&lt;/a&gt;. And if you install &lt;a href="https://www.powershellgallery.com/packages/Pri.Essentials.DotnetPsCmds/" title="Pri.Essentials.DotnetPsCmds in PowerShell Gallery"&gt;DotnetPsCmds&lt;/a&gt;, you can install Pri.ProductivityExtensions.Source in PowerShell: &lt;code&gt;Add-DotnetPackages Pri.ProductivityExtensions.Source&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When you reference Pri.ProductivityExtensions.Source, it causes the content (source code) to be considered part of the target project. The source code remains in the &lt;code&gt;.nuget&lt;/code&gt; cache and is not copied alongside the rest of your source code so no new source code needs to be committed to revision control.&lt;/p&gt;
&lt;p&gt;The types included in Pri.ProductivityExtensions.Source are &lt;code&gt;internal&lt;/code&gt;, so they won't clash if Pri.ProductivityExtensions.Source is referenced in a project targeting a modern .NET implementation. Although I don't recommend using Pri.ProductivityExtensions.Source in a .NET Standard class library that is targeting a modern .NET implementation because it will resolve to Pri.ProductivityExtensions.Source instead of the .NET implementation's.&lt;/p&gt;
&lt;p&gt;If you've created a .NET Standard library and have wanted to use the latest version of the compiler but start receiving compiler errors like &lt;code&gt;The type or namespace name 'CallerArgumentExpressionAttribute' does not exist in the namespace 'System.Runtime.CompilerServices' (are you missing an assembly reference?)&lt;/code&gt; or the other aforementioned errors, fear not, you simply need to reference Pri.ProductivityExtensions.Source!&lt;/p&gt;
&lt;p&gt;Pri.ProductivityExtensions.Source enables the following modern C# compiler features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ranges and indices&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[CallerArgumentExpression]&lt;/code&gt; &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression" title="Caller argument expression - C# feature specifications"&gt;🔗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[DoesNotReturn]&lt;/code&gt; &lt;a href="https://github.com/dotnet/roslyn/issues/127" title="Proposal: [DoesNotReturn]"&gt;🔗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[NotNullWhen]&lt;/code&gt; &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/attributes/nullable-analysis" title="Attributes for null-state static analysis interpreted by the C# compiler"&gt;🔗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, Pri.ProductivityExtensions.Source includes the following helper methods that otherwise depend on newer language-dependent types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ArgumentException.ThrowIfNullOrWhiteSpace(string?, string?)&lt;/code&gt; &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/system.argumentexception.throwifnullorwhitespace?view=net-10.0" title="ArgumentException.ThrowIfNullOrWhiteSpace(String, String) Method"&gt;🔗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ArgumentNullException.ThrowIfNull(object?, string?)&lt;/code&gt; &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/system.argumentnullexception.throwifnull?view=net-10.0" title="ArgumentNullException.ThrowIfNull Method"&gt;🔗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="understanding-c-timeline-since-last.net-standard"&gt;Understanding C# Timeline Since Last .NET Standard&lt;/h2&gt;
&lt;p&gt;The last version of .NET Standard (2.1) was released in 2020. Since 2020, C# versions 10, 11, 12, 13, and 14 have been released. A lot has changed across 5 versions of C#, including the use of numerous APIs to enable various features. There isn't a complete list of base-class APIs that the C# compiler depends on.&lt;/p&gt;
&lt;blockquote class="blockquote"&gt;
&lt;p&gt;&lt;strong&gt;If you find this useful&lt;/strong&gt;&lt;br /&gt;
I'm a freelance software architect. If you find this post useful and think I can provide value to your team, please reach out to see how I can help. See &lt;a href="/about"&gt;About&lt;/a&gt; for information about the services I provide.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- Calendly inline widget begin --&gt;
&lt;div class="calendly-inline-widget" data-url="https://calendly.com/peterritchie/client-meet-greet-zoom" style="min-width:320px;height:700px;"&gt;&lt;/div&gt;
&lt;script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async&gt;&lt;/script&gt;
&lt;!-- Calendly inline widget end --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - January 19</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-19</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-19</guid>
			<pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source
 --&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://lassala.net/2026/01/10/cqrs-and-human-intent/?utm_source=blog.peterritchie.com"&gt;CQRS and Human Intent&lt;/a&gt; by Claudio Lassala&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/stop-building-spas-for-every-screen-htmx-asp-net-core-razor-pages-workshop-open/?utm_source=blog.peterritchie.com"&gt;Stop Building SPAs for Every Screen: htmx + ASP.NET Core Razor Pages Workshop (Open)&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/generating-sbom-for-nuget-packages.htm?utm_source=blog.peterritchie.com"&gt;Generating SBOM for NuGet packages&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=UdJE7LPy0dc?utm_source=blog.peterritchie.com"&gt;How to Run Azure Service Bus Locally using .NET Aspire - YouTube&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-and-dotnet-framework-january-2026-servicing-updates/?utm_source=blog.peterritchie.com"&gt;.NET and .NET Framework January 2026 servicing releases updates&lt;/a&gt; by Rahul Bhandari (MSFT)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/copilot-memories/?utm_source=blog.peterritchie.com"&gt;Copilot Memories&lt;/a&gt; by Jessie Houghton&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/how-this-website-is-built.htm?utm_source=blog.peterritchie.com"&gt;How this website is built&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2026/01/14/aspire-functions-references/?utm_source=blog.peterritchie.com"&gt;How does Aspire expose resource connection info to the Azure Functions runtime?&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/01/13/how-jasperfx-supports-our-customers/?utm_source=blog.peterritchie.com"&gt;How JasperFx Supports our Customers&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/solving-the-distributed-cache-invalidation-problem-with-redis-and-hybridcache?utm_source=blog.peterritchie.com"&gt;Solving the Distributed Cache Invalidation Problem with Redis and HybridCache&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://apisyouwonthate.com/newsletter/openapi-tools-relaunch/?utm_source=blog.peterritchie.com"&gt;A Shiny New OpenAPI Tools&lt;/a&gt; by Alexander Karan&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/building-your-first-serverless-http-api-on-azure-with-azure-functions-fastapi/?utm_source=blog.peterritchie.com"&gt;Part 1: Building Your First Serverless HTTP API on Azure with Azure Functions &amp;amp; FastAPI&lt;/a&gt; by Richa Gaur&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/whats-new-with-azure-repos/?utm_source=blog.peterritchie.com"&gt;What's New in Azure Repos: Recent Updates&lt;/a&gt; by Dan Hellem&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2026/01/12/two-regimes-of-git/?utm_source=blog.peterritchie.com"&gt;Two regimes of Git&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;!-- ## Windows

--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.blog/ai-and-ml/generative-ai/want-better-ai-outputs-try-context-engineering/?utm_source=blog.peterritchie.com"&gt;Want better AI outputs? Try context engineering.&lt;/a&gt; by Christina Warren&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/llms-fail-as-sensors?utm_source=blog.peterritchie.com"&gt;Why LLMs Fail as Sensors (and What Brains Get Right)&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/code-wave-build-log/?utm_source=blog.peterritchie.com"&gt;Code Wave Build Log&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/intelligence-without-a-witness?utm_source=blog.peterritchie.com"&gt;Intelligence without a witness&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apievangelist.com/2026/01/17/agents-itis-all-apis-nothing-has-changed/?utm_source=blog.peterritchie.com"&gt;Agents. It Is All APIs. Nothing Has Changed&lt;/a&gt; by Kin Lane&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - January 12</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-12</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-12</guid>
			<pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source
 --&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/solving-message-ordering-from-first-principles?utm_source=blog.peterritchie.com"&gt;Solving Message Ordering from First Principles&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://codewithmukesh.com/blog/dotnet-developer-roadmap/?utm_source=blog.peterritchie.com"&gt;The Ultimate .NET Developer Roadmap 2026 - AI, Backend, Blazor &amp;amp; Full-Stack&lt;/a&gt; by Mukesh Murugan&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/enterprise-patterns-for-asp-net-core-front-controller-and-mvc-pattern/?utm_source=blog.peterritchie.com"&gt;Enterprise Patterns for ASP.NET Core: Front Controller and MVC Pattern&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.josephguadagno.net/2026/01/10/generate-an-open-graph-profile-image-with-c-sharp?utm_source=blog.peterritchie.com"&gt;Generate an Open Graph Profile Image with C#&lt;/a&gt; by Joseph Guadagno&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/mongodb-efcore-provider-queryable-encryption-vector-search/?utm_source=blog.peterritchie.com"&gt;EF Core MongoDB Queryable Encryption and Vector Search Explained&lt;/a&gt; by Rishit Bhatia&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/updates-to-netescapaades-enumgenerators-new-apis-and-system-memory-support/?utm_source=blog.peterritchie.com"&gt;Recent updates to NetEscapades.EnumGenerators: new APIs and System.Memory support&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/zero-copy-binarydata-creation-from-memorystream-in-dotnet.htm?utm_source=blog.peterritchie.com"&gt;Zero-copy BinaryData creation from MemoryStream in .NET&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2026/01/08/publishing-activity-reporter/?utm_source=blog.peterritchie.com"&gt;Reporting for duty: the story of IPipelineActivityReporter&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/how-to-nuget-local-feeds-2nci?utm_source=blog.peterritchie.com"&gt;How to: NuGet local feeds&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/cosmos-db-mirroring-private-endpoints/?utm_source=blog.peterritchie.com"&gt;Public Preview: Cosmos DB Mirroring in Microsoft Fabric with Private Endpoints&lt;/a&gt; by Mark Brown&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://techcrunch.com/2026/01/05/hacktivist-deletes-white-supremacist-websites-live-on-stage-during-hacker-conference/?utm_source=blog.peterritchie.com"&gt;Hacktivist deletes white supremacist websites live onstage during hacker conference&lt;/a&gt; by Lorenzo Franceschi-Bicchierai&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2026/01/05/coupling-from-a-big-o-perspective/?utm_source=blog.peterritchie.com"&gt;Coupling from a big-O perspective&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/mcp-is-a-transport-not-an-architecture?utm_source=blog.peterritchie.com"&gt;MCP Is a Transport, Not an Architecture (English)&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;!-- ## Windows

--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/how-i-actually-use-claude-code-in-2026-and-why-it-still-needs-a-parent-f029824f4539?utm_source=blog.peterritchie.com"&gt;How I Actually Use Claude Code in 2026, and Why It Still Needs a Parent&lt;/a&gt; by David Lee&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/career-chat-ai-networking/?utm_source=blog.peterritchie.com"&gt;A career chat with students in the age of AI&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Announcing DotnetPsCmds - PowerShell CmdLets for .NET</title>
			<link>http://blog.peterritchie.com/posts/announcing-dotnetpscmds-powershell-cmdlets-for-dotnet</link>
			<description>&lt;p&gt;&lt;img src="../assets/dotnet-powershell-commands.png" class="img-fluid" alt="DotNet Powershell Commands"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/announcing-dotnetpscmds-powershell-cmdlets-for-dotnet</guid>
			<pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/dotnet-powershell-commands.png" class="img-fluid" alt="DotNet Powershell Commands" /&gt;&lt;/p&gt;
&lt;p&gt;Have you ever wondered why there aren't PowerShell Cmdlets similar to dotnet CLI commands?&lt;/p&gt;
&lt;p&gt;I've played around with some PowerShell scripts—including some scripts for scaffolding various .NET projects—and some C#-based CmdLets for various things. But I decided to take that experience to the next level by publishing a PowerShell module that provides dotnet CLI functionality while leveraging PowerShell idioms and features.&lt;/p&gt;
&lt;p&gt;PowerShell has some interesting features that can make working in the command-line and building scripts a little nicer. One of those features is pipelining. Cmd and Bash have pipes, I know; but PowerShell takes it a step further by supporting object-oriented pipelining. A PowerShell CmdLet can have a .NET object as output (not just text) and can be propagated through the PowerShell command pipeline.&lt;/p&gt;
&lt;h2 id="mvp"&gt;MVP&lt;/h2&gt;
&lt;p&gt;The initial (pre) release is very much an MVP--it provides what I consider minimal functionality to support scaffolding .NET solutions and projects.  It essentially wraps dotnet CLI commands adding some convenience and opinions (&amp;quot;opinionation&amp;quot;?) to defaults and some features.&lt;/p&gt;
&lt;p&gt;To get started with the cmdlets, you can import the module from the PowerShell Gallery:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;Install-Module -Name Pri.Essentials.DotnetPsCmds
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As this release builds on the .NET CLI, the .NET CLI still needs to be installed.&lt;/p&gt;
&lt;h3 id="creating-a-solution"&gt;Creating a Solution&lt;/h3&gt;
&lt;p&gt;To create a solution in the current directory, with a solution name matching the name of the current directory (equivalent of &lt;code&gt;dotnet new sln&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$s = New-DotnetSolution;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output of this cmdlet is a object-oriented representation of the new solution.&lt;/p&gt;
&lt;h3 id="creating-a-project"&gt;Creating a Project&lt;/h3&gt;
&lt;p&gt;To create a project (a &lt;code&gt;classlib&lt;/code&gt; project) in a new &lt;code&gt;Domain&lt;/code&gt; directory with a project name of &lt;code&gt;MyProduct.Domain&lt;/code&gt; (equivalent of &lt;code&gt;dotnet new classlib -o Domain -n MyProduct.Domain&lt;/code&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$d = New-DotnetProject 'classlib' Domain MyProduct.Domain;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output of this cmdlet is a object-oriented representation of the new project.&lt;/p&gt;
&lt;h3 id="adding-package-references"&gt;Adding Package References&lt;/h3&gt;
&lt;p&gt;With object instances of projects and solutions, we can now re-use those objects for other commands, like adding package references to a project:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$t = New-DotnetProject 'xunit' MyProduct/Tests MyProduct.Tests;
Add-DotnetPackages -PackageIds NSubstitute -Project $t;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="adding-project-references"&gt;Adding Project References&lt;/h3&gt;
&lt;p&gt;Similar to adding package references, project objects can be re-used when a project needs to reference another project:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$t = New-DotnetProject 'xunit' MyProduct/Tests MyProduct.Tests;
$d = New-DotnetProject 'classlib' Domain MyProduct.Domain;
Add-DotnetProjectReference -Project $d -TargetProject $t;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="leveraging-pipelining"&gt;Leveraging Pipelining&lt;/h3&gt;
&lt;p&gt;DotNet PowerShell Commands support pipelining. For example, the output of &lt;code&gt;New-DotnetSolution&lt;/code&gt; can be piped to &lt;code&gt;New-DotnetProject&lt;/code&gt; to add the newly created project to the newly created solution:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;New-DotnetSolution | New-DotnetProject 'classlib' Domain MyProduct.Domain;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can store the solution object in a variable to enable adding multiple new projects to the solution:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$s = New-DotnetSolution;
$s | New-DotnetProject 'classlib' Domain MyProduct.Domain;
$s | New-DotnetProject 'xunit' Test MyProduct.Tests;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And pipelining works with adding package references:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$t = New-DotnetProject 'xunit' MyProduct/Tests MyProduct.Tests;
$t | Add-DotnetPackages -PackageIds NSubstitute;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As well as project references:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$d = New-DotnetProject 'classlib' Domain MyProduct.Domain;
New-DotnetProject 'xunit' Tests MyProduct.Tests `
    | Add-DotnetProjectReference -Project $d;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or with project references &lt;em&gt;&lt;strong&gt;and&lt;/strong&gt;&lt;/em&gt; package references:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$d = New-DotnetProject 'classlib' Domain MyProduct.Domain;
$t = New-DotnetProject 'xunit' Tests MyProduct.Tests `
    | Add-DotnetPackages NSubstitute `
    | Add-DotnetProjectReference -Project $d;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="leveraging-objects"&gt;Leveraging Objects&lt;/h3&gt;
&lt;p&gt;You can leverage properties of objects to avoid repeating yourself when creating solutions and projects with namespaces. For example, rather than having the &amp;quot;MyProduct&amp;quot; portion of the namespace/filename repeated, you can use the solution's &lt;code&gt;Name&lt;/code&gt; property (assuming the current directory has the correct name as the &amp;quot;product name&amp;quot;):&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$s = New-DotnetSolution;
$d = $s | New-DotnetProject 'classlib' &amp;quot;Domain&amp;quot; &amp;quot;$($s.Name).Domain&amp;quot;;
$t = $s | New-DotnetProject 'xunit' &amp;quot;Tests&amp;quot; &amp;quot;$($s.Name).Tests&amp;quot; `
    | Add-DotnetPackages NSubstitute `
    | Add-DotnetProjectReference -Project $d;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which, with equivalent to the following with &lt;code&gt;dotnet&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;dotnet new sln
dotnet new classlib -o Domain -n MyProduct.Domain
del Domain/Class1.cs
dotnet sln add Domain --in-root
dotnet new xunit -o Tests -n MyProduct.Tests
del Tests/UnitTest1.cs
dotnet add Tests package NSubstitute
dotnet add Tests reference Domain
dotnet sln add Tests --in-root
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(For details on deleting Class1.cs and UnitTest1.cs, see below.)&lt;/p&gt;
&lt;h2 id="opinionated"&gt;Opinionated&lt;/h2&gt;
&lt;p&gt;I mentioned DotNet PowerShell Commands is opinionated in certain respects, here's where.&lt;/p&gt;
&lt;h3 id="solution-folders-for-projects"&gt;Solution Folders For Projects&lt;/h3&gt;
&lt;p&gt;I noticed recently that adding projects to a solution (&lt;code&gt;dotnet sln add&lt;/code&gt;) automatically creates solution folders for projects whose name wasn't identical to the parent folder &lt;em&gt;and doesn't add solution folders when the names are identical&lt;/em&gt;. (Using &lt;code&gt;-o&lt;/code&gt; &lt;em&gt;and&lt;/em&gt; &lt;code&gt;-n&lt;/code&gt; with &lt;code&gt;dotnet new &amp;lt;template&amp;gt;&lt;/code&gt; creates a project with a different name from the directory name.) Personally, I find it cumbersome to navigate the file system and especially repos like GitHub when I have project folders that match the project file name and fully-qualified project names (for the sake of default namespaces). e.g. &lt;code&gt;repos/Pri.Essentials.DotnetPsCmds/src/Pri.Essentials.DotnetPsCmds/Pri.Essentials.DotnetPsCmds.csproj&lt;/code&gt; and tend toward shortened directory names for navigability and readability (&lt;code&gt;repos/DotnetPsCmds/src/DotnetPsCmds/Pri.Essentials.DotnetPsCmds.csproj&lt;/code&gt;) because directory listings often just show a less than useful truncated list of folders that appear to have the same name (Maybe this is better solved with support for setting the default namespace when creating a project? But &lt;code&gt;dotnet&lt;/code&gt; doesn't support that. 😉)&lt;/p&gt;
&lt;p&gt;&lt;img src="../assets/unreadable-folder-list.png" class="img-fluid" alt="Unreadable Folder List" /&gt;&lt;/p&gt;
&lt;p&gt;The implementation for this currently manifests in DotNet PowerShell Commands by using &lt;code&gt;--in-root&lt;/code&gt; with &lt;code&gt;dotnet sln add&lt;/code&gt; to avoid the creation of solution folders with new projects.&lt;/p&gt;
&lt;h3 id="class1.cs"&gt;&lt;code&gt;Class1.cs&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Personally, the first thing I do when creating a class library project via &lt;code&gt;dotnet&lt;/code&gt; or Visual Studio is to delete the &lt;code&gt;Class1.cs&lt;/code&gt; file. DotNet PowerShell Commands automatically deletes this file when it creates a &lt;code&gt;classlib&lt;/code&gt; project. I'm assuming users of DotNet PowerShell Commands are intermediate to advanced and feel the same way.&lt;/p&gt;
&lt;h3 id="unittest1.cs"&gt;&lt;code&gt;UnitTest1.cs&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;DotNet PowerShell Commands does the same thing with &lt;code&gt;UnitTest1.cs&lt;/code&gt; in &lt;code&gt;xunit&lt;/code&gt;/&lt;code&gt;xunit3&lt;/code&gt; projects as it does with &lt;code&gt;Class1.cs&lt;/code&gt; in &lt;code&gt;classlib&lt;/code&gt; projects.&lt;/p&gt;
&lt;h2 id="extra-features-so-far"&gt;Extra Features, So Far&lt;/h2&gt;
&lt;p&gt;Over and above what &lt;code&gt;dotnet&lt;/code&gt; provides, DotNet PowerShell Commands also allows creating a custom solution folder when adding a project to a solution via &lt;code&gt;Add-DotnetProject&lt;/code&gt; (not to be confused with &lt;code&gt;New-DotnetProject&lt;/code&gt;). This is partially to circumvent the opinionated view that hardly anyone would want a solution folder per project by default. But this provides extra value in that if you use the same folder name with the addition multiple projects, all the projects will be grouped in the same solution folder.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-pwsh"&gt;$d = New-DotnetProject 'classlib' Domain MyProduct.Domain;
$s = New-DotnetSolution;
$s | Add-DotnetProject -Project $d -SolutionFolder MyFolder;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="more-details"&gt;More details&lt;/h2&gt;
&lt;p&gt;For more details, please see the &lt;a href="https://github.com/peteraritchie/Pri.Essentials.DotnetPsCmds#dotnet-powershell-cmdlets"&gt;open-source project on GitHub&lt;/a&gt;. In there you'll find a more thorough &lt;a href="https://github.com/peteraritchie/Pri.Essentials.DotnetPsCmds#dotnet-powershell-cmdlets"&gt;README&lt;/a&gt; that goes into a bit more detail on CmdLets and examples. You can also create &lt;a href="https://github.com/peteraritchie/Pri.Essentials.DotnetPsCmds/issues"&gt;issues&lt;/a&gt; or &lt;a href="https://github.com/peteraritchie/Pri.Essentials.DotnetPsCmds/discussions"&gt;discussions&lt;/a&gt; with questions/suggestions in addition to &lt;a href="https://github.com/peteraritchie/Pri.Essentials.DotnetPsCmds/blob/main/CONTRIBUTING.md#contributing-to-this-net-project"&gt;contributing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'd like to pull together a simple roadmap for what I'm thinking for this in the near future. Some things I'm thinking so far are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;supporting &lt;code&gt;slnx&lt;/code&gt; files (by default?)&lt;/li&gt;
&lt;li&gt;Templated solutions: creating all the parts of common solution templates in a single command.&lt;/li&gt;
&lt;li&gt;supporting solution-level features like Directory.Build.props, global.json&lt;/li&gt;
&lt;li&gt;GitHub repo features like workflows, dependabot, etc.&lt;/li&gt;
&lt;li&gt;Support modifying project-level properties via commands (like &lt;code&gt;GenerateDocumentationFile&lt;/code&gt;, &lt;code&gt;PublishRepositoryUrl&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="blockquote"&gt;
&lt;p&gt;&lt;strong&gt;If you find this useful&lt;/strong&gt;&lt;br /&gt;
I'm a freelance software architect. If you find this post useful and think I can provide value to your team, please reach out to see how I can help. See &lt;a href="/about"&gt;About&lt;/a&gt; for information about the services I provide.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- Calendly inline widget begin --&gt;
&lt;div class="calendly-inline-widget" data-url="https://calendly.com/peterritchie/client-meet-greet-zoom" style="min-width:320px;height:700px;"&gt;&lt;/div&gt;
&lt;script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async&gt;&lt;/script&gt;
&lt;!-- Calendly inline widget end --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - January 5</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-5</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-january-5</guid>
			<pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security
 --&gt;
&lt;h2 id="open-source"&gt;Open-source&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/permissionlesstech/bitchat#?utm_source=blog.peterritchie.com"&gt;GitHub - permissionlesstech/bitchat: bluetooth mesh chat, IRC vibes&lt;/a&gt; by permissionlesstech&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/aleixrodriala/wa-tunnel?tab=readme-ov-file#wa-tunnel---tcp-tunneling-through-whatsapp?utm_source=blog.peterritchie.com"&gt;GitHub - aleixrodriala/wa-tunnel: Tunneling Internet traffic over Whatsapp&lt;/a&gt; by aleixrodriala&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/open-source/maintainers/this-years-most-influential-open-source-projects/?utm_source=blog.peterritchie.com"&gt;This year's most influential open source projects&lt;/a&gt; by Lee Reilly&lt;/p&gt;
&lt;!-- ## Software Architecture

## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2026/01/04/critter-stack-and-jasperfx-retrospective-for-2025/?utm_source=blog.peterritchie.com"&gt;Critter Stack and JasperFx Retrospective for 2025&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/how-to-build-a-high-performance-cache-without-external-libraries?utm_source=blog.peterritchie.com"&gt;How to Build a High-Performance Cache Without External Libraries&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/asp-net-core-idisplaymetadataprovider-46al?utm_source=blog.peterritchie.com"&gt;ASP .NET Core IDisplayMetadataProvider&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://idunno.org/generating-sboms-for-net-apps-and-nuget-packages-with-microsoft-sbom-targets/?utm_source=blog.peterritchie.com"&gt;Generating SBOMs in NuGet packages with Microsoft.Sbom.Targets&lt;/a&gt; by Barry Dorrans&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/creating-provenance-attestations-for-nuget-packages-in-github-actions/?utm_source=blog.peterritchie.com"&gt;Creating provenance attestations for NuGet packages in GitHub Actions&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/CodingWithCalvin/VS-ProjectRenamifier?tab=readme-ov-file#project-renamifier?utm_source=blog.peterritchie.com"&gt;GitHub - CodingWithCalvin/VS-ProjectRenamifier: A Visual Studio extension that allows you to safely - and COMPLETELY - rename a Project from within Visual Studio!&lt;/a&gt; by CodingWithCalvin&lt;/p&gt;
&lt;p&gt;&lt;a href="https://chris-ayers.com/2025/12/11/aspire-cli-getting-started/?utm_source=blog.peterritchie.com"&gt;Getting Started with the Aspire CLI - A Complete Guide&lt;/a&gt; by Chris Ayers&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/enterprise-patterns-for-asp-net-core-minimal-api-identity-map-pattern/?utm_source=blog.peterritchie.com"&gt;Enterprise Patterns for ASP.NET Core Minimal API: Identity Map Pattern&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/top-dotnet-videos-live-streams-of-2025/?utm_source=blog.peterritchie.com"&gt;Top .NET Videos &amp;amp; Live Streams of 2025&lt;/a&gt; by Jon Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/vs-live-2026-immersive-learning-for-vs2026/?utm_source=blog.peterritchie.com"&gt;Welcome to 2026, A Growth Year for All of Us&lt;/a&gt; by Jim Harrer&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design

## DevOps

## Software Design

 --&gt;
 &lt;!-- ## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/azure-cosmos-db-vnext-emulator-query-and-observability-enhancements/?utm_source=blog.peterritchie.com"&gt;Azure Cosmos DB vNext Emulator: Query and Observability Enhancements&lt;/a&gt; by Abhishek Gupta&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/work-item-linking-for-advanced-security-alerts-now-available/?utm_source=blog.peterritchie.com"&gt;Work item linking for Advanced Security alerts now available&lt;/a&gt; by Laura Jiang&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/context-is-the-bottleneck-in-software-development/?utm_source=blog.peterritchie.com"&gt;Context Is the Bottleneck in Software Development&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/css-quote-attr/?utm_source=blog.peterritchie.com"&gt;CSS for markdown blockquote attribution&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/12/22/ansi-codes/?utm_source=blog.peterritchie.com"&gt;There's no escaping it: an exploration of ANSI codes&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2026/01/05/coupling-from-a-big-o-perspective/?utm_source=blog.peterritchie.com"&gt;Coupling from a big-O perspective&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20260106-00/?p=111968?utm_source=blog.peterritchie.com"&gt;Swapping two blocks of memory that reside inside a larger block, in constant memory, refinement&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/reduce-github-actions-runner-cpu-usage.htm?utm_source=blog.peterritchie.com"&gt;Reduce GitHub Actions runner CPU usage&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/zero-pii-customer-intelligence-part1?utm_source=blog.peterritchie.com"&gt;Zero PII Customer Intelligence - Part 1: The Philosophy&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;!-- ## Windows

## AI
--&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - December 22</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-22</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-22</guid>
			<pubDate>Tue, 23 Dec 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source

## Software Architecture

## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/enterprise-patterns-for-asp-net-core-minimal-api-data-mapper-pattern/?utm_source=blog.peterritchie.com"&gt;Enterprise Patterns for ASP.NET Core Minimal API: Data Mapper Pattern&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/microsoft-testing-platform-azure-retry/?utm_source=blog.peterritchie.com"&gt;Microsoft.Testing.Platform Now Fully Supported in Azure DevOps&lt;/a&gt; by Youssef Fahmy&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-2026-debugging-with-copilot/?utm_source=blog.peterritchie.com"&gt;Visual Studio 2026: Debugging with Copilot&lt;/a&gt; by Harshada Hole&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/creating-a-dotnet-profiler-using-csharp-with-silhouette/?utm_source=blog.peterritchie.com"&gt;Creating a .NET CLR profiler using C# and NativeAOT with Silhouette&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/analysing-large-csv-files-with-local-llms?utm_source=blog.peterritchie.com"&gt;How to Analyse Large CSV Files with Local LLMs in C# (English)&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/12/15/aspire-image-push/?utm_source=blog.peterritchie.com"&gt;Fixing Aspire's image problem: a look at container registry support in 13.1&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/asp-net-core-idisplaymetadataprovider-46al?utm_source=blog.peterritchie.com"&gt;ASP .NET Core IDisplayMetadataProvider&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2025/12/17/critter-stack-roadmap-for-2026/?utm_source=blog.peterritchie.com"&gt;Critter Stack Roadmap for 2026&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/server-sent-events-in-aspnetcore-and-dotnet-10?utm_source=blog.peterritchie.com"&gt;Server-Sent Events in ASP.NET Core and .NET 10&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Conferences and Speaking

## Domain Driven Design
 --&gt;
&lt;h2 id="devops"&gt;DevOps&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/the-new-test-run-hub-is-going-generally-available/?utm_source=blog.peterritchie.com"&gt;The New Test Run Hub is Going Generally Available!&lt;/a&gt; by Panagiotis Liaros&lt;/p&gt;
&lt;h2 id="software-design"&gt;Software Design&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.howtogeek.com/why-clean-code-might-be-holding-you-back/?utm_source=blog.peterritchie.com"&gt;Is clean code holding you back? The dangers of overthinking your code structure&lt;/a&gt; by Zunaid Ali&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/why-microservices-debates-miss-the-point/?utm_source=blog.peterritchie.com"&gt;Why &amp;quot;Microservices&amp;quot; Debates Miss the Point&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## Mobile

## Agile/Work Life

## Project Management/Administration

 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://apisyouwonthate.com/newsletter/design-first-ai-never/?utm_source=blog.peterritchie.com"&gt;Design First, AI Never&lt;/a&gt; by Alexander Karan&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/blog/messagingonazureblog/announcing-general-availability-of-geo-replication-for-azure-service-bus-premium/4413164?utm_source=blog.peterritchie.com"&gt;Announcing General Availability of Geo-Replication for Azure Service Bus Premium&lt;/a&gt; by Eldert Grootenboer&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-december-2025/?utm_source=blog.peterritchie.com"&gt;Azure Developer CLI (azd) Dec 2025&lt;/a&gt; by Kristen Womack&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/janusgraph-azure-cassandra-graph-databases/?utm_source=blog.peterritchie.com"&gt;Unlock the power of distributed graph databases with JanusGraph and Azure Apache Cassandra&lt;/a&gt; by Srikanth Sridhar&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://cassidoo.co/post/dot-github/?utm_source=blog.peterritchie.com"&gt;Configure your repositories with .github&lt;/a&gt; by Cassidy Williams&lt;/p&gt;
&lt;!-- ## Windows
--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.zdnet.com/article/anthropic-claude-skills-update/?utm_source=blog.peterritchie.com"&gt;Claude's Skills just got easier to manage and share&lt;/a&gt; by Sabrina Ortiz&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.theregister.com/2025/12/17/ai_code_bugs/?utm_source=blog.peterritchie.com"&gt;AI-authored code needs more attention, contains worse bugs&lt;/a&gt; by Thomas Claburn&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/yooi/beyond-coding-your-accountability-buddy-with-claude-code-skill-4omh?utm_source=blog.peterritchie.com"&gt;Beyond Coding: Your Accountability Buddy with Claude Code Skill&lt;/a&gt; by Ooi Yee Fei&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.404media.co/hack-reveals-the-a16z-backed-phone-farm-flooding-tiktok-with-ai-influencers/?utm_source=blog.peterritchie.com"&gt;Hack Reveals the a16z-Backed Phone Farm Flooding TikTok With AI Influencers&lt;/a&gt; by Emanuel Maiberg&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.blog/news-insights/policy-news-and-insights/the-future-of-ai-powered-software-optimization-and-how-it-can-help-your-team/?utm_source=blog.peterritchie.com"&gt;The future of AI-powered software optimization (and how it can help your team)&lt;/a&gt; by Paull Young&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - December 16</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-15</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-15</guid>
			<pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source

## Software Architecture

## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/enterprise-patterns-for-asp-net-core-minimal-api-service-layer-pattern-making-http-a-client-not-the-boss/?utm_source=blog.peterritchie.com"&gt;Enterprise Patterns for ASP.NET Core Minimal API: Service Layer Pattern - Making HTTP a Client, Not the Boss&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/how-to-build-ios-widgets-with-dotnet-maui/?utm_source=blog.peterritchie.com"&gt;How to Build iOS Widgets with .NET MAUI&lt;/a&gt; by Toine de Boer&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/behind-the-scenes-of-the-visual-studio-feedback-system/?utm_source=blog.peterritchie.com"&gt;Behind the scenes of the Visual Studio feedback system&lt;/a&gt; by Mads Kristensen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/resolving-overload-ambiguity-with-collection-expressions.htm?utm_source=blog.peterritchie.com"&gt;Resolving Overload Ambiguity with Collection Expressions&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/12/08/aspire-docker-compose/?utm_source=blog.peterritchie.com"&gt;How Aspire composes itself: an overview of Aspire's Docker Compose integration&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/the-new-slnx-solution-format-migration-guide?utm_source=blog.peterritchie.com"&gt;The New .slnx Solution Format (migration guide)&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pkgstore.io/publish?utm_source=blog.peterritchie.com"&gt;Publish - pkgstore&lt;/a&gt; by&lt;/p&gt;
&lt;p&gt;&lt;a href="https://chris-ayers.com/2025/12/11/aspire-cli-getting-started/?utm_source=blog.peterritchie.com"&gt;Getting Started with the Aspire CLI - A Complete Guide&lt;/a&gt; by Chris Ayers&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/devlooped/nugetizer/?tab=readme-ov-file#-nugetizer?utm_source=blog.peterritchie.com"&gt;GitHub - devlooped/nugetizer: A simple to understand packing model for authoring NuGet packages&lt;/a&gt; by devlooped&lt;/p&gt;
&lt;h2 id="conferences-and-speaking"&gt;Conferences and Speaking&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dylanbeattie.net/2025/12/08/so-you-want-to-speak-at-software-conferences.html?utm_source=blog.peterritchie.com"&gt;So You Want To Speak At Software Conferences?&lt;/a&gt; by Sylan Beattie&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ndctoronto.com/?utm_source=blog.peterritchie.com"&gt;NDC Toronto 2026 | Conference for Software Developers&lt;/a&gt; by NDC&lt;/p&gt;
&lt;h2 id="domain-driven-design"&gt;Domain Driven Design&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/aggregates-in-ddd-model-rules-not-relationships/?utm_source=blog.peterritchie.com"&gt;Aggregates in DDD: Model Rules, Not Relationships&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-blue-green-aca-deployment/?utm_source=blog.peterritchie.com"&gt;Blue-green deployment in Azure Container Apps using Azure Developer CLI&lt;/a&gt; by PuiChee (PC) Chan&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/azure-cosmos-db-becoming-a-search-native-database/?utm_source=blog.peterritchie.com"&gt;Azure Cosmos DB : Becoming a Search-Native Database&lt;/a&gt; by Hari Sudan S&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/announcing-azure-devops-server-general-availability/?utm_source=blog.peterritchie.com"&gt;Announcing Azure DevOps Server General Availability&lt;/a&gt; by Gloridel Morales&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2025/12/08/pattern-guards-for-a-protocol/?utm_source=blog.peterritchie.com"&gt;Pattern guards for a protocol&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251215-00/?p=111869?utm_source=blog.peterritchie.com"&gt;The Windows clipboard automatic text conversion algorithm is path-dependent&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;!-- ## Windows
--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/shortwave-beyond-hallucinations-the?utm_source=blog.peterritchie.com"&gt;Shortwave: Beyond Hallucinations: The Illusion of Understanding&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.guru3d.com/story/windows-11-script-emerges-claiming-to-strip-all-ai-features-from-the-os/?utm_source=blog.peterritchie.com"&gt;Windows 11 Script Emerges Claiming to Strip All AI Features From the OS&lt;/a&gt; by Hilbert Hagedoorn&lt;/p&gt;
&lt;p&gt;&lt;a href="https://simonwillison.net/2025/Dec/12/openai-skills/?utm_source=blog.peterritchie.com"&gt;OpenAI are quietly adopting skills, now available in ChatGPT and Codex CLI&lt;/a&gt; by Simon Willison&lt;/p&gt;
&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/discussions/windows11/microsoft-finally-admits-almost-all-major-windows-11-core-features-are-broken/4475930?utm_source=blog.peterritchie.com"&gt;Microsoft finally admits almost all major Windows 11 core features are broken&lt;/a&gt; by Theo Dalton&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.zdnet.com/article/why-ai-agents-failed-to-take-over-in-2025-story-as-old-as-time-deloitte/?utm_source=blog.peterritchie.com"&gt;Why AI agents failed to take over in 2025 - it's 'a story as old as time,' says Deloitte&lt;/a&gt; by Sabrina Ortiz&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.infoworld.com/article/4098925/is-vibe-coding-the-new-gateway-to-technical-debt.html?utm_source=blog.peterritchie.com"&gt;Is vibe coding the new gateway to technical debt?&lt;/a&gt; by Matthew Tyson&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - December 8</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-8</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-8</guid>
			<pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Security

## Open-source

## Software Architecture

## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/debugging-entity-framework-core-8-real-world-query-anti-patterns-and-how-to-fix-them/?utm_source=blog.peterritchie.com"&gt;Debugging Entity Framework Core: 8 Real-World Query Anti=Patterns (and How to Fix Them)&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-conf-2025-recap/?utm_source=blog.peterritchie.com"&gt;.NET Conf 2025 Recap - Celebrating .NET 10, Visual Studio 2026, AI, Community, &amp;amp; More&lt;/a&gt; by .NET Team&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-november-update-visual-studio-2026-cloud-agent-preview-and-more/?utm_source=blog.peterritchie.com"&gt;Visual Studio 2026 November 2025 Update&lt;/a&gt; by Simona Liao&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ardalis.com/single-file-tests-in-dotnet-csharp/?utm_source=blog.peterritchie.com"&gt;Single File Test Suites in Dotnet Csharp&lt;/a&gt; by Ardalis (Steve Smith)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/recent-updates-to-netescapaades-enumgenerators/?utm_source=blog.peterritchie.com"&gt;Recent updates to NetEscapades.EnumGenerators: [EnumMember] support, analyzers, and bug fixes&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/creating-a-custom-msbuild-sdk-to-reduce-boilerplate-in-dotnet-projects.htm?utm_source=blog.peterritchie.com"&gt;Creating a custom MSBuild SDK to reduce boilerplate in .NET projects&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/12/02/aspire-run-azure-functions/?utm_source=blog.peterritchie.com"&gt;How does Aspire launch the Azure Functions runtime when you call aspire run?&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2025/12/04/classic-net-domain-events-with-wolverine-and-ef-core/?utm_source=blog.peterritchie.com"&gt;&amp;quot;Classic&amp;quot; .NET Domain Events with Wolverine and EF Core&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sadukie.com/2025/12/06/csadvent.html?utm_source=blog.peterritchie.com"&gt;C# Advent 2025 - St. Nicholas Goodies&lt;/a&gt; by sadukie&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/dbcontext-is-not-thread-safe-parallelizing-ef-core-queries-the-right-way?utm_source=blog.peterritchie.com"&gt;DbContext is Not Thread-Safe: Parallelizing EF Core Queries the Right Way&lt;/a&gt; by Milan Jovanovié&lt;/p&gt;
&lt;h2 id="domain-driven-design"&gt;Domain Driven Design&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/domain-driven-design-misconceptions/?utm_source=blog.peterritchie.com"&gt;Domain-Driven Design Misconceptions&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs

## Azure

 --&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.scrum.org/resources/blog/using-technical-debt-register-scrum?utm_source=blog.peterritchie.com"&gt;Using a &amp;quot;Technical Debt Register&amp;quot; in Scrum&lt;/a&gt; by Ian Mitchell&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2025/12/01/treat-test-code-like-production-code/?utm_source=blog.peterritchie.com"&gt;Treat test code like production code&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/thinking-in-systems?utm_source=blog.peterritchie.com"&gt;Thinking in Systems: A Retrospective on a Life Spent Trying to Understand How Things Fit Together (English)&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;!-- ## Windows
--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/shortwave-the-positive-power-of-llms?utm_source=blog.peterritchie.com"&gt;Shortwave: The Positive Power of LLMs&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - December 1</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-1</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-december-1</guid>
			<pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://securityaffairs.com/185150/security/thousands-of-sensitive-secrets-published-on-jsonformatter-and-codebeautify.html?utm_source=blog.peterritchie.com"&gt;Thousands of sensitive secrets published on JSONFormatter and CodeBeautify&lt;/a&gt; by Pierluigi Paganini&lt;/p&gt;
&lt;p&gt;&lt;a href="https://about.gitlab.com/blog/gitlab-discovers-widespread-npm-supply-chain-attack/?utm_source=blog.peterritchie.com"&gt;GitLab discovers widespread npm supply chain attack&lt;/a&gt; by Daniel Abeles, Michael Henriksen&lt;/p&gt;
&lt;!-- ## Open-source --&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/vertical-slice-architecture-where-does-the-shared-logic-live?utm_source=blog.peterritchie.com"&gt;Vertical Slice Architecture: Where Does the Shared Logic Live?&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/efmigrationstherightway?utm_source=blog.peterritchie.com"&gt;You're Probably Doing EF Migrations wrong...&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/enterprise-patterns-real-code-implementing-fowlers-ideas-in-c/?utm_source=blog.peterritchie.com"&gt;Enterprise Patterns, Real Code: Implementing Fowler's Ideas in C#&lt;/a&gt; by Chris Woodruff&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-day-on-agentic-modernization-coming-soon/?utm_source=blog.peterritchie.com"&gt;.NET Day on Agentic Modernization Coming Soon&lt;/a&gt; by Matt Soucoup&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-built-for-the-speed-of-modern-development/?utm_source=blog.peterritchie.com"&gt;Visual Studio - Built for the Speed of Modern Development&lt;/a&gt; by Paul Chapman&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/exploring-the-dotnet-boot-process-via-host-tracing/?utm_source=blog.peterritchie.com"&gt;Exploring the .NET boot process via host tracing&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/minimal-apis-cqrs-ddd-or-just-use-controllers/?utm_source=blog.peterritchie.com"&gt;Minimal APIs, CQRS, DDDΓÇª Or Just Use Controllers? - CodeOpinion&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life
 --&gt;
&lt;h2 id="project-managementadministration"&gt;Project Management/Administration&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.psychologytoday.com/us/blog/our-invisible-work/202511/the-doer-delusion-mistaking-responsiveness-for-strategy?utm_source=blog.peterritchie.com"&gt;The Doer Delusion: Mistaking Responsiveness for Strategy&lt;/a&gt; by Janelle E. Wells, Ph.D., and Doreen MacAulay, Ph.D.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hbr.org/2025/11/leaders-assume-employees-are-excited-about-ai-theyre-wrong?utm_source=blog.peterritchie.com"&gt;Leaders Assume Employees Are Excited About AI. They're Wrong.&lt;/a&gt; by Deborah Lovich, Stephan Meier and Chenault Taylor&lt;/p&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://apievangelist.com/2025/11/24/capabilities-are-about-having-an-honest-conversation-about-control/?utm_source=blog.peterritchie.com"&gt;Capabilities Are About Having An Honest Conversation About Control&lt;/a&gt; by Kin Lane&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-sdk-release-november-2025/?utm_source=blog.peterritchie.com"&gt;Azure SDK Release (November 2025)&lt;/a&gt; by Ronnie Geraghty&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.hanselman.com/blog/automatically-signing-a-windows-exe-with-azure-trusted-signing-dotnet-sign-and-github-actions?utm_source=blog.peterritchie.com"&gt;Automatically Signing a Windows EXE with Azure Trusted Signing, dotnet sign, and GitHub Actions&lt;/a&gt; by Scott Hanselman&lt;/p&gt;
&lt;p&gt;&lt;a href="https://theaxolot.wordpress.com/2025/11/18/dont-refactor-like-uncle-bob-second-edition/?utm_source=blog.peterritchie.com"&gt;Don't Refactor Like Uncle Bob (Second Edition)&lt;/a&gt; by Axolot&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2025/11/24/result-is-the-most-boring-sum-type/?utm_source=blog.peterritchie.com"&gt;Result is the most boring sum type&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251127-00/?p=111817?utm_source=blog.peterritchie.com"&gt;Message-only windows are for messaging, not as a convenient victim for hosting UI&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/update-local-git-branches-without-switching.htm?utm_source=blog.peterritchie.com"&gt;Update Local Git Branches Without Switching&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/11/24/api-anatomy-server-sent-events/?utm_source=blog.peterritchie.com"&gt;Anatomy of an API: three ways to stream with ServerSentEvents()&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;!-- ## Windows
--&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://futurism.com/artificial-intelligence/large-language-models-willnever-be-intelligent?utm_source=blog.peterritchie.com"&gt;Large Language Models Will Never Be Intelligent, Expert Says&lt;/a&gt; by Frank Landymore&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tegabrain.com/Slop-Evader?utm_source=blog.peterritchie.com"&gt;Slop Evader&lt;/a&gt; by Tega Brain&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - November 23</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-23</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-23</guid>
			<pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Open-source

## Software Architecture --&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.mostlylucid.net/blog/efmigrationstherightway?utm_source=blog.peterritchie.com"&gt;You're Probably Doing EF Migrations wrong...&lt;/a&gt; by Scott Galloway&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/reinventing-how-dotnet-builds-and-ships-again/?utm_source=blog.peterritchie.com"&gt;Reinventing how .NET Builds and Ships (Again)&lt;/a&gt; by Matt Mitchell&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/spend-less-time-upgrading-more-time-coding-in-visual-studio-2026/?utm_source=blog.peterritchie.com"&gt;Spend Less Time Upgrading, More Time Coding in Visual Studio 2026&lt;/a&gt; by Jason Chlus&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ardalis.com/how-to-update-net-on-wsl-or-ubuntu/?utm_source=blog.peterritchie.com"&gt;How to Update .NET on Wsl or Ubuntu&lt;/a&gt; by Ardalis (Steve Smith)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/companies-using-dotnet-need-to-suck-it-up-and-pay-for-support/?utm_source=blog.peterritchie.com"&gt;Companies complaining .NET moves too fast should just pay for post-EOL support&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/optimize-guid-creation-performance-in-dotnet-applications.htm?utm_source=blog.peterritchie.com"&gt;Optimize GUID creation performance in .NET applications&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/the-false-comfort-of-the-happy-path-decoupling-your-services?utm_source=blog.peterritchie.com"&gt;The False Comfort of the &amp;quot;Happy Path&amp;quot;: Decoupling Your Services&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration

## REST/APIs
 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-november-2025/?utm_source=blog.peterritchie.com"&gt;Azure Developer CLI (azd) Nov 2025 - Container Apps (GA), Layered Provisioning (Beta), Extension Framework, and Aspire 13&lt;/a&gt; by PuiChee (PC) Chan&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/announcing-dynamic-data-masking-for-azure-cosmos-db-preview/?utm_source=blog.peterritchie.com"&gt;Announcing: Dynamic Data Masking for Azure Cosmos DB (Preview)&lt;/a&gt; by Sudhanshu Khera&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/azure-devops-and-github-repositories-next-steps-in-the-path-to-agentic-ai/?utm_source=blog.peterritchie.com"&gt;Azure DevOps and GitHub Repositories ' Next Steps in the Path to Agentic AI&lt;/a&gt; by Rajesh Ramamurthy&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2025/11/17/empirical-software-prototyping/?utm_source=blog.peterritchie.com"&gt;Empirical software prototyping&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251119-00/?p=111800?utm_source=blog.peterritchie.com"&gt;Is WriteProcessMemory faster than shared memory for transferring data between two processes?&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/11/20/api-anatomy-mapopenapi/?utm_source=blog.peterritchie.com"&gt;Anatomy of an API: the small but mighty MapOpenApi()&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;!-- ## Windows

## Security
 --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/teaching-the-machines-to-teach-us?utm_source=blog.peterritchie.com"&gt;Teaching the Machines to Teach Us Back&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apievangelist.com/2025/11/17/the-web-and-apis-werent-built-for-autonomous-agents-they-were-built-for-humans/?utm_source=blog.peterritchie.com"&gt;The Web and APIs Weren't Built for Autonomous Agents, They Were Built For Humans&lt;/a&gt; by Kin Lane&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - November 16</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-16</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-16</guid>
			<pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Open-source

## Software Architecture --&gt;
&lt;p&gt;&lt;a href="https://www.linkedin.com/pulse/your-team-cannot-draw-architecture-from-memory-already-woodruff-zuzrc/?utm_source=blog.peterritchie.com"&gt;If Your Team Cannot Draw the Architecture From Memory, It Is Already Too Complex&lt;/a&gt; by Chris Woody Woodruff&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://roxeem.com/2025/11/08/incremental-source-generators-in-net/?utm_source=blog.peterritchie.com"&gt;Incremental Source Generators in .NET&lt;/a&gt; by Roxeem&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.soundaranbu.com/state-of-nativeaot-net10?utm_source=blog.peterritchie.com"&gt;State of Native AOT in .NET 10&lt;/a&gt; by Soundar Anbalagan&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ardalis.com/the-ardalis-cli/?utm_source=blog.peterritchie.com"&gt;The Ardalis Cli&lt;/a&gt; by Ardalis (Steve Smith)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ndepend.com/modern-net-reflection-with-unsafeaccessor/?utm_source=blog.peterritchie.com"&gt;Modern .NET Reflection with UnsafeAccessor&lt;/a&gt; by NDepend&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2025/11/10/100-coverage-is-not-that-trivial/?utm_source=blog.peterritchie.com"&gt;100% coverage is not that trivial&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/github-copilot-testing-for-dotnet/?utm_source=blog.peterritchie.com"&gt;Supercharge Your Test Coverage with GitHub Copilot Testing for .NET&lt;/a&gt; by McKenna Barlow&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/a-first-look-at-the-all%e2%80%91new-ux-in-visual-studio-2026/?utm_source=blog.peterritchie.com"&gt;A first look at the all-new UX in Visual Studio 2026&lt;/a&gt; by Ruben Rios&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/csharp-14-extension-members-enhancing-polyfill-libraries.htm?utm_source=blog.peterritchie.com"&gt;C# 14 Extension Members: Enhancing Polyfill Libraries&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/11/10/aspnetcore-ten/?utm_source=blog.peterritchie.com"&gt;And just like that .NET 10 ships tomorrow&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/exploring-csharp-file-based-apps-in-dotnet-10?utm_source=blog.peterritchie.com"&gt;Exploring C# File-based Apps in .NET 10&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/clean-up-bloated-cqrs-handlers/?utm_source=blog.peterritchie.com"&gt;Clean Up Bloated CQRS Handlers&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life

## Project Management/Administration
 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/making-your-apis-ai-ready?utm_source=blog.peterritchie.com"&gt;Making Your APIs AI-Ready&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apievangelist.com/2025/11/13/api-discovery-will-need-to-be-contextual-and-ephemeral/?utm_source=blog.peterritchie.com"&gt;API Discovery Will Need To Be Contextual and Ephemeral&lt;/a&gt; by Kin Lane&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/configuring-advanced-high-availability-features-in-azure-cosmos-db-sdks/?utm_source=blog.peterritchie.com"&gt;Configuring Advanced High Availability Features in Azure Cosmos DB SDKs&lt;/a&gt; by Theo van Kraay&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/november-patches-for-azure-devops-server-2/?utm_source=blog.peterritchie.com"&gt;November Patches for Azure DevOps Server&lt;/a&gt; by Gloridel Morales&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251114-00/?p=111792?utm_source=blog.peterritchie.com"&gt;I can use WM_COPYDATA to send a block of data to another window, but how does it send data back?&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;!-- ## Windows

## Security
 --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/?utm_source=blog.peterritchie.com"&gt;A very comprehensive and precise spec&lt;/a&gt; by CommitStrip&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ainativedev.io/news/spec-driven-development-10-things-you-need-to-know-about-specs?utm_source=blog.peterritchie.com"&gt;Spec-Driven Development: 10 things you need to know about specs&lt;/a&gt; by Patrick Debois&lt;/p&gt;
&lt;p&gt;&lt;a href="https://news.mit.edu/2025/mit-researchers-propose-new-model-for-legible-modular-software-1106?utm_source=blog.peterritchie.com"&gt;MIT researchers propose a new model for legible, modular software&lt;/a&gt; by Rachel Gordon&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - November 9</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-9</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-9</guid>
			<pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Open-source
 --&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/four-faces-of-resilience?utm_source=blog.peterritchie.com"&gt;Four Faces of Resilience&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2025/11/03/empirical-characterization-testing/?utm_source=blog.peterritchie.com"&gt;Empirical Characterization Testing&lt;/a&gt; by Mark Seemann&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.to/karenpayneoregon/asp-net-core-project-details-log?utm_source=blog.peterritchie.com"&gt;ASP .NET Core Project details&lt;/a&gt; by Karen Payne&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/copilot-studio-dotnet-wasm/?utm_source=blog.peterritchie.com"&gt;How Copilot Studio uses .NET and WebAssembly for performance and innovation&lt;/a&gt; by Daniel Roth&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/roadmap-for-ai-in-visual-studio-november/?utm_source=blog.peterritchie.com"&gt;Roadmap for AI in Visual Studio (November)&lt;/a&gt; by Rhea Patel&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ardalis.com/use-timespan-or-specify-units-in-duration-properties-and-parameters/?utm_source=blog.peterritchie.com"&gt;Use TimeSpan Or Specify Units In Duration Properties And Parameters&lt;/a&gt; by Ardalis (Steve Smith)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/exploring-dotnet-10-preview-features-9-easier-reflection-with-unsafeaccessortype/?utm_source=blog.peterritchie.com"&gt;Easier reflection with [UnsafeAccessorType] in .NET 10&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/11/03/aspire-pipelines/?utm_source=blog.peterritchie.com"&gt;Pipe dreams to pipeline realities: an Aspire Pipelines story&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2025/11/05/critter-stack-gets-better-for-testing/?utm_source=blog.peterritchie.com"&gt;The Critter Stack Gets Even Better at Testing&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/the-idempotent-consumer-pattern-in-dotnet-and-why-you-need-it?utm_source=blog.peterritchie.com"&gt;The Idempotent Consumer Pattern in .NET (And Why You Need It)&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;!-- ## Domain Driven Design

## DevOps
 --&gt;
&lt;h2 id="software-design"&gt;Software Design&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://planetscale.com/blog/the-slotted-counter-pattern?utm_source=blog.peterritchie.com"&gt;The Slotted Counter Pattern&lt;/a&gt; by Sam Lambert&lt;/p&gt;
&lt;!-- ## Mobile

## Agile/Work Life

## Project Management/Administration
 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://apievangelist.com/2025/11/04/openapi-extensions-to-generate-what-you-need-for-ai-integration/?utm_source=blog.peterritchie.com"&gt;OpenAPI Extensions to Generate What You Need for AI Integration&lt;/a&gt; by Kin Lane&lt;/p&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/devops/azure-developer-cli-azure-container-apps-dev-to-prod-deployment-with-layered-infrastructure/?utm_source=blog.peterritchie.com"&gt;Azure Developer CLI: Azure Container Apps Dev-to-Prod Deployment with Layered Infrastructure&lt;/a&gt; by PuiChee (PC) Chan&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.manning.com/books/fabulous-adventures-in-data-structures-and-algorithms?utm_source=blog.peterritchie.com"&gt;Fabulous Adventures in Data Structures and Algorithms&lt;/a&gt; by Eric Lippert&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251107-00/?p=111774?utm_source=blog.peterritchie.com"&gt;Non-recursively deleting a binary tree in constant space: Restructuring the tree&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/using-git-conditional-includes-for-multiple-configurations.htm?utm_source=blog.peterritchie.com"&gt;Using Git Conditional Includes for Multiple Configurations&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;!-- ## Windows

## Security --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.marktechpost.com/2025/11/04/comparing-the-top-7-large-language-models-llms-systems-for-coding-in-2025/?utm_source=blog.peterritchie.com"&gt;Comparing the Top 7 Large Language Models LLMs/Systems for Coding in 2025 &lt;/a&gt; by Michal Sutter&lt;/p&gt;
&lt;p&gt;&lt;a href="https://arxiv.org/abs/2508.14511?utm_source=blog.peterritchie.com"&gt;What You See Is What It Does: A Structural Pattern for Legible Software&lt;/a&gt; by Eagon Meng, Daniel Jackson&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kalele.io/the-genai-abstraction-and-the-hard-truth/?utm_source=blog.peterritchie.com"&gt;The GenAI Abstraction and the Hard Truth&lt;/a&gt; by Vaughn Vernon&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - November 2</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-2</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-november-2</guid>
			<pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;!-- ## Open-source

## Software Architecture

## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2025/10/28/wolverine-does-more-to-simplify-server-side-code/?utm_source=blog.peterritchie.com"&gt;Wolverine Does More to Simplify Server Side Code&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.milanjovanovic.tech/blog/whats-new-in-ef-core-10-leftjoin-and-rightjoin-operators-in-linq?utm_source=blog.peterritchie.com"&gt;What's New in EF Core 10: LeftJoin and RightJoin Operators in LINQ&lt;/a&gt; by Milan Jovanović&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/understanding-the-worst-dotnet-vulnerability-request-smuggling-and-cve-2025-55315/?utm_source=blog.peterritchie.com"&gt;Understanding the worst .NET vulnerability ever: request smuggling and CVE-2025-55315&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/flushing-disk-caches-on-windows-a-comprehensive-guide.htm?utm_source=blog.peterritchie.com"&gt;Flushing Disk Caches on Windows: A Comprehensive Guide&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/introducing-custom-agents-for-dotnet-developers-csharp-expert-winforms-expert/?utm_source=blog.peterritchie.com"&gt;Introducing Custom Agents for .NET Developers: C# Expert &amp;amp; WinForms Expert&lt;/a&gt; by Wendy Breiding (SHE/HER)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/join-us-at-net-conf-dive-into-the-future-of-development-with-visual-studio-2026/?utm_source=blog.peterritchie.com"&gt;Join us at .NET Conf: Dive into the future of development with Visual Studio 2026&lt;/a&gt; by Mads Kristensen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-october-update/?utm_source=blog.peterritchie.com"&gt;Visual Studio 2022 17.14 October Update&lt;/a&gt; by Jessie Houghton&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bartwullems.blogspot.com/2025/10/catching-dependency-injection.html?utm_source=blog.peterritchie.com"&gt;Catching dependency injection configuration errors early&lt;/a&gt; by Bart Wullems&lt;/p&gt;
&lt;p&gt;&lt;a href="https://medium.com/&amp;#64;denmaklucky/whats-new-in-net-10-0907cffb7372?utm_source=blog.peterritchie.com"&gt;What's new in .NET 10. Explore the most interesting new...&lt;/a&gt; by Denis Makarenko&lt;/p&gt;
&lt;h2 id="domain-driven-design"&gt;Domain Driven Design&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://codeopinion.com/double-dispatch-in-ddd/?utm_source=blog.peterritchie.com"&gt;Double Dispatch in DDD&lt;/a&gt; by Derek Comartin&lt;/p&gt;
&lt;!-- ## DevOps

## Software Design

## Mobile
 --&gt;
&lt;h2 id="agilework-life"&gt;Agile/Work Life&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.liminalarc.co/2025/10/the-future-of-agile-isnt-agile/?utm_source=blog.peterritchie.com"&gt;The Future of Agile Isn't &amp;quot;agile&amp;quot; &lt;/a&gt; by Leonard Greski&lt;/p&gt;
&lt;h2 id="project-managementadministration"&gt;Project Management/Administration&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://tidyfirst.substack.com/p/pitching-hackathon-ideas-oxymoron?triedRedirect=true?utm_source=blog.peterritchie.com"&gt;Pitching Hackathon Ideas: Oxymoron&lt;/a&gt; by Kent Beck&lt;/p&gt;
&lt;!-- ## REST/APIs
 --&gt;
&lt;h2 id="azure"&gt;Azure&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/cosmosdb/failures-happen-in-cloud-but-how-azure-cosmos-db-keeps-your-applications-online/?utm_source=blog.peterritchie.com"&gt;Failures Happen in Cloud, but how Azure Cosmos DB keeps your Applications Online&lt;/a&gt; by Hari Sudan S&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-copilot-coding-agent-config/?utm_source=blog.peterritchie.com"&gt;Introducing the azd extension to configure GitHub Copilot coding agent integration with Azure&lt;/a&gt; by Kristen Womack&lt;/p&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://compositecode.blog/2025/10/30/reflection-on-solid-decades/?utm_source=blog.peterritchie.com"&gt;Rethinking SOLID Principles in the Age of AI Development&lt;/a&gt; by Adron Hall&lt;/p&gt;
&lt;h2 id="windows"&gt;Windows&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251028-00/?p=111733?utm_source=blog.peterritchie.com"&gt;How did the Windows 95 user interface code get brought to the Windows NT code base?&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.makeuseof.com/free-tool-tells-exactly-whats-slowing-pc/?utm_source=blog.peterritchie.com"&gt;This free tool tells you exactly what's slowing down your PC&lt;/a&gt; by Yadullah Abidi&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.makeuseof.com/windows-11-function-killing-your-battery-disable-it/?utm_source=blog.peterritchie.com"&gt;This One Windows 11 Function Is Killing Your Battery. Here's How to Disable It&lt;/a&gt; by Yadullah Abidi&lt;/p&gt;
&lt;!-- ## Security
 --&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/10/27/aspire-deploy-cli-ux/?utm_source=blog.peterritchie.com"&gt;How I used AI to redesign Aspire's deploy CLI command&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/better-ai-code-starts-here?utm_source=blog.peterritchie.com"&gt;Better AI Code Starts Here&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;!-- ## Social Media

## Online Tools

## Databases

## Cloud

## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
		<item>
			<title>Things That Caught My Attention Last Week - October 26</title>
			<link>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-october-26</link>
			<description>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i"&gt;&lt;/p&gt;</description>
			<guid>http://blog.peterritchie.com/posts/things-that-caught-my-attention-last-week-october-26</guid>
			<pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate>
			<content:encoded>&lt;p&gt;&lt;img src="../assets/caught-i.png" class="img-fluid" alt="caught-my-i" /&gt;&lt;/p&gt;
&lt;h2 id="open-source"&gt;Open-source&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.woodruff.dev/make-your-github-profile-update-itself-wordpress-posts-github-releases-linkedin-newsletters/?utm_source=blog.peterritchie.com"&gt;Make Your GitHub Profile Update Itself (WordPress posts, GitHub releases, LinkedIn newsletters)&lt;/a&gt; by Chris Woody Woodruff&lt;/p&gt;
&lt;h2 id="software-architecture"&gt;Software Architecture&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.infoworld.com/article/4064273/8-platform-engineering-anti-patterns.html?utm_source=blog.peterritchie.com"&gt;8 platform engineering anti-patterns&lt;/a&gt; by Bill Doerrfeld&lt;/p&gt;
&lt;!-- ## Presenting
 --&gt;
&lt;h2 id="net"&gt;.NET&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=66-6C5c1zmg?utm_source=blog.peterritchie.com"&gt;All About Code Cleanup&lt;/a&gt; (YouTube) by Microsoft Visual Studio&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.wildermuth.com/2025/10/27/a-small-update/?utm_source=blog.peterritchie.com"&gt;A Small Update&lt;/a&gt; by Shawn Wildermuth&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/announcing-sponsorship-on-nugetdotorg-for-maintainer-appreciation/?utm_source=blog.peterritchie.com"&gt;Announcing Sponsorship on NuGet.org&lt;/a&gt; by .NET Team&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/modernizing-visual-studio-extension-compatibility-effortless-migration-for-extension-developers-and-users/?utm_source=blog.peterritchie.com"&gt;Modernizing Visual Studio Extension Compatibility: Effortless Migration for Extension Developers and Users&lt;/a&gt; by
Tina Schrepfer&lt;/p&gt;
&lt;p&gt;&lt;a href="https://andrewlock.net/adding-metadata-to-fallback-endpoints-in-aspnetcore/?utm_source=blog.peterritchie.com"&gt;Adding metadata to fallback endpoints in ASP.NET Core&lt;/a&gt; by Andrew Lock&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.meziantou.net/thread-safe-initialization-with-lazyinitializer.htm?utm_source=blog.peterritchie.com"&gt;Thread-Safe Initialization with LazyInitializer&lt;/a&gt; by Gérald Barré&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.safia.rocks/2025/10/20/aspire-deployment-state/?utm_source=blog.peterritchie.com"&gt;Cache me if you can: a look at deployment state in Aspire&lt;/a&gt; by Safia Abdalla&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jeremydmiller.com/2025/10/26/using-signalr-with-wolverine-5-0/?utm_source=blog.peterritchie.com"&gt;Using SignalR with Wolverine 5.0 ΓÇô The Shade Tree Developer&lt;/a&gt; by Jeremy D. Miller&lt;/p&gt;
&lt;!-- ## Domain Driven Design

## DevOps

## Software Design

## Mobile

## Agile/Work Life
 --&gt;
&lt;h2 id="restapis"&gt;REST/APIs&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://mamund.substack.com/p/the-interface-is-no-longer-the-code?utm_source=blog.peterritchie.com"&gt;The Interface Is No Longer the Code&lt;/a&gt; by Mike Amundsen&lt;/p&gt;
&lt;!-- ## Azure
 --&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/oldnewthing/20251023-00/?p=111716?utm_source=blog.peterritchie.com"&gt;Windows Runtime design principle: Properties can be set in any order&lt;/a&gt; by Raymond Chen&lt;/p&gt;
&lt;h2 id="windows"&gt;Windows&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.makeuseof.com/run-these-useful-windows-pc-maintenance-commands-regularly/?utm_source=blog.peterritchie.com"&gt;Don't let your PC suffer, run these Windows commands regularly&lt;/a&gt; by Pankil Shah&lt;/p&gt;
&lt;!-- ## Security

## AI

## Social Media

## Online Tools
 --&gt;
&lt;h2 id="databases"&gt;Databases&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=hhSJtMUY_6E?utm_source=blog.peterritchie.com"&gt;Compare PostgreSQL Databases in Seconds&lt;/a&gt; (YouTube) by Database Star&lt;/p&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.crn.com/news/cloud/2025/aws-outage-was-inevitable-says-former-aws-google-exec?utm_source=blog.peterritchie.com"&gt;AWS Outage Was 'Inevitable,' Says Former AWS, Google Exec&lt;/a&gt; by Mark Haranas&lt;/p&gt;
&lt;!-- ## Computing

## Podcasts

## Other Link Collections

 --&gt;
</content:encoded>
		</item>
	</channel>
</rss>