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.
Posts here are about things I learned and found interesting, or just useful.
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.
Fast bunch riding and avoiding crashes in the 180km edition of the 2017 Berlin Velothon
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.
A blockchain allows independent parties to make verifiable statements. This works with bitcoin, whose value comes from the system itself, but fails in applications where the value is external.
Two-phase commit is a long-established means of keeping two resources strongly synchronised. These days it's not so sexy, but it's an important piece of heritage of distributed computing.
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.
We like our code to be "robust". This post looks at different failure modes against which a system needs to be protected
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
Learning about what the State monad represents and how to use and understand it
How to add Applicative and Traverse instances for your own types, use sequence, sequenceU and Unapply
Deriving how non-blocking I/O must work, from first principles
Step-by-step guide to using the Guava Testlib library for test case generation
A description of my interview approach while at GSA – what I was looking for what I expected from candidates