Hello! I am a software engineer with background on distributed systems, software delivery, and engineering leadership. I'm good at turning business problems into technical ones, and support engineering teams to solve them.
I work a Principal SWE at Midokura building systems to manage fleets of intelligent devices within Sony's Edge AI sensing platform, AITRIOS. I previously worked at New Relic, Adevinta, Last.fm and some others. For more info, check out the about section.
Here I publish notes on topics related to software engineering, you can get updates via mailing list or RSS feed (expect low frequency, long form content. I'm also at Twitter/X, Mastodon & Bluesky, and always glad to get an email.
My most recent piece is: Identifiers are better off without meaning.
Highlights
- How organisations cripple engineering teams with good intentions. Engineers benefit from participating in product, sales, customer support, etc. But let's not forget they have a job to do.
- How to build a PaaS for 1500 engineers. 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).
- How does the default hashCode() work (and how it impacts biased locking). Wondering about the default `hashCode()` I ended up in a deep, although fascinating rabbit hole around the JVM's biased locking implementation.
- "Kubernetes made my latency 10x higher". Blending complex systems often has surprising effects that are hard to predict.
Archive
- Identifiers are better off without meaning
- Alert on symptoms, not causes
- 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