TDD — A New Transformation

In this article, I question whether there is a transformation missing from the Transformation Priority Premise (TPP). In my last article, I implemented a simple function which checked whether the input number was odd or even. The goal of the exercise was to strictly adhere to the TDD cycle while also making sure I had all the tests I wanted at the end. This exercise lead to an impasse problem, where I couldn’t write the next failing test without changing the behaviour.


To get beyond this impasse, I changed the behaviour in the refactor stage and claimed that it was OK to do so because it enabled the next step in the unfinished process…. Continue

Are you ready to accelerate your Cloud Native journey?

Lambdas with GoLang — a technical guide

In one of my previous blogs I talked about migrating an app to Lambda. One challenges I had with my migration was finding good example and guides for Lambdas written in GoLang. The “Getting Started” type guides were great but it didn’t take long to exceed their limits of usefulness.


Whenever I was looking for more advanced examples I found myself having to read a Javascript tutorial and work it out. Hopefully you find this helpful…. Continue

Are you ready to accelerate your Cloud Native journey?

TDD — Lookahead Refactoring

In this article, I want to consider a situation where considering the next test we want to write, influences the way we refactor.


For this article, I want to consider implementing a simple function to check if a number is odd or even. The function will simply return true if it’s given an even number, and false if it’s given an odd number.

As with my previous TDD articles, we are working very rigidly with the TDD cycle — we must write a failing test, we must implement it in the simplest way possible, we may then refactor… Continue

Are your ready to accelerate your Cloud Native journey?

An insight into JAX London 2018

Last week I had the opportunity to attend the JAX London conference and I am so grateful to Armakuni for making this possible. It was a great way to learn more about the hot-topics now in our industry, to concrete some of the knowledge I gained over the last months and to get to meet new people!


The conference spanned across 4 days, where the first and last days were workshops and the two days in the middle where full-on presentation days from amazing speakers…. Continue

Are you ready to accelerate your Cloud Native journey?

Exploring Java Optional

At Armakuni we spend one day every fortnight away from client work to develop practices and the way we work. This week Tom Oram and I decided to investigate ways of using Java Optional to get the most value from it. The motivation for this exercise was based on our observation how Java Optional is often not used to the same level of usefulness compared to how it used in other languages — and of course to get a better taste of TDD and pair programming.


We not happy with how the Optional is used within Java the ecosystem

The lifetime of an Optional value in Java seems to usually only exist in a limited scope before it is unboxed with an orElse or similar. This is different to how this type is used in other languages (mostly functional) where the unboxing is deferred to the latest possible moment… Continue

Are you ready to accelerate your Cloud Native journey?

Assumptions — the silent and deadly sibling of issues and risks

On all projects, at least reasonably well-run ones, issues and risks are managed — tracked, assigned and dealt-with — but their sibling assumptions are often left as-is. We all know what issues are — something that is impacting the ability to delivery or operate.


Risks are closely related — one definition is that a risk is a potential issue, one that may or might not happen in the future. Assumptions are really hidden risks — where someone (or a whole group) decides on the most probably answer to an question… Continue

Are you ready to accelerate your Cloud Native journey?

Building With Behaviour-Driven Development

Building software with Behaviour-Driven Development is like building a house. Actually, it’s not — but it’s a metaphor I want to explore. The motivation for this post comes from the fact that every person I talk to seems to have a different idea of what BDD is. This article is simply me sharing my personal view of what I think it is.


I’ve heard BDD described in many different ways, some of these include:

  • Using Cucumber is doing BDD

  • BDD is a communication tool

  • BDD is like TDD but talking about behaviours instead of implementation

  • Gherkin feature files are BDD Tests

  • You are either doing BDD or TDD; you can’t do both

I have some pretty strong opinions on each of these points, but I don’t want to address them directly….Continue

Are you ready to accelerate your Cloud Native journey?