Mutation testing

Mutation testing is a way of judging the quality of your tests, just as tests are a way of judging the quality of your code.  Usually, the tests that mutation testing works with are automated unit tests.  In theory it could apply to manual and/or higher-level tests like integration or system tests, but I hope … Continue reading Mutation testing


Lazy initialisation and threads (in C#)

Lazy initialisation is a way to set up everything needed to initialise something, but put off the initialising until later, usually when the value of the thing-being-initialised is needed for the first time.  You might want to use lazy initialisation because something is expensive to initialise, and you might not need it.  Or because you … Continue reading Lazy initialisation and threads (in C#)

Documenting ASP.NET REST APIs with Swagger / Swashbuckle

Introduction Swagger is a way to document a REST API, and tools can automate much of this process (but not all of it).  At the centre of things is a JSON file that describes the API.  You can create this file by hand or use a tool to generate e.g. from the API source code.  … Continue reading Documenting ASP.NET REST APIs with Swagger / Swashbuckle

Not all requirements are created equal

Requirements for an IT system come in several shapes and sizes.  Even if you manage to get requirements that are clear, concise, comprehensive, unambiguous and agreed, they could still be badly behaved.  I will try to warn you of some of the perils that requirements can cause. Well-behaved requirements Before I get onto badly behaved … Continue reading Not all requirements are created equal

Programmers should play nicely with others

Introduction There is a stereotype of a certain kind of programmer.  It’s of a young white able-bodied man, alone in his room, creating the future through the force of his intellect.  This creation leads to widespread change and a gazillion dollars for him.  While it can be amazing to create things in code, and there … Continue reading Programmers should play nicely with others

Programmers, mental models and decisions

Introduction I listen to the podcast Art of Manliness - its title is possibly misleading, as it's quite a mix of philosophy, practical skills, self improvement, lives of interesting people and so on.  The episode I listened to most recently was about mental models, from Shane Parrish who is the person behind Farnam Street. I … Continue reading Programmers, mental models and decisions

Automating the deployment of SSIS packages

Introduction This post describes how I have automated the deployment of SSIS packages to different environments (test, staging, production etc.)  There are definitely other ways of doing it, and some of these are possibly better - I think that this is the oldest-school way possible.  I will describe our context which I hope will explain … Continue reading Automating the deployment of SSIS packages