Trying to be cogent.
I’m a software engineer with a focus on designing for simplicity, reliability and stability in distributed systems. At SoundCloud I’m the Tech Lead of the Data Platform, working on the architecture of our data infrastructure, and guiding how we work with data infrastructure across the company.
I cycle a lot, and my big event of the year has been the Haute Route Alps, riding in the mountains for a week.
The latest exciting change is the new tiny human in our lives!
The poop kept coming. And coming. And coming. The dam didn't hold. There was poo on the wall.
She had a day of being more like a stereotypical howler, wide mouthed and with tonsils wobbling, as she unleashed some top-tier screams. She's still under 4kg, but that must be mostly vocal cords – a Chorus Line singer in the making.
The menagerie only becomes apparent at night, when she could convincingly be a dinosaur, an exotic creature, or a ravenous predator.
We did a baby! Giving birth looks really hard, and my wife is a hero. The first week of Ellie's life has been a whirlwind of hospital visits, poo, sleep deprivation, and becoming besotted with a new tiny human.
We're having a baby! We have no idea what will happen, and don't understand what will take up so much time!
An incredible and joyful (and exhausting) week in beautiful places. What an experience.
On my third attempt at this beautiful but brutal course of 174km and 5500m of ascent I finished with a Brevet d'Or, the Gold Classification
We have a good solution for ownership of services in a microservices architecture. We can learn from this to define ownership of datasets in a way that reduces the total cost of maintenance and integration across teams.
I'm riding the Haute Route Alps 2017, from Nice to Geneva through the mountains. This describes what it is and how much it's going to hurt.
Record shredding allows nested data structures to be considered in a sort-of-tabular way, and stored in a columnar data store. This post describes the intuition behind how this can be done preserving message structure, from Dremel and Parquet.
Being explicit about costs and implications when making choices makes future decisions easier when things change. A collaborative document can be a great implementation of this.
An introduction to compilation for the JVM, bytecode and JIT compilation, and benchmarking with JMH. It accompanies a talk I gave to the Berlin-Brandenburg Scala User Group.
How to add Applicative and Traverse instances for your own types, use sequence, sequenceU and Unapply