All Posts
Discover all our published articles and insights.
Minimal APIs vs Controllers: A Real Comparison
Minimal APIs and Controllers both provide powerful ways to build HTTP APIs with ASP.NET Core, but they take very different approaches. Minimal APIs focus on simplicity and reducing ceremony, while Controllers offer a structured approach that can be better suited to larger applications. In this article, we take a practical look at both approaches and compare their strengths, weaknesses and ideal use cases.

Refactoring a Legacy MVC Project Safely
Refactoring a legacy ASP.NET MVC application can feel risky, especially when the codebase has evolved over many years. However, with the right approach, you can improve maintainability, reduce technical debt and introduce modern practices without breaking existing functionality. This article explores practical techniques for safely refactoring legacy MVC projects while keeping production systems stable.

Writing Cleaner Controllers in ASP.NET MVC
ASP.NET MVC controllers can quickly become difficult to maintain when they contain too much business logic, database access, and validation code. In this article, we look at practical techniques for writing cleaner controllers by keeping responsibilities separated, improving readability, and following modern development practices that make MVC applications easier to test and extend.

The Demoscene Mindset and Modern Indie Dev
The demoscene has always been about achieving the impossible with limited hardware, creative coding and technical innovation. Although today's indie developers have access to powerful tools and modern game engines, the mindset that drove the Amiga and Amstrad demoscene remains just as relevant. Understanding this philosophy can help developers build better software, create memorable games and become more inventive programmers.

Building a Retro Sprite Engine on the Amstrad CPC
The Amstrad CPC was never designed to compete with dedicated arcade hardware, yet developers managed to create impressive games by pushing the machine’s limits. In this article, we explore how to build a simple sprite engine using BASIC and Z80 assembly concepts, recreating the techniques used by 1980s programmers to move characters, handle collisions, and bring classic games to life.

Loading Screens We’ll Never See Again
There was a time when loading a game wasn’t instant. You didn’t just click and play, you waited. And in that waiting time, you were often greeted with artwork, tips, and animation that became part of the experience itself. From spinning disks to tape counters and pixel art stills, loading screens once defined the rhythm of gaming. Today, with SSDs and instant streaming, those moments have largely disappeared, but the memories remain vivid for those who lived through them.

Floppy Disks, Fast RAM, and Other Beautiful Constraints
Modern computers give developers almost unlimited power, but some of the most creative coding came from an era of strict limits. From floppy disks and tiny memory footprints to clever optimisation tricks, constraints forced programmers to understand their machines deeply. This article explores why those limitations created some of the most elegant software and why the lessons still matter today.

BASIC vs Assembly on the Amstrad: When to Switch
Every Amstrad CPC programmer starts with BASIC, but sooner or later performance becomes a limitation. Whether you're writing games, demos or utilities, knowing when to move to Assembly can make a huge difference. In this article we'll explore the strengths of both languages, when BASIC is enough, and when Assembly is worth learning.

