Kubernetes – the internal architecture

This post summarizes the internal architecture of Kubernetes (k8s). For my previous post on user-facing aspects, see Part 1 of the series. An architectural style that is followed throughout the control plane of k8s is of components communicating with each other using a data store (etcd) as the intermediary. Updates made to etcd are picked […]

Kubernetes – an introduction

I decided to start learning about Kubernetes (k8s) although I have not used it in production yet. These are my notes from the first part of the comprehensive book “Kubernetes in Action”. The second part gets into k8s’s internals. I will write about that as I read more of the book. k8s abstracts away the […]

Book review: The Effective Executive

This is a crisp booklet by the famous management consultant Peter Drucker. It focuses on a few time tested general practices and hammers them home nicely rather than getting lost in the weeds. It draws upon decades of the author’s practice and probably due to that, I was delighted to find subtle gems of practical […]

Book review: It Doesn’t Have to Be Crazy at Work

I read Jason Fried and David H Hansson’s book “It Doesn’t Have to Be Crazy at Work” and found it underwhelming. While the authors advocate a specific approach to running companies and building software, they base it all on the success of just their one company (Basecamp). They do not explain how companies of different […]

Docker — a conceptual overview

Recently I learnt a bit about Docker while using it on a project. I read large parts of a well written book called “Docker Deep Dive” by Nigel Poulton, and some other articles. Here are my notes about some key highlights of Docker. Docker is built on top of a Linux kernel feature called “namespaces”. […]

ListenableFuture vs CompletableFuture — a comparison

In my previous blog post I wrote about how Google Guava’s ListenableFuture is an improvement over Java 6’s Future class. But Java 8 ships with a CompletableFuture class that brings much of the same benefits into the standard Java API. The below code example (again with inline comments) shows how to use CompletableFuture to implement […]

How is Google Guava ListenableFuture better than Java Future?

Google Guava’s concurrency classes provide some advantages over using Java’s default classes. Guava’s Futures offer the following benefits: You can add “listeners” to the result of a Future’s success or failure, instead of explicitly checking for the return of the Future.get(), handling exceptions and so on You can chain multiple asynchronous pieces of code together […]

The feel of Java, and Go

In an article titled The Feel of Java (PDF), James Gosling, one of the language’s creators, explains the design choices which went into the making of that language. He states frankly that Java was not meant to be innovative, but instead tried to synthesize a few carefully chosen long existing ideas to form a coherent […]

Lessons learnt building data pipelines — 1

It has been a few years since I embarked on what was then trendily called “data engineering”. That title — and the associated work — was an outgrowth of a tendency for computing systems to accumulate vastly more data than used to be the case before, and more importantly, try to extract business value by sifting through it. Nowadays […]

Influential books I read in the last 2 years

Either I’ve become way better at choosing which books to read, or am able to get more out of reading each individual book than I used to. In any case, a surprisingly large number of books have managed to contribute long lasting ideas to my mental repertoire over the last couple of years, compared to […]