Written by Ganesh Iyer A software engineer building platforms for leveraging artificial intelligence in healthcare.

  1. May 25, 2022

    I've been using sqlite in production for some of my personal projects for the last few months. It's an incredible, simple and powerful tool for saas-type workloads. It's embedded within the application so is incredibly fast. One of the challenges is that it's a single point of failure which can make recovering or making the database more available a pain. Enter [Litestream](https://litestream.io/). Using litestream I've been able to solve a lot of these concerns. Litestream streams sqlite to S3. I've been wanting to dive deep into write-ahead logs and streaming them to S3.

  2. March 15, 2021

    Building a real-time database in Golang that supports `GET`, `PUT` and is subscribed to other clients and syncs changes made by other clients. I start with a simple hash-map and then use redis pubsub, bitcask and event buffer to build a working solution

  3. January 14, 2021

    Problem Statement Given a two-dimensional list of integers graph representing an undirected graph as an adjacency list, return a two…

  4. January 03, 2021

    Solving binarysearch.io's collecting coin problem by formulating the recursive solution and then memoizing it and also implementing the top down dynamic programming solution.

  5. January 02, 2021

    We run a preorder depth-first search (DFS) on the root of a binary tree. At each node in this traversal, we output D dashes (where D is the depth of this node), then we output the value of this node.

  6. August 31, 2020

    Brendan Burns in his paper "Design Patterns for Container-Based Distributed Systems" lays out 3 single node patterns that are used in micro-services architecture. There is some documentation available with examples for implementing these patterns with Kubernetes. However, I couldn’t find a lot of examples with HashiCorp’s Nomad. My goal is to work through them with examples using Nomad as our job schedular.

  7. June 12, 2020

    The circuit breaker is a design pattern, used extensively in distributed systems to prevent cascading failures. In this post, we’ll go through the problem of cascading failures and go over how the circuit breaker pattern is used to prevent it.