Consultant for data engineering and distributed systems issues. I've worked for over 15 years as a software developer, including stints at Uber, Yahoo and ThoughtWorks. I also enjoy helping startups with general software engineering issues.

Contact me
I host a podcast called Through The Corporate Glass. Some recent episodes:

Java Annotations – a conceptual overview

I’ve been a casual user of annotations in code for many years but had never bothered to understand how exactly they work, or why they even exist. I would pop in the requisite Hibernate, Spring or Lombok annotations where necessary and get on with it. If the answer to the question “Why do annotations exist?” […]

Book Review: The Four Steps to the Epiphany

This is actually two books masquerading as one. The first is full of great advice on how to identify a genuine customer need and validate it before creating a company around it. In my opinion, you should absolutely read this part, ideally 1-2 years before setting up shop. The second half is largely standard advice […]

Using the lens of Disruptive Innovation to find 10x product experiences

After attending a conference called The Makers Summit a couple of weeks back where I saw two founders talk about “10x” products, I figured there must be experts who have looked for patterns in how they emerge and written about them? And sure enough, as I started reading, I discovered there is a market phenomenon […]

Notes on the AWS Firecracker paper

The AWS Firecracker paper is fascinating because Amazon has implemented a new Virtual Machine Monitor (VMM) which closely matches the requirements of their AWS Lambda service. While doing so, they carefully navigated the space of existing virtualization options, reused the best parts where they could, and implemented the rest. They also describe how they successfully […]

Notes on Database Transactions

Given that database transactions have been around for decades, I was surprised to find that some concepts and implementations still don’t have generally agreed-upon terminology, especially across vendors. And even the ANSI SQL standard’s description of Isolation Levels has been found to be lacking in places. I made some notes recently about selected topics in […]

TiDB: A Raft based HTAP database (Paper notes)

TiDB is an interesting new database, and PingCAP is the company driving most of its development. Recently I read the paper written about it, titled TiDB: A Raft based HTAP database, partly due to my interest in its Rust-based TiKV component. I found the paper to be comprehensive and well written. Below is my bullet […]

Learn Rust: Assignment and Memory Semantics

If you are familiar with Java or C/C++, understanding the assignment operator (=) in Rust will demystify a lot of its memory semantics. Assignment in Rust can have a range of outcomes depending on what you are assigning from and to, and on whether you are using the reference operator (&) and the mut keyword […]

Kubernetes Autoscaling – an overview

This post describes the features k8s provides for Automated Scaling of applications. This is Part 3 of a series. Part 1 is an Introduction to K8S and Part 2 talks about Kubernetes Internals. k8s can automate horizontal scaling of pods and has experimental support for vertical scaling. Scaling can even extend to requesting new hardware […]