Author: Richard

Stop Working In Your Team and Start Working On Your Team


As Engineering leaders, it’s easy to get swept up by the day-to-day grind of delivering software. Code quality, broken builds, deployments that didn’t go according to plan, 1:1s, conflicts, stakeholders, and all the other things that fight for attention as we try to satisfy the needs of the organisation. This is us, working in our teams. We’re getting into the weeds of what’s going on and helping firefight issues as they come up. But to […]

Unseen Work

management / work

We often mistake the job we see managers doing with the job they are really doing. We’ve all asked, at one time or another, “What does my boss actually do?”. We see them go to countless meetings, ask questions, or send around documents. We then equate those activities with the actual job of being a manager. Until I was promoted into my current role, the perception I had of what my boss had been doing […]

There is No Debugger For Leadership

leadership / management

When there are bugs in your code, there are many mechanisms for understanding the issue and creating a fix. Your computer will tell you when you’ve made a mistake, give you feedback and await your next command. So as a developer you learn to live in this constant cycle of feedback. Constantly making mistakes, and constantly making changes. It becomes second nature. But it’s through these constant mistakes that we learn what does and doesn’t […]

The Other Side of the Fence

leadership / management

As I have gotten older and my career has grown, a lot of my thoughts and opinions on topics around software development, management and leadership have changed. Reading back through some of my posts from ten years ago, I see a lot of the same thoughts and ideas that come up in discussions with more junior team members. And it’s not that they are wrong, but how the effects of experience and having a different […]

Applying Your Leadership Style


When you have sports coaching, whether that be for martial arts or tennis etc, often the coach will look at your technique and say “you’re doing it all wrong!”. And then you find that each coach has their own theory on how it should be done, even claiming other coaches don’t know what they’re talking about. But when you look at all these different theories and techniques, and put them into practice, at that moment […]

Learning to learn


The best developers I have worked with have all been incredible in self-directed learning. And yet a common pattern that I see more junior developers get stuck on is not knowing what to learn to progress their skills as a developer. I spend a lot of time reading, whether that be blog posts or books, watching talks or listening to podcasts, I have never found myself short of topics to look into more or things […]

Spring Boot JAXB unable to marshal type error

java / programming

Working with a SOAP API with Spring Boot WS. I was getting the following error trying to create the request. I was originally directly using the JAXB generated classes to form my requests: The correct way is to use the provided JAXB ObjectFactory: But to prevent marshalling errors you need to wrap your object in a JAXBElement object: [crayon-5f9012db699ba984385076/]

No more computing books

books / computing

One of my bad habits is constantly buying computing books. This wouldn’t be so bad if I read them, but I have amassed a huge backlog of books that will most probably never be read and which ends up being a waste of money. A couple of posts I read recently have led me to the decision that I should stop, or at least drastically cut down on, buying computing books. The first post talked […]

Stupid coding mistakes

programming / ruby

Made this mistake today while writing some code to delete data out of Redis. [crayon-5f9012db72405266094315/] The mistake was in the final method keep_keys. Every check to see if a key should be rejected I was adding an element to the flattened_keys array over and over again, causing my deletion to slow down over time. A simple change to memoize the keep keys made the process go from never finishing to, completing in a few seconds. […]

Product recommendations in Spree using the Jaccard Index


Being able to recommend products to shoppers is a vital part of any online store. The “Customers Who Bought This Item Also Bought” section can lead to a lot of extra sales if done well. The Jaccard Index is a way of measuring similarity between items. Using some custom SQL we can extract the values we need: [crayon-5f9012db7246b906050899/] With these values we can then calculate the affinity between sold products: [crayon-5f9012db7246f370044716/]