Organising technical documents for a good user experience

I was doing some technical writing at work recently, and I realised that I had automatically and unconsciously used a particular structure for the document.  It’s not something that geeks like me are always taught – I know it only because my Dad used to help people improve their technical writing.  So, in case it’s … Continue reading Organising technical documents for a good user experience

Covariance and contravariance, part 3: Covariance in interfaces

This article is the third in a series on covariance and contravariance: Covariance in arraysContravariance in interfacesCovariance in interfaces In the previous article I showed how an interface could be contravariant, meaning it is expecting a smaller type for something you pass it. In this article I will show how an interface can be covariant, … Continue reading Covariance and contravariance, part 3: Covariance in interfaces

Covariance and contravariance, part 2: Contravariance in interfaces

This is part two in a series about variance – contravariance and covariance. Arrays and listsContravariance in interfacesCovariance in interfaces In the previous article I introduced the concepts of variance and type size.  I also gave arrays as an example of covariance. In this article I’ll give an example of contravariance, and go into more … Continue reading Covariance and contravariance, part 2: Contravariance in interfaces

Covariance and contravariance – part 1: Arrays and lists

This post is the first in a series - for once I will split a large topic into a few small posts. The series is about covariance and contravariance, together known as variance. Arrays and listsContravariance in interfacesCovariance in interfaces Covariance and contravariance are terms I came across occasionally, and never understood properly. Having put … Continue reading Covariance and contravariance – part 1: Arrays and lists