Configuration – Part 1

Background I’ve done quite a bit of consulting over the years. In that time I’ve been asked, more than once, to create a service for hosting shared configuration settings. Technical support folks love shared configuration services because, with them, they […]

Email Package

Introduction The ability to send email from a .NET program has been around for about as long as .NET itself has been around. The abstractions in the System.Net.Mail namespace do a great job, but, they could be better. For instance, […]

Repository Extension

Photo by Sharon McCutcheon on Unsplash Last time I wrote about a Strategy extension for my Builder library that makes it easier to separate my algorithm implementations from my Providers. The Strategy / Builder combination is a good fit, but, things could be […]

Strategy Extension

The last few articles I’ve posted have been about my Builder library. That library is a great tool for simplifying the process of configuring and creating complex objects. But, even though I extended the classic GOF Builder pattern to include […]

Builder Part 3

In the last two articles I covered the high-level architecture of my Builder library. I then went into detail, describing how the library did what it does. I finished by promising that I would lay out several different strategies for […]

Builder Part 2

As a refresher, here is the high level overview of my Builder library: What’s not on this diagram are the base classes that correspond to each interface. I left the base classes off to simplify the diagram, but, I’ll cover […]

Builder Part 1

If you’re like me, a .NET developer, and you occasionally have to build-up complex objects, then you’ve probably tried one or more of the creational design patterns to isolate that builder code from the rest of your project. Design patterns […]

Disposable pattern

Most .NET developers already know that the common language runtime requires all resources to be allocated from a managed heap. Since .NET developers are forced to live with managed memory from the start, most of us quickly learn to cleanup […]

Hello world

Hi there, my name is Martin. I write computer software for a living and I’ve done that since 1987. When I’m not writing software I enjoy writing about writing software. I suppose that’s where this blog comes in. I plan to use […]