As a tech lead, one of your responsibilities is to deliver robust software that solves a problem, and to deliver it on time. This post is my attempt to set down some things I think are important if you're going to do that. Nothing below is my own invention, but I've tried to avoid referring … Continue reading Delivering


Attaching actions to rollbacks in Spring

We have a problem in a Spring Boot app where some files are created during a database transaction and they need to be deleted if the transaction rolls back. This was my solution... When a file is created, we publish an event containing the filename: We have another component which listens for the event: As … Continue reading Attaching actions to rollbacks in Spring

@Transactional gotchas

Here are some surprising things I've learned about Spring Data JPA lately. 1) When a @Transactional method calls another @Transactional method, an uncaught RuntimeException in the second method rolls back the entire transaction Method A is annotated with @Transactional. It calls Method B (in a different class) several times. Method B is also annotated with … Continue reading @Transactional gotchas

Ephemeral Oracle Databases inside docker containers

Git tells me that I put my first Oracle database inside a docker container in early 2016. The issue was simple - we were working with a large, old, legacy database and we wanted to be able to run our integration tests against the database. Our solution was to use a Docker image based on … Continue reading Ephemeral Oracle Databases inside docker containers

Reinventing the wheel, again

I spoke to the CEO of a small service company recently about the shortcomings of her CRM and booking system (large, internet-based ones). Her problems were all similarly themed. Essentially, online business software of this kind doesn't offer services that fit well enough with how she wants to interact with her customers. She would like … Continue reading Reinventing the wheel, again