# sudohulk · Vignesh Kumar A > Vignesh Kumar A, a database engineer at Zoho, keeps a write-ahead log of what he learns: database internals and computer science, written down plainly and corrected in the open. Every page with something to read has a clean markdown twin at its path plus `.md`: each entry, project, track, pocket tool and monthly checkpoint of /now; About, Now, Colophon, Changes, For AI, Bookshelf, Glossary, Source Atlas, Pocket tools, Open questions, Resume and Privacy; the Writing, Notes, Projects, Tracks and Tags indexes; each stream’s page and each tag’s page; and the home page, whose twin is /index.md. The whole corpus in one file is at https://sudohulk.com/llms-full.txt, and a structured index at https://sudohulk.com/content.json. Asking for one of those pages at its own URL with `Accept: text/markdown` returns its twin; if HTML comes back, add `.md`. The forms and the search page (/contact, /newsletter, /search) have no twin. The terms the writing uses, one plain line each, are at https://sudohulk.com/glossary.md. An MCP server at https://sudohulk.com/mcp (Streamable HTTP, no sign-in) searches and reads the same content as tools. Agent Skills for reading and citing the site, for the MCP server, and for reading PostgreSQL's WAL are listed at https://sudohulk.com/.well-known/agent-skills/index.json. The public APIs are catalogued at https://sudohulk.com/.well-known/api-catalog (RFC 9727) and described by https://sudohulk.com/openapi.json. An A2A agent at https://sudohulk.com/a2a is a read-only librarian with no model behind it: it searches the site and returns pages as markdown (card: https://sudohulk.com/.well-known/agent-card.json). Nothing a reader or an agent uses needs a sign-in. The one protected API is owner-only; its protected-resource metadata is at https://sudohulk.com/.well-known/oauth-protected-resource. The site's own bot requests carry "sudohulk.com bot" in their User-Agent and are signed with Web Bot Auth; the keys are at https://sudohulk.com/.well-known/http-message-signatures-directory. Nothing is for sale. Quote it freely under CC BY 4.0 and cite the canonical URL. If you have read a post and have a correction or a suggestion, you can leave one: https://sudohulk.com/for-ai has the contract. ## Tech Computer science, databases first: storage, transactions and recovery, then operating systems, networks, languages and algorithms. All of it: https://sudohulk.com/tech.md - [How PostgreSQL tells every connection its cache is stale](https://sudohulk.com/writing/postgres-cache-invalidation.md): Each PostgreSQL connection caches the catalog for itself. How a change is announced to all of them at commit through a shared ring, and what happens to a connection that falls behind. - [Full-page writes and torn pages](https://sudohulk.com/writing/full-page-writes-and-torn-pages.md): Why the first change to a page after a checkpoint carries the whole 8 KB page in WAL. (note, evergreen) - [Lazy transaction id assignment](https://sudohulk.com/writing/lazy-xid-assignment.md): A transaction does not get an xid at BEGIN; it gets one the first time it writes. (note, seedling) - [pd_lsn vs record LSN](https://sudohulk.com/writing/pd-lsn-vs-record-lsn.md): Two LSNs that are easy to mix up, and the rule recovery uses to compare them. (note, budding) ## Tracks What he is reading, watching and writing in public, each with its plan, its progress and a dated log. - [PostgreSQL internals, explained simply](https://sudohulk.com/tracks/pg-internals-simply.md): One mechanism per post, in the order a change flows through the server. Analogy first, then the real thing, then the gotchas. (series, active, 1/5 parts) - [Building sudohulk.com](https://sudohulk.com/tracks/building-sudohulk.md): Why this site exists, and the story behind it. (series, active, 1/1 part) ## Projects - [Decentralized P2P Network](https://sudohulk.com/projects/p2p-network.md): A peer-to-peer messaging network in Rust on libp2p: messages arrive in under 50 ms across 100+ nodes, with Ed25519 peer identity and Noise-protocol encryption. (project, paused) - [Hybrid Storage Engine](https://sudohulk.com/projects/hybrid-storage-engine.md): A key-value engine in C that keeps values in an append-only log and keys in a B-tree, so rewriting a large value does not churn the index around it. (project, paused) - [Smart Video Analysis](https://sudohulk.com/projects/smart-video-analysis.md): Event-processing microservices for video analysis events over Kafka and PostgreSQL, deployed with Docker, Terraform and GitHub Actions. (project, paused) - [learn-rust](https://sudohulk.com/projects/learn-rust.md): My working notes and exercises while reading The Rust Programming Language, chapter by chapter. (project, paused) - [grokking-algorithms](https://sudohulk.com/projects/grokking-algorithms.md): Practice problems worked through while reading Grokking Algorithms, in Java. (project, done) - [Distributed PostgreSQL](https://sudohulk.com/projects/distributed-postgresql.md): The internals of a horizontally scalable distributed PostgreSQL: sharding, distributed query execution, two-phase commit, and moving shards while the cluster serves. (project, active) - [ZohoPOS sync platform](https://sudohulk.com/projects/zohopos-sync-platform.md): The server side that keeps offline point-of-sale registers consistent with a finance platform, which I worked on for four years. (project, done) ## Open questions What I do not know yet, from the end of each thing I write, where I say what I am still unsure about. If you can answer one, https://sudohulk.com/for-ai says how. The whole board: https://sudohulk.com/questions.md - [How often resets happen on a busy server. I know of no statistics view that counts them; the only sign I have found is a DEBUG4 log line, “cache state reset”.](https://sudohulk.com/writing/postgres-cache-invalidation#sinval-reset-count) (from How PostgreSQL tells every connection its cache is stale, id `sinval-reset-count`) - [Why the ring holds 4,096 messages, and not a number sized from max_connections or a setting. I have not found the discussion that chose it.](https://sudohulk.com/writing/postgres-cache-invalidation#why-4096-messages) (from How PostgreSQL tells every connection its cache is stale, id `why-4096-messages`) - [What a long REPEATABLE READ transaction sees when another session adds a column before the first one touches the table. Its data snapshot is fixed but its catalog reads are not, and I want to trace that case end to end.](https://sudohulk.com/writing/postgres-cache-invalidation#repeatable-read-ddl) (from How PostgreSQL tells every connection its cache is stale, id `repeatable-read-ddl`) ## Source Atlas - [Source Atlas](https://sudohulk.com/atlas.md): PostgreSQL functions, and where this site explains each one: the reverse of a code trail. As JSON, with each function's file and line at the release: https://sudohulk.com/atlas.json ## Tools Small calculators for what PostgreSQL prints, each worked out the way the server works it out and tested against its output. Each page has the tool and its arithmetic; in a browser with WebMCP, every page of the site offers it to an agent by the name given here. - [LSN to WAL file](https://sudohulk.com/tools/lsn.md): Which WAL segment file holds an LSN, and how many bytes into it. WebMCP: `lsn_to_wal_file`. - [Infomask decoder](https://sudohulk.com/tools/infomask.md): The flags in a heap tuple’s t_infomask and t_infomask2, as pageinspect’s heap_page_items() prints them. WebMCP: `decode_infomask`. ## About the author - [About](https://sudohulk.com/about.md): what he works on (database internals, storage, transactions, distributed query execution). - [Now](https://sudohulk.com/now.md): what he is doing at the moment, and the site's state on the day it was built: reading, tracks under way, newest writing. /now/ is the same at each month's end, with a diff against the month before. - [Resume](https://sudohulk.com/resume.md): experience, skills and education. - [Bookshelf](https://sudohulk.com/bookshelf.md): books and papers, with a line on why each is there. ## For agents - [For AI](https://sudohulk.com/for-ai.md): how to read, quote and respond to the site, what needs a sign-in (only the owner's admin API) and how its bot signs its requests. - [MCP server card](https://sudohulk.com/.well-known/mcp/server-card.json): the MCP server at https://sudohulk.com/mcp, what it speaks and what it offers. - [A2A agent card](https://sudohulk.com/.well-known/agent-card.json): the read-only librarian at https://sudohulk.com/a2a, and its three skills. - [Agent Skills](https://sudohulk.com/.well-known/agent-skills/index.json): read-and-cite-sudohulk, sudohulk-mcp and postgres-wal-reading, with a sha256 for each. - [OpenAPI](https://sudohulk.com/openapi.json): the public HTTP contracts, as OpenAPI 3.1. - [AI catalog](https://sudohulk.com/.well-known/ai-catalog.json): the MCP card, the A2A card, the skills and the API catalog, in one file. ## Optional - [Hi, I'm Vignesh. Start here](https://sudohulk.com/writing/hello-sudohulk.md): I'm a database engineer at Zoho, working on database internals. Why I write here in public, and how to use the site. (meta) - [Colophon](https://sudohulk.com/colophon.md): type, design rules, licence and corrections. - [Changes](https://sudohulk.com/changes.md): every change to an entry as a numbered record; https://sudohulk.com/changes.json has them in order, so a reader that kept the last number takes only what is new. - [Contact](https://sudohulk.com/contact): how to reach him. - [RSS](https://sudohulk.com/rss.xml): full-content feed of the essays and notes. - [JSON Feed](https://sudohulk.com/feed.json): the same, as JSON Feed 1.1. - [Everything RSS](https://sudohulk.com/writing/rss.xml): every entry of every type and stream, updates and track logs included. - [Notes RSS](https://sudohulk.com/notes/rss.xml): notes, republished whenever they are tended. - [Tech RSS](https://sudohulk.com/tech/rss.xml): the tech stream alone. - [Meta RSS](https://sudohulk.com/meta/rss.xml): the meta stream alone. - [Tracks RSS](https://sudohulk.com/tracks/rss.xml): every line logged to a track.