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.
Written by Ganesh Iyer A software engineer building platforms for leveraging artificial intelligence in healthcare.
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
Consistent hashing is a special type of hashing such that hash table is resized. To understand the problem consistent hashing solves lets…
Problem: Given an integer k and a list of integers nums, return the length of the longest sublist that contains at most k distinct integers…
Problem Statement Given a two-dimensional list of integers graph representing an undirected graph as an adjacency list, return a two…
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.
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.
You are given n people represented as an integer from `0` to `n - 1`, and a list of friends tuples, where person `friends[i]` and person `friends[i]` are friends.
Binary search is something we all learn in CS101 classes. It is a very simple concept however implementing it in 15-20 minutes in a high…
After 10+ years of relying on wordpress I'm finally moving to a JAM stack approach using Gatsby
Dependency Injection(DI) is a set of software design principles that enable engineers to develop loosely coupled code.
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.
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.