Big pull requests are painful to review and painful to rebase. Stacked PRs let you break one large change into a chain of small, dependent PRs that each review on their own. Here's a hands-on run through GitHub's native stacks feature - creating a stack, what happens when you update the bottom PR, and merging the whole thing in one click.
Every Aspire and EF Core sample tells you to hand-roll a MigrationService worker. Aspire now ships AddEFMigrations, which makes migrations a first-class resource. Here's how to wire it up, how to keep your seed data structurally incapable of reaching production, and what changes when you deploy.
A modular monolith with Aspire, integration tests, and a real deployment ends up with config scattered across appsettings, user-secrets, env vars, and Key Vault. Here's the framework I use to decide where each value belongs, and why putting things in the wrong layer always burns you eventually.
When vibe coding across multiple git worktrees, losing track of which branch you're on is a real problem. Here's how I built a minimal Claude Code statusline that shows exactly what I need — and nothing more.
Stop waiting for one AI task to finish before starting the next. Git worktrees let you run multiple Claude Code sessions in parallel without any branch-switching chaos.
Stop getting unpredictable results from your AI assistant. Learn how to evolve your approach from vague "vibe coding" to a structured, Socratic dialogue that delivers the exact code you need, faster.
Master FastEndpoints from ground zero - build blazing-fast, maintainable REST APIs with vertical slice architecture, comprehensive validation, and enterprise-grade features in .NET.
Discover how I transformed my tedious, manual process for creating Product Backlog Items into a streamlined, conversational workflow using GitHub Copilot, prompt files, and the GitHub MCP Server.
Learn how to deploy .NET Aspire applications to Azure App Service, Azure SQL Database, and Application Insights instead of the default Container Apps, including AZD configuration and deployment strategies.
Master the art of distinguishing between aggregate roots and entities in Domain-Driven Design. Learn practical guidelines, see real-world examples, and avoid common pitfalls when modeling your domain.
The Model Context Protocol (MCP) is an open standard that allows developers to extend LLMs by integrating them with existing APIs or local resources. This blog post explores the limitations of LLMs, the benefits of using MCP, and how it can be implemented in with an existing API.
One of the tools I've been becoming more and more infactuated with recently is Raycast. Raycast is a productivity tool for MacOS that lets you control your tools with a few keystrokes. It's like Spotlight on steroids. It's a great way to quickly access your tools and data without having to leave the keyboard. In this post, we'll take a look at how to get started with Raycast and how I use it to be…
.NET Aspire significantly simplifies the inner development loop by providing a unified dashboard, streamlined configuration, and powerful orchestration capabilities. With features like service discovery, health monitoring, and seamless cloud deployments, .NET Aspire removes much of the complexity traditionally associated with Modular Monolith development.
Implementing a Modular Monolith Architecture provides a unique balance between the simplicity of a monolithic application and the development scalability benefits of microservices. This deep dive illustrates how a Modular Monolith can serve as an ideal starting point for complex applications, with the flexibility to adapt to evolving business needs and scaling requirements.
When starting a new project, one of the first and most important decisions you'll have to make is choosing a Software Architecture. Choose an architecture that is too simple and the project will quickly outgrow it. Choose an architecture that is too complex, and you'll spend more time maintaining the architecture than building the project. Therefore, it's important to choose an architecture that…
As .NET Developers, managing databases via EF Core is a core task. In this article we're going to explore some ways to make this process easier and more repeatable. At the end we'll look at achieving all of this with a single command.
As a longtime Windows developer, I decided to try a MacBook Air 13" as a travel device, influenced by my other colleagues who mostly prefer MacBooks. To my surprise, the Mac's performance and battery life far surpassed Windows in every test I conducted. This article is a comparison of the two laptops and the results of the tests.
For web developers, building REST APIs is our bread and butter. We use them to expose data and functionality to our clients and to integrate systems together. However, there is no point building the most beautiful API in the world if consumers can't easily use it. In this article were going to look at several strategies we can use to integrate Open API (formerly Swagger) into our .NET 8 Minimal…
In this blog post, we'll look at the challenge of whitelisting IP addresses when executing EF Core Migration Bundles from a GitHub Workflow. We'll look at several options and explore the pros and cons of each. In particular, how to deal with the challenge of dealing with the possible ~4000 IP ranges that GitHub Runners can use.
This blog post delves into the latest updates in Entity Framework Core ORM (EF Core 8), emphasizing its new features and performance improvements. Key highlights include Complex Types for more expressive models, Unmapped Queries for running SQL without an ORM setup, Primitive Collections to store lists of primitives without extra tables, and support for `DateOnly` and `TimeOnly` types. EF Core 8…
I've been using Visual Studio for a very long time. Probably close to two decades. It has it's strengths and weaknesses, but I've always been able to get the job done. I've been using Rider for a few months now and I'm really enjoying it. I made the switch partially to try something new, and partially from some mild peer pressure from all the young guns in the office. It's a great IDE and I'm…
Recently, I’ve noticed some confusion relating to Clean Architecture and the concept of ‘services’. In popular Clean Architecture templates such as the SSW CA Template and Jason Taylor’s CA template, there is a single service called DateTimeService in the Infrastructure project. This can mistakenly lead developers to think this is where ALL services should live (which is not the case). This post…
In this blog post, we will dive deep into the realm of aggregate creation and explore various patterns that can elevate your mastery of this crucial aspect of DDD. We will uncover the principles and techniques that empower you to design aggregates that are expressive, cohesive, and well-aligned with your domain's intricacies.
In the world of software development, Architectural Decision Records (ADRs) are indispensable for capturing and communicating crucial architectural choices throughout a project's lifecycle. This blog post explores the significance of ADRs, emphasizing their role in providing historical context, promoting transparency and accountability, facilitating collaboration, and enabling informed…
Deploying a Function App to Azure using Bit Bucket Pipelines, the Azure CLI and Bicep templates. This article looks into the problems I faced and the solutions I found to overcome them.
The Entity Framework Sandbox Template provides a dotnet CLI command to get you up and running fast with EF7, several entities, and a populated database.
An overview of the C4 model, including main and supplementary diagram types. After the introduction, we then compare of modelling vs diagrams and show examples of these with Structurizr.