Sivaprasad Murali's Home Page - Netscape Navigator
Location:
http://crystallinecore.github.io/index.html

Sivaprasad Murali

~ Building software and PostgreSQL extensions while contributing to open source ~

*** Biscuit 3.1.0 released, now with regex support *** Talk at FOSSASIA Summit 2026, PGDay track *** Fylex passes 27,700 downloads on PyPI *** webdoc 1.0.0 available as a .deb ***

Welcome to my homepage! I'm a Computer Science undergraduate at IIIT Kottayam. I write PostgreSQL extensions and Linux systems software in C, C++ and Python.

These pages cover my four main projects: an index for wildcard search, a fault injector for testing, a file tool you can undo, and a file format for web links. There's also a bit about me. Pull up a chair.

Vital statistics
Biscuit stars300
Fylex downloads27,700+
Conference talksFOSSASIA '26
IEEE Webinars2

My Projects

BiscuitNEW!

C · PostgreSQL 16+ · v3.1.0 · MIT

An index access method for LIKE and ILIKE in PostgreSQL.

Biscuit records which character sits at which position in every indexed string, counting forward from the start and backward from the end, plus length bitmaps. It answers an anchored pattern by intersecting a fixed number of bitmaps. The results are exact, so PostgreSQL never has to recheck rows against the heap.

  • Fastest on suffix, both-ends-anchored and _ wildcard patterns, and on length-only predicates
  • Supports multi-column indexes, evaluated in order of selectivity
  • From 3.1.0, it rewrites anchored regexes like ~ '^j.hn' into exact globs at plan time
  • Index state is WAL-logged: works with crash recovery, PITR and streaming replication
  • Tested differentially: every predicate runs through the index and through a sequential scan, and the rows must match
  • Talk: “Biscuit: Solving PostgreSQL’s Wildcard Search Performance Problem”, FOSSASIA Summit 2026
-- load first, then index
CREATE INDEX idx_users_name ON users USING biscuit(name);
SELECT * FROM users WHERE name LIKE '%son';

Macavity

C · PostgreSQL 16–18 · MIT

Deterministic fault injection for PostgreSQL.

Error paths are the least-tested part of most database code. With Macavity, a session arms a fault at a named execution point and chooses the exact occurrence where it fires. The fault can be an error, a one-second delay, or an unclean backend crash. That turns “what happens if commit fails?” into a repeatable test.

SELECT macavity_arm('before_commit', 'error', 3);
-- the third commit in this session fails, on cue
  • Four fault points: executor_start, executor_end, before_commit, before_abort
  • Events are session-local, one-shot and counted. Faults fire in a fixed order: delay, then crash, then error
  • Built only on supported hook APIs. It patches nothing in core

Fylex

Python · PyPI · MIT

Copy and move files on Linux, with undo.

Fylex does what cp and rsync do on a local machine, and adds safety nets. Every run is journaled under a process ID, so you can undo or replay it exactly. Files are hash-verified, and conflicts are resolved the way you choose.

pip install fylex
fylex copy ~/work ~/backup --resolve newer --verify
fylex undo 2023   # roll the whole run back
  • Hashes with xxhash, blake3, SHA or MD5, backed by a SQLite hash cache for deduplication
  • Eight conflict strategies, from rename to newer, larger and prompt
  • Atomic writes. Keeps permissions, timestamps, xattrs and ACLs
  • CLI and Python API. Blazefox is a GUI built on top of it

webdoc

C11 · Linux · .deb · MIT

A web address that behaves like an ordinary file.

A browser bookmark is stuck inside one browser profile. A .web document lives in the filesystem instead. You can keep it next to the project it belongs to, and mv, cp, commit, archive or mail it. Double-click it in the file manager and it opens in a browser.

$ web create postgres https://www.postgresql.org/
$ web open postgres
$ cat postgres.web
{ "version": 1, "url": "https://www.postgresql.org/" }
  • The web CLI is a thin front end over libwebdoc, the C library that holds all the logic
  • Atomic writes, exclusive creation that refuses symlinks, and no shell anywhere
  • No network access, no background service, no database. Ships as a Debian package

About Me

I’m a Computer Science undergraduate at IIIT Kottayam. I like the layer of software where a data structure decides whether a query takes milliseconds or minutes.

Most of my time goes into database internals: index access methods, query planning and cost estimation, WAL and crash recovery. I also work on the testing tools that keep that code honest. Biscuit started as a question about why wildcard search in PostgreSQL has to recheck so many rows. I later presented it at FOSSASIA Summit 2026.

Outside databases, I work on Linux tooling in C and Python, and on parallel programming with OpenMP and threads. I also contribute fixes upstream when something I use misbehaves.

Education
IIIT Kottayam
B.Tech, Computer Science & Engineering
2024–2028 (expected)
CGPA 9.46 / 10 (through sem. 4)
Toolbox
Languages
C, C++, Python, Java, x86-64 Assembly
Databases
PostgreSQL internals, index access methods, query optimisation, SQL
Parallelism
OpenMP, multithreading, synchronisation
Tooling
Linux, GDB, Git, PGXN & PyPI publishing

Talks & Contributions

TALK“Biscuit: Solving PostgreSQL’s Wildcard Search Performance Problem” at FOSSASIA Summit 2026. Covered how wildcard queries are processed and how position-based indexing avoids heap rechecks.
UPSTREAMEvince (GNOME document viewer). Traced unusually high CPU use during thumbnail rendering to an unguarded file-loading path in the thumbnailer. I reported it and submitted a fix as a merge request. I’ve also reported three issues in GNOME Files and Text Editor.
WORKSHOPC++ and Parallel Programming for the IEEE SSET Student Branch: OpenMP, threads and parallel performance, built around a matrix multiplication demo.
WEBINARDSA and Debugging with C++ for the IEEE SB MLMCE: algorithms, plus practical techniques for debugging them.

Contact

Working on database internals or systems software? I’m happy to talk about PostgreSQL extensions, open-source collaboration, internships, or anything on this page.

sivaprasad.off@gmail.com


© 2026 Sivaprasad Murali · Last updated: September 22, 2026