RSSAmplifier

Blog

Dan Does Code

A blog about .NET and Software Architecture

dandoescode.comRSS feed ↗44 posts

Latest posts

An Introduction to GitHub Stacked Pull Requests

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.

EF Core Migrations in Aspire - The New Way with AddEFMigrations

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.

Aspire - Where should the configuration live? A Decision Framework

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.

Building a Custom Claude Code Statusline to Track Worktrees and Usage

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.

Parallel Vibe Coding: Using Git Worktrees with Claude Code

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.

Configuring OpenCode to Work with the Latest Version of C#

Learn how to configure OpenCode to support the latest C# 14 features by installing an updated external language server.

Organising Notes with PARA

Discover how the PARA method can transform your note-taking and file organisation, helping you stay focused on your top priorities.

Efficient Vibe Coding: How Clarifying Questions Make AI Actually Useful

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.

FastEndpoints - From Zero to Hero

Master FastEndpoints from ground zero - build blazing-fast, maintainable REST APIs with vertical slice architecture, comprehensive validation, and enterprise-grade features in .NET.

From Manual PBIs to AI-Powered Conversations: Product Backlog Management with GitHub Copilot

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.

Deploying .NET Aspire to Azure with App Service, Azure SQL and Application Insights

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.

DDD Modelling - Aggregates vs Entities: A Practical Guide

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.

Model Context Protocol - Easily Extend LLMs with Existing APIs

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.

Raycast - The Ultimate Productivity Tool for MacOS

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…

Modular Monolith - Simplifying the Inner Development Loop with .NET Aspire

.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.

Modular Monolith - Implementation Deep Dive

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.

Modular Monolith - A Gentle Introduction

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…

Local Database Provisioning Made Simple with Docker, EF Core and Bogus

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.

Choosing the Best OS for .NET Development - Mac vs. Windows Showdown

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.

Minimal APIs - Typed Results and Open API Specification

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…

Azure SQL Databases - Deploying Updates with EF Core and GitHub

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.

EF Core 8 - Exploring Must-Know Key Features

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…

Rider - Automatically Nesting JSON Configuration Files

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…

Unpacking the Layers of Clean Architecture – Domain, Application, and Infrastructure Services

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…

Domain Driven Design: Patterns for Aggregate Creation Mastery

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.

Demystifying Architectural Decision Records: Why Every Project Needs Them

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…

Bit Bucket Pipelines - Part 4: Deploying a Function App to Azure with Bicep

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.

Migrating from Gatsby to Next.js

Recently I migrated Dan Does Code from Gatsby to Next.js. This has given me several new features and capabilities that I didn't previously have.

Entity Framework Sandbox Template

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.

Software Diagrams - C4 Models with Structurizr

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.

Software Diagrams - Plant UML vs Mermaid

Introduction to PlantUML and Mermaid. We look at how to set these up and compare the differences for all major diagram types.

Introduction to PowerShell Scripting

Reference article covering: installation and setup, variables, parameters, inputs/outputs, arrays, hashtables, flow control, loops, functions, debugging, error handling, filtering, sorting, projecting, formatting, and the help system.

Running Optimizely (EPiServer) CMS on Ubuntu with .NET 5

An experiment to see if we can run Optimizely CMS on WSL2/Ubuntu with .NET 5. SQL Server will also run on Ubuntu via Docker containers.

Bicep - Part 2: Advanced Concepts and Features

Deep dive into Bicep templates including expressions, template logic, and ARM template decompilation, modules and best practices.

Bicep - Part 1: Introduction to Automating Azure Resource Creation

Automate Creating Azure Resources with Bicep.

C# 9.0 New Features

C# 9.0 New Features include records, top-level programs, init properties, pattern matching enhancements, source generators and more.

Bit Bucket Pipelines - Part 3: Deploying a React app to Azure Blob Storage

Deploying a React application as a static web site in Azure Blob Storage.

Bit Bucket Pipelines - Part 2: Deploying ASP.NET Core to an Azure Web App

Packaging and deploying an ASP.NET Core website to an Azure Web App using Bit Bucket Pipelines.

Bit Bucket Pipelines - Part 1: Building and Testing ASP.NET Core

Building and testing ASP.NET Core code using Bit Bucket Pipelines.

Clean Architecture - Command and Query Templates

dotnet cli templates for creating commands and queries in clean architecture.

Clean Architecture - An Introduction

An introduction to Clean Architecture, along with a comparison to the traditional N-Tier architecture.

Using Typescript Without Typescript

How to enable Typescript checking of Javascript files in VS Code with JSDoc.

Unit Testing .NET Core with XUnit - Part Two

Unit Testing .NET Core with xUnit, NSubstitute, and Fluent Assertions.

Unit Testing .NET Core with XUnit - Part One

Unit Testing .NET Core with xUnit, NSubstitute, and Fluent Assertions.