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.

Superpowers for your AI

29 Mar 2026 ai

If you want to take your use of AI for software development to the next level, you could do worse than superpowers, a set of interrelated AI skills that bring some process and rigor into play.

Autotitling Windows Terminal Tabs

17 Mar 2026 smart-code

I make use of Windows Terminal a lot. It’s great for having multiple different pieces of work open at the same time.

Don't assume shared understanding

25 Jan 2026 smart-code

Over a decade ago, a project manager and my work approached me with a proposal. You see, we had a minor quality problem, and he wanted us to do better.

Older Posts

Better Table Tests in Go  21 Oct 2025
Error assertions  26 Apr 2025
Browsers and WSL  31 Mar 2024
Factory methods and functions  05 Mar 2023
Using Constructors  27 Feb 2023
An Inconvenient API  18 Feb 2023

task-graph

A simple tool for visually rendering a Taskfile as used by Task, the fast, cross-platform Go build tool inspired by Make, designed for modern workflows.

mandelbrot screensaver

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

oos alarm

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

my secret career superpower

A lightning talk first delivered at Code Camp Wellington 2024, in which I discuss a simple idea that’s driven a lot of my career growth.

things senior developers know

Senior developers aren’t just juniors with more experience, there’s a qualitative difference that stems from hard won experience. I interviewed some of the best developers I know and distilled this presentation out of the responses.

becoming a better developer

In this talk I pass on some of the things I’ve learnt about being a better developer. One of my most popular talks, I’ve given this to multiple audiences, including Ignite NZ 2016.

patterns and antipatterns of unit testing

Building on my experience working on some relatively long lived codebases, this presentation talks about some of the things that work and some that don’t when it comes to unit testing.

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.

semantic and immutable types

Semantic Types carry meaning and Immutable Types can’t be changed. Both are proven ways to reduce defects and make your code easier to understand.