I'm really pleased to announce the release of NAudio version 3 , which includes a complete modernization of the entire library, many bug-fixes and performance improvements, and adds several key new features including cross-platform support on Linux and the ability to host VST 3 effects. There's too many changes to discuss them all in detail in this post, but I did want to highlight a few of the…
I generally try to avoid copying blobs in Azure and just reference a single copy, but there are some situations where you do need to make a copy. The technique you choose can make a big difference to how long that copy takes. For example, the "naive" approach of downloading the source and re-uploading it to the destination is conceptually simple but likely to be very slow. On my laptop, a 10GB…
I've always been fascinated with audio effects, ever since I got my first "effects unit" - a "Realistic Reverb" from Radio Shack/Tandy. That was shortly followed by my first digital multi-effects unit - the BOSS SE-50. And so it was only natural that when I created NAudio I wanted to make it possible to code your own effects. In earlier versions of NAudio, there were only a few simple effects…
Anyone who's tried using the frontier AI coding assistants such as Claude Code or Open AI Codex will know that they can rapidly accelerate development, generating new code much faster than a typical human developer. But that still leaves a big question - is AI-generated code ready to deliver and safe for production? It's one thing for your code to be "demo-ready", but that's not necessarily the…
I'm pleased to announce that the first preview builds of NAudio 3 are available on NuGet . I have put a lot of time into this over the past few months, and with the assistance of Claude Code (which I wrote about recently ) I've managed to make significant progress. In this post I want to cover the most important things you need to know about what has changed. Modernization The key theme has been…
Almost 25 years ago, I created NAudio , an open-source audio library for .NET. Over the years I've had periods where I've done a lot of work on it, and periods where I barely touched it. That's certainly been the case recently, partly because I've been busy with other projects, and partly because creating a version 3 of NAudio requires extensive modernization and refactoring, which under normal…
I'm really pleased to announce the publication of my latest Pluralsight course, "Refactoring to SOLID in C# 14" . It aims to provide C# developers with practical techniques and strategies to tackle the unique challenges of working in legacy codebases, such as dealing with technical debt, modernizing outdated dependencies, fixing code smells, and improving test coverage. Legacy Code Most…
I've been blogging on this site for almost 20 years now, and the majority of my posts are simple coding tutorials, where I share what I've learned as I explore various new technologies (my journey on this blog has taken me through Silverlight, WPF, IronPython, Mercurial, LINQ, F#, Azure, and much more). My process has always been quite simple. First, I work through a technical challenge and…
Back in 2019, I wrote about securing back-end App Service web apps using VNets and Service Endpoints . That approach worked well at the time, but Azure has moved on significantly since then. In this post, I'll show the modern way to achieve the same thing using Private Endpoints — which is now Microsoft's recommended approach. The Problem The scenario is the same as before. You have a front-end…
I'm increasingly hearing the sentiment that now AI models can write code for us, we no longer need to concern ourselves with concepts like "clean code", eliminating code smells, following SOLID principles etc. All of these concerns, it's argued, are purely an attempt to make the codebase more comprehensible for humans . But if humans are no longer reading the code, what does it matter? The only…