Jatin Jain Saraf

Jatin Jain Saraf

Senior Software Engineer · SupraScan Architect

I make PostgreSQL work at production scale. Everything here is written from the pager alerts, not the docs: every case study, course module and article cost an incident first, and these are the notes I wish I'd had before it did.

Credentials

Senior Software Engineer, Supra (via CodeZeros)

Architect of SupraScan, Supra Blockchain's native explorer and indexer: 500–1,000 TPS on a PostgreSQL database that grew to 10 TB, now 2.7 TB.

6+ years in production engineering

From enterprise B2B platforms (Rapidops — Kroger, Salesmate CRM) to high-throughput Web3 indexing infrastructure.

Author, In-Depth course series

PostgreSQL, Node.js, Next.js, Redis, Docker, and Data Structures & Algorithms — free, documentation-style courses built from production incidents.

B.E. in Information Technology

Truba Institute of Engineering and Information Technology, Bhopal — 7.76 CGPA.

Case studies

All 12

Courses I've written

All courses

Recent articles

All articles
Bloom Filter, Reservoir Sampling, HyperLogLog: Three Probabilistic Answers to Three Different QuestionsAll three trade exactness for memory, which is why they get mixed up. A Bloom filter answers "have I seen this wallet?", a reservoir answers "give me a fair sample of the stream", and HyperLogLog answers "how many distinct wallets?". Pick the wrong one and you don't get a slightly worse answer. You get a confident answer to a question you didn't ask.Your Node.js App Never Imports zlib. It Might Still Be Vulnerable to a Brotli RCENode.js patched CVE-2026-111497, a High-severity Brotli decoder flaw, on October 21, 2026. I traced the built-in fetch() through Undici to show how a response reaches that decoder even when your code never imports zlib, and wrote up the checklist for verifying what production actually runs.You Might Not Need a Queue Service: Postgres SKIP LOCKED as a Job QueueBefore adding Redis, BullMQ, or SQS just to distribute background work, look at the database you already run. PostgreSQL's FOR UPDATE SKIP LOCKED lets multiple workers claim different jobs concurrently. Learn how to handle expired leases, retries, MVCC bloat, and notification-based wake-ups, and when a dedicated queue is the better choice.How a B-Tree Really Reads, Inserts, Updates and Deletes (and Where It Fails a Blockchain Indexer)A B-tree is cheap to search and expensive to keep sorted. Here’s what reads, inserts, updates and deletes actually do inside one in PostgreSQL, and how that should decide the index on every table of a blockchain indexer, from wallet history to balances to NFTs.Turning Your Blockchain Indexer Into a Paid API Without Slowing Down Your ExplorerTurning blockchain indexer data into a paid API is easy. Keeping API traffic from slowing your explorer or ingestion is the hard part. This post presents a production architecture using replica pools, read models, finality-aware caching, Redis quotas and per-plan bulkheads.Your Postgres Indexes Can Break Without a Single Line of Code ChangingYou bumped the base image or rebuilt a replica on a newer OS. No deploy, no migration. Then a unique index lets in a duplicate and an indexed lookup misses a row you can see. Here's how collation drift breaks B-tree indexes, how to prove it with amcheck, and the fix order that doesn't silence the only alarm.
Get in touch

© 2026 Jatin Jain Saraf (JJS). All rights reserved.