Testing

Testing principles and trade-offs


In my previous post I discussed some of the issues I have with the Agile Testing Pyramid and why if we follow it blindly it can lead to poor quality tests. In this post, I will discuss a different approach to testing. Instead of setting out how many Unit Tests and Service Tests one should write (an impossible task...

Software Development

5 pitfalls to avoid when building Spring applications in Java


In the last few months I’ve had the opportunity to review large amounts of code across multiple Spring-based services and teams. Here are the top issues that I’ve identified related to Spring. Hopefully, this can help you build better Spring...

System Architecture

DesignDev: you design it, you build it


TL;DR: software architects should be involved in the development process for their own designs. This will give them a good incentive to create simple and maintainable designs. Before DevOps came along, there used to be a separation between development and...

Software Engineering

Welcoming change: how decoupling can make your application more flexible


One of the most difficult things when starting a new project is choosing the technology stack to use. Should you use a NoSQL database? Key-value, document-oriented or graph-based? What about using a service-oriented architecture? Microservices? What about a...

Programming Patterns

Building Real-Time Collaboration Applications in Three.js


In this post we’ll look into creating a real-time collaboration applications in Three.js. If you’re working on a real-time web application or a multi-player game, I think you’ll find the approach below interesting. This approach builds on...

Programming Patterns

Efficient WebVR Development Using the Adapter Pattern in Three.js


In this post we’ll use the Adapter Pattern to improve the development experience when working on WebVR applications. We’ll apply some of the SOLID principles of object-oriented design to create an application that is both easy to write and...