Welcome to Niche Software, a MicroISV based in Wellington, New Zealand.

The primary goal of the site is as a host to my writing - mostly entries in my blog, but also including more detailed articles and the occasional highly opinionated editorial. A secondary, but still important, goal is to be a place to post some tools, utilities and toys that I have written. As I tend to develop applications that "scratch my own itch," most of these are fairly technical in nature. Please check out the license on any item you download - while many are free, some are not.

Speech API

Feb 15 2020 wordtutor-redux csharp

For the WordTutor application to work, we need to be able to read words (and letters) out loud to our student. To power the speech synthesis, we’re going to integrate Azure Cognitive Services into the application.

Read more »

Dumb Transfer Objects

Feb 08 2020 alternative-definitions

An anti-pattern variant of Data Transfer Objects (DTOs) where the objects are forcefully deprived of all possible functionality, even for matters that are directly relevant such as construction, serialization, and (first stage) validation.

Read more »

Sharpen The Saw - February 2020

Feb 01 2020 sharpen-the-saw

In today’s post: how to write better git commit messages; a cool debugger trick for Visual Studio; a new approach for producer/consumer programming in .NET Core 3.0; how to focus in on a part of a data structure; an alternative to a regular to-do list; how to apologize; protecting users against poor password choices; the NSA does the right thing; the day when someone discovered they had too many interfaces; a Java programmer discovers GoLang; and a Ted Talk on why privacy matters.

Read more »

Older Posts

Logging Implementation  25 Jan 2020
Impossible Numbers  18 Jan 2020
Logging Demonstrated  11 Jan 2020
Sharpen The Saw - January 2020  04 Jan 2020
Logging  28 Dec 2019
Empathy for future developers  21 Dec 2019
More blog posts »

Mandelbrot Screensaver

Mandelbrot Screensaver is a screensaver that automatically generates images from Mandelbrot fractal, generating a never ending display of fractal images on your screen.

Read More »


WordTutor, a tool for running interactive spelling drills: the easy way to ove your spelling.

Read More »

OOS Alarm

OOS Alarm is a repeating alarm clock which pops up regularly to remind you to appropriate breaks during your work each day.

Read More »

Becoming a Better Developer

In this talk I pass on some of the things I've learnt about being a better developer.

Read more »

Static Analysis for the Win

We all know that the earlier we find a bug, the cheaper it is to fix. Shouldn't we therefore be doing everything we can to identify bugs as early as possible?

Read more »

The Pragmatic Programmer

Unusually for a technical book published in 1999, The Pragmatic Programmer remains thoroughly relevant to the modern developer. I present a review of this book, looking at how it is relevant to the modern developer.

Read more »

Writing Maintainable Code

One core skill that every developer should cultivate is the ability to write Maintainable Code - code that can be easily understood.

Read more »

Geek Communication

In June 2014, presenting to the first cohort of the Enspiral Devacademy talking about the nature of "geeks" and how to communicate effectively with them.

Read more »

Unit Testing 101

A beginners introduction to unit testing, based on Roy Oscherove's book Art of Unit Testing. Presented to both Software Quality New Zealand and to Statistics New Zealand.

Read more »