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've hosted some episodes on a podcast called Through The Corporate Glass

Book review: What is ChatGPT doing… and why does it work?

This was a nice and understandable introduction to ChatGPT, by the noted scientist Stephen Wolfram who is also the creator of Mathematica software. Given that there would be a lot of maths underpinning the workings of ChatGPT, Wolfram does a good job not overloading you with the details. He uses simplified models and lots of […]

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 […]