A Thousand Breakable Toys: How AI Agents Turn Side Projects into Learning Superpowers
How AI agents can amplify developer creativity by taking over mechanical tasks and making room for creative work.
35 articles published
How AI agents can amplify developer creativity by taking over mechanical tasks and making room for creative work.
Learn how AI Spec-Driven Development tackles Context Drift and raises the quality of AI-assisted development with Kiro and agentic IDEs
Why is Vibe Coding amazing, yet not enough to build professional-grade software?
In this article I show how to use the testcontainers library to set up your tests' external dependencies, such as databases and message brokers, in a simple and reliable way
Is Code Coverage a useful metric? Is it worth chasing 100% coverage? Does high code coverage guarantee quality? In this article I explore these and other questions.
In this post, I introduce the project to update the BASIC Computer Games book to new programming languages, explain how to take part, and share some of my experience porting the game Life to C#.
Learn how to visualize the work of hundreds of people across hundreds of Git repositories with Gource.
In this article, I present an intuitive way to decide where to declare each local variable in a method, one that's also easy to teach to people learning clean code.
Which kinds of tests should we avoid in microservices, and which should we adopt? This article explores a question that matters a lot for a healthy project.
In this article, I introduce ForeverFactory, an open-source library I wrote to make creating objects for tests easier.
In this article, I explore in detail how to add Source Link support to a library published on NuGet.
What's the most practical way to debug a NuGet package's code? In this article, I show how to use Source Link to build a solid, practical debugging experience.
In this article, I show how to use MinVer to version .NET project assemblies. To illustrate, I walk through how I set up the release flow of my open-source library ForeverFactory with MinVer-based versioning.
Looking for a simple way to build a microservice generator? In this article I show how to use the Replicante tool to do it.
In this article, I share the strategy my team used to quickly level up a diverse team, mostly new to tech, to work with a modern and complex tech stack, with surprising results
In this article, I give an overview of how Tilt can speed up the development loop of Kubernetes apps using a local K8s cluster.
In this article, I show how to create a Kubernetes cluster for local development using the Kind and ctlptl tools.
In this article, I take a detailed look at Replicante, a completely technology-agnostic template processor for software projects.
Learn how to build a command-line app with Gluegun, and see how I used it to build Replicante, my newest open-source project.
In this article, I talk about how the habit of using a notebook and pen strategically has helped me think deeply about the important themes in my life and sustain planned change.
In this article, I briefly introduce the yUML tool and show how to use it together with Python scripts to generate a use case diagram from an application's structure.
In this article, I show a way to apply the concept of Screaming Architecture to our applications using MediatR, in order to highlight business value.
In this article, I show how the MediatR library works, and also ways it can help structure our applications around the business.
Find out what pair programming is, and how to apply one of the best techniques to build higher-quality solutions more efficiently! As a bonus, you'll also learn how to use ping-pong pairing to practice and teach TDD.
In this review I talk about how Apprenticeship Patterns is a treasure chest full of wisdom about the developer career; a guide for those at the beginning and in the middle of their journey.
Ever wondered what it takes to build a fully offline search, with no server at all? In this article I show how I built one for my blog using Hugo and Lunr.js!
Learn how to visualize the development of a software project using Gource and your favorite version control system.
Ever heard of Screaming Architecture? In this article we explore what makes an application's architecture scream, and how that can benefit a software project.
Pattern matching in C#? In this post we explore how this functional programming feature can improve our C# 8.0 programs.
Learn how to implement Health Checks with the ASP.NET Core 3.0 extensions. Very handy for setting up Kubernetes liveness probes!
Learn how to run integration tests quickly and easily with Docker using the tmpfs file system.
Learn how to use mutation testing to assess the quality of a test suite. In this article, I show how to use Stryker to improve the tests of C# applications.
Learn how to streamline the publishing workflow of your Hugo blog using continuous delivery with GitHub Actions to automatically update your page on GitHub Pages.
In this article we explore best practices and a few antipatterns that can plague the implementation of test data builders in C#. Check it out!
Is your test setup tedious and repetitive? Make your life easier with Test Data Builders! In this article we show how they work and how they simplify your tests.