I am a software engineer with a background on distributed systems and data plumbing. I'm more broadly interested how complex systems work. Right now I work as Principal Engineer at Midokura building systems to manage fleets of intelligent devices as part of Sony's Edge AI sensing platform, AITRIOS. The about section contains more details about my professional work.
My focus is mainly on building, but I believe that putting ideas into writing is the best way to sharpen your thinking process. The latest published post was How about we forget the concept of test types?. Below you can find a short selection of my favourites, and further down the full archive.
- How organisations cripple engineering teams with good intentions. This is about how organizations sometimes shoot themselves in the foot while trying to improve engineering teams with other valuable skills.
- How to build a PaaS for 1500 engineers. A deep dive into the strategic principles we followed at Adevinta to build an internal platform to support 1500 engineers across some of the biggest online marketplaces in Europe and South America). Written before Platform Engineering became a hype, and I think still relevant to teams working in technical infrastructure.
- How does the default hashCode() work (and how it impacts biased locking). I was curious about how the default `hashCode()` was implemented in Java and ended up in a deep, although fascinating rabbit hole around the JVM's biased locking implementation.
- "Kubernetes made my latency 10x higher". Blaming Kubernetes was the knee-jerk reaction of some product engineers when we ran into performance problems while migrating their services into our PaaS. This post shows how the actual cause was usually a result of blending complex systems together for the first time.
- How about we forget the concept of test types?
- How organisations cripple engineering teams with good intentions
- Migrating an Eureka-based microservice fleet to Kubernetes
- Talk write-up: "How to build a PaaS for 1500 engineers"
- Kubernetes made my latency 10x higher
- Sizing Kubernetes pods for JVM apps without fearing the OOM Killer
- GC forensics by example: multi-second pauses and allocation pressure
- How does the default hashCode() work?
- Frugal memory management on the JVM (Meetup)
- DirectBuffer creation / disposal has hidden contention on sun.misc.Cleaner