Sep 3, 2017 - Minima

Minima is a programming language. There are two things that it’s important to know about Minima.

  • It’s a very small language
  • It’s not a very good language

You can find a Java implementation of it here.

It’s called Minima because it’s small. It’s not as small as it could be - it’s not technically minimal. But it’s pretty small.

Aug 12, 2017 - Reflections on Equality

As always, it started with a bug. We’d been extending the capabilities of one of our services, to allow filtering deals on a new concept. While introducing that new concept, some classes had new fields added. One of those classes implemented equals(), but the method wasn’t updated to account for the new field.

The first-order fix was easy: just re-generate the equals() method. Trying to protect against this class of problem reoccurring, though, is a really interesting question.

Not because it’s difficult to come up with a broader solution, but because so many solutions are available. And they’re all terrible in different ways.

But first, let’s talk about equals(), and understand our problem.

Mar 19, 2017 - Safety, subtypes and inference

Using Result to model potentially-failing-operations is safe in two ways. Firstly, it requires you to be explicit about how you’re handling failure cases. Secondly, it requires you to maintain a consistent model of what those successes and failures are, in order to allow sensible handling of them.