41554 blogs · [ { "id": "01a0877b-dbd1-720b-87ea-d6ee809f4a46", "title": "What Replaces Git When Agents Write the Code", "url": "https://www.gauravsarma.com/posts/2026-08-19_what-replaces-git-when-agents-write-the-code", "published_at": "2026-08-19T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee80b78a6d", "title": "Upgrading Rails 4.2 to Rails 8: Count Sites, Not Warnings", "url": "https://www.gauravsarma.com/posts/2026-08-08_upgrading-rails-4-to-rails-8", "published_at": "2026-08-08T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9e54f1a9", "title": "First month at the Gym", "url": "https://www.gauravsarma.com/random/2026-07-29_first-month-at-the-gym", "published_at": "2026-07-29T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee812ae28d", "title": "Porting Django to Go with AI Without the Naive Rewrite", "url": "https://www.gauravsarma.com/posts/2026-07-28_porting-django-to-go-with-ai", "published_at": "2026-07-28T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee81797590", "title": "How to Write to SSDs - Co-Designing DBMS and Flash Storage", "url": "https://www.gauravsarma.com/posts/2026-06-22_optimising-ssd-writes-for-dbms", "published_at": "2026-06-22T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee81d919ca", "title": "Where SQLite Gives Up - Locks, Writers, and the Single-File Problem", "url": "https://www.gauravsarma.com/posts/2026-05-12_where-sqlite-gives-up", "published_at": "2026-05-12T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee82729194", "title": "When Does Compressed Protobuf Actually Beat Compressed JSON?", "url": "https://www.gauravsarma.com/posts/2026-05-07_when-compressed-protobuf-beats-compressed-json", "published_at": "2026-05-07T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9e696b09", "title": "How big tech interviews actually work", "url": "https://www.gauravsarma.com/random/2026-04-21_how-big-tech-interviews-work", "published_at": "2026-04-21T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8333a994", "title": "Table-Per-Tenant vs Shared Table: The Multi-Tenancy Tradeoff in Postgres", "url": "https://www.gauravsarma.com/posts/2026-04-15_table-per-tenant-vs-shared-table", "published_at": "2026-04-15T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9e73e80a", "title": "Running the first 10k", "url": "https://www.gauravsarma.com/random/2026-04-15_running-the-first-10k", "published_at": "2026-04-15T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8416d139", "title": "Metric Depth from a Single Camera: How Robots See Without LiDAR", "url": "https://www.gauravsarma.com/posts/2026-04-07_metric-depth-from-a-single-camera", "published_at": "2026-04-07T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee84b5cc58", "title": "When CDC Becomes a Crutch: A Philosophy on Data Replication", "url": "https://www.gauravsarma.com/posts/2026-04-06_when-cdc-becomes-a-crutch", "published_at": "2026-04-06T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee859b1fbb", "title": "The Data Structures Behind Text Editors: Gap Buffers, Piece Tables, Ropes, and CRDTs", "url": "https://www.gauravsarma.com/posts/2026-04-05_text-editor-data-structures", "published_at": "2026-04-05T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee85f6e58e", "title": "How Split Brain Happens in Distributed Databases and How It Gets Fixed", "url": "https://www.gauravsarma.com/posts/2026-03-31_split-brain-in-distributed-databases", "published_at": "2026-03-31T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee86a39ff5", "title": "How Databases Checkpoint to Disk Without Stopping the World", "url": "https://www.gauravsarma.com/posts/2026-03-15_checkpointing-without-stopping-the-world", "published_at": "2026-03-15T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee87446431", "title": "Cursor Pagination vs Offset Pagination: Which One Should You Use?", "url": "https://www.gauravsarma.com/posts/2026-03-11_cursor-pagination-vs-offset-pagination", "published_at": "2026-03-11T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee878ce333", "title": "How MongoDB Stores Data - WiredTiger Pages vs SQLite", "url": "https://www.gauravsarma.com/posts/2026-03-09_mongodb-wiredtiger-vs-sqlite-storage", "published_at": "2026-03-09T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee87ee19a2", "title": "SQLite Query Optimisation - How the Planner Thinks and Where It Goes Wrong", "url": "https://www.gauravsarma.com/posts/2026-03-08_sqlite-query-optimisation", "published_at": "2026-03-08T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee88941d8d", "title": "How PostgreSQL Handles Large Values - TOAST and What It Costs You", "url": "https://www.gauravsarma.com/posts/2026-03-07_postgres-toast", "published_at": "2026-03-07T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee88be8aa0", "title": "SQLite Overflow Pages - When Your Rows Don't Fit", "url": "https://www.gauravsarma.com/posts/2026-03-06_sqlite-overflow-pages", "published_at": "2026-03-06T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee89bc4805", "title": "Single-Node Kubernetes GitOps on a Budget", "url": "https://www.gauravsarma.com/posts/2026-03-04_single-node-k3s-gitops-on-a-budget", "published_at": "2026-03-04T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee89eebfee", "title": "Building Gigaboy, An Autonomous Software Engineering Agent Orchestrator", "url": "https://www.gauravsarma.com/posts/2026-03-02_building-gigaboy-autonomous-software-engineering-agent", "published_at": "2026-03-02T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee89f4a310", "title": "Building an AI Tennis Coach with MediaPipe and Claude", "url": "https://www.gauravsarma.com/posts/2026-02-25_building-ai-tennis-coach-mediapipe-claude", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8a36429b", "title": "Auto-generating Synced Diagram Overlays for Technical Videos", "url": "https://www.gauravsarma.com/posts/2026-02-24_auto-generating-synced-diagram-overlays", "published_at": "2026-02-24T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8acf1d58", "title": "Effect of Lucene Segments on Elasticsearch", "url": "https://www.gauravsarma.com/posts/2026-01-09_how-lucene-segments-affect-elasticsearch", "published_at": "2026-01-09T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8b74f40f", "title": "Disabling partial results in Elasticsearch", "url": "https://www.gauravsarma.com/posts/2026-01-02_disabling-allow-partial-results-in-elasticsearch", "published_at": "2026-01-02T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8b9e15ce", "title": "How io_uring improves database performance", "url": "https://www.gauravsarma.com/posts/2025-12-11_how-iouring-improves-database-performance", "published_at": "2025-12-11T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9ed586e3", "title": "Running towards FIRE", "url": "https://www.gauravsarma.com/random/2025-12-02_running-towards-fire", "published_at": "2025-12-02T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9f219ac9", "title": "Is DevOps dying", "url": "https://www.gauravsarma.com/random/2025-11-09_is-devops-dying", "published_at": "2025-11-09T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8c790030", "title": "Designing a hierarchical Authorisation system", "url": "https://www.gauravsarma.com/posts/2025-09-20_designing-a-hiearchical-authorisation-system", "published_at": "2025-09-20T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8ce6be3c", "title": "Streaming with WebRTC and Mediasoup", "url": "https://www.gauravsarma.com/posts/2025-08-15_streaming-with-webrtc-and-mediasoup", "published_at": "2025-08-15T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9f85e4e4", "title": "Find the right mentor", "url": "https://www.gauravsarma.com/random/2025-07-03_find-the-right-mentor", "published_at": "2025-07-03T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8d1d3e9e", "title": "Experimenting with the Swap Space", "url": "https://www.gauravsarma.com/posts/2025-07-01_experimenting-with-the-swap-space", "published_at": "2025-07-01T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9fb6a22a", "title": "Invest in the right future tech", "url": "https://www.gauravsarma.com/random/2025-06-25_invest-in-the-right-tech", "published_at": "2025-06-25T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6eea07ac9f8", "title": "Don't be hasty. Slow down", "url": "https://www.gauravsarma.com/random/2025-06-11_dont-be-hasty", "published_at": "2025-06-11T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6eea0d2b6a9", "title": "A decade in the tech industry", "url": "https://www.gauravsarma.com/random/2025-05-30_a-decade-in-the-tech-industry", "published_at": "2025-05-30T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6eea1000d9a", "title": "The right way to interview", "url": "https://www.gauravsarma.com/random/2025-05-27_the-right-way-to-interview", "published_at": "2025-05-27T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6eea103056a", "title": "Why should you go for FAANG if you can", "url": "https://www.gauravsarma.com/random/2025-05-19_why-go-for-faang", "published_at": "2025-05-19T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8d26c6c7", "title": "Mmap effects in databases", "url": "https://www.gauravsarma.com/posts/2025-04-22_mmap-effects-in-databases", "published_at": "2025-04-22T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8e1e9466", "title": "Understanding and scaling Raft", "url": "https://www.gauravsarma.com/posts/2025-04-04_understanding-and-scaling-raft", "published_at": "2025-04-04T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6eea1fc6c8e", "title": "Building leverage in your career", "url": "https://www.gauravsarma.com/random/2025-03-18_building-leverage-in-your-career", "published_at": "2025-03-18T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6eea202156a", "title": "Migrating from Hugo to NextJS", "url": "https://www.gauravsarma.com/random/2025-03-10_migrating-from-hugo-to-nextjs", "published_at": "2025-03-10T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8e623ab2", "title": "How safe is your fsync?", "url": "https://www.gauravsarma.com/posts/2025-02-20_how-safe-is-your-fsync", "published_at": "2025-02-20T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8f3f8a22", "title": "Integrating Snapshotter with a memory datastore in Golang", "url": "https://www.gauravsarma.com/posts/2025-02-16_Integrating-Snapshotter-with-a-memory-datastore-in-Golang", "published_at": "2025-02-16T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee8fbb8a69", "title": "How Request processing has changed over the years", "url": "https://www.gauravsarma.com/posts/2025-02-03_How-Request-processing-has-changed-over-the-years", "published_at": "2025-02-03T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee901de9ea", "title": "Snapshotting in a high throughput shared nothing database", "url": "https://www.gauravsarma.com/posts/2025-01-27_Snapshotting-in-a-high-throughput-shared-nothing-database", "published_at": "2025-01-27T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee908e4f6e", "title": "Why and how I switched from Medium", "url": "https://www.gauravsarma.com/posts/2025-01-06_Why-I-switched-from-Medium", "published_at": "2025-01-06T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee90f09d2f", "title": "MVCC and serializability in HyPer", "url": "https://www.gauravsarma.com/posts/2024-11-06_MVCC-and-serializability-in-HyPer-564430884c9a", "published_at": "2024-11-06T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee91cc9d2f", "title": "Comparison between Redis and DragonflyDB’s data stores", "url": "https://www.gauravsarma.com/posts/2024-08-27_Comparison-between-Redis-and-DragonflyDB-s-data-stores-e9ecba1ef84c", "published_at": "2024-08-27T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee91fbbb1e", "title": "Optimising Stripped Locks using Golang arrays", "url": "https://www.gauravsarma.com/posts/2024-08-14_Optimising-Stripped-Locks-using-Golang-arrays-34b45ef4e975", "published_at": "2024-08-14T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee925789b5", "title": "Testing Images in Blog Posts", "url": "https://www.gauravsarma.com/posts/2024-03-16_Test-Images", "published_at": "2024-03-16T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee92fef7b6", "title": "Demystifying MongoDB write operations", "url": "https://www.gauravsarma.com/posts/2024-02-18_Demystifying-MongoDB-write-operations-dbac459c9d26", "published_at": "2024-02-18T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee93402c36", "title": "Measuring cost of spawning Goroutines", "url": "https://www.gauravsarma.com/posts/2023-09-17_Measuring-cost-of-spawning-Goroutines-4b0dab6f5bf7", "published_at": "2023-09-17T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9429899a", "title": "Using Python AST to resolve dependencies", "url": "https://www.gauravsarma.com/posts/2023-06-30_Using-Python-AST-to-resolve-dependencies-c849bd184020", "published_at": "2023-06-30T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee949eda83", "title": "Building your own Kubernetes webhook", "url": "https://www.gauravsarma.com/posts/2023-06-02_Building-your-own-Kubernetes-webhook-575bf9712654", "published_at": "2023-06-02T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee95430175", "title": "Kubernetes operators using Kubebuilder", "url": "https://www.gauravsarma.com/posts/2023-05-27_Kubernetes-operators-using-Kubebuilder-7db99559120c", "published_at": "2023-05-27T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee957d4f04", "title": "Implement your own CDC using Kafka", "url": "https://www.gauravsarma.com/posts/2022-09-18_Implement-your-own-CDC-using-Kafka-5ca716634126", "published_at": "2022-09-18T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee964f61bf", "title": "Migrating Kafka topics without downtime", "url": "https://www.gauravsarma.com/posts/2022-09-15_Migrating-Kafka-topics-without-downtime-f863819cfb3d", "published_at": "2022-09-15T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee96f458eb", "title": "Kafka, KRaft and Storage Tiers", "url": "https://www.gauravsarma.com/posts/2022-05-21_Kafka--KRaft-and-Storage-Tiers-b28850c4303a", "published_at": "2022-05-21T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee97a9037d", "title": "Understanding Monarch, Google’s Planet-Scale Monitoring System", "url": "https://www.gauravsarma.com/posts/2021-05-20_Understanding-Monarch--Google-s-Planet-Scale-Monitoring-System-60e59b63ac0c", "published_at": "2021-05-20T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee97f4ded1", "title": "Understanding the Concept of Virtual Time Using the Time Warp Algorithm", "url": "https://www.gauravsarma.com/posts/2021-04-10_Understanding-the-Concept-of-Virtual-Time-Using-the-Time-Warp-Algorithm-4579dfe5eca8", "published_at": "2021-04-10T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee98f3201f", "title": "Neo4j storage internals", "url": "https://www.gauravsarma.com/posts/2020-08-09_Neo4j-storage-internals-be8d150028db", "published_at": "2020-08-09T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee998d056d", "title": "Interacting between C libraries and Go using Unsafe", "url": "https://www.gauravsarma.com/posts/2020-06-11_Interacting-between-C-libraries-and-Go-using-Unsafe-cb8b460d4f0c", "published_at": "2020-06-11T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9a0599ff", "title": "BKD trees, used in Elasticsearch", "url": "https://www.gauravsarma.com/posts/2020-05-30_BKD-trees--used-in-Elasticsearch-40e8afd2a1a4", "published_at": "2020-05-30T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9ab0ef46", "title": "Deep Dive into Maglev, Google’s Load Balancer", "url": "https://www.gauravsarma.com/posts/2020-05-24_Deep-Dive-into-Maglev--Google-s-Load-Balancer-f5fa943d578c", "published_at": "2020-05-24T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9ad7f9c2", "title": "Kubernetes meets SD-WAN", "url": "https://www.gauravsarma.com/posts/2019-12-14_Kubernetes-meets-SD-WAN-29376a974de2", "published_at": "2019-12-14T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9b679d32", "title": "Packet sniffer and parser in C", "url": "https://www.gauravsarma.com/posts/2019-08-11_Packet-sniffer-and-parser-in-C-c86070081c38", "published_at": "2019-08-11T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9bda6df1", "title": "Hooking in a Stats module in Rails Active Record", "url": "https://www.gauravsarma.com/posts/2019-06-09_Hooking-in-a-Stats-module-in-Rails-Active-Record-942c4fdbc0a9", "published_at": "2019-06-09T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9c560ec6", "title": "Comparison of net/http and httprouter", "url": "https://www.gauravsarma.com/posts/2019-05-23_Comparison-of-net-http-and-httprouter-df8edd1004e7", "published_at": "2019-05-23T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9c9abbca", "title": "Linux Address Space", "url": "https://www.gauravsarma.com/posts/2018-03-02_Linux-Address-Space-45e1d0aa8c86", "published_at": "2018-03-02T00:00:00+00:00" }, { "id": "01a0877b-dbd1-720b-87ea-d6ee9d8f7829", "title": "A peek at OpenStack Neutron", "url": "https://www.gauravsarma.com/posts/2017-10-06_A-peek-at-OpenStack-Neutron-8660a6905b2", "published_at": "2017-10-06T00:00:00+00:00" } ] posts Claim your blog
Back to gauravsarma.com
Blog · corpus.blog/blogs/gauravsarma.com/posts

gauravsarma.com

gauravsarma.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017