MIT World Peace University, Pune
Bachelor of Science in Data Science.

I build backend-heavy full-stack systems.
B.Sc. Data Science student at MIT World Peace University, Pune. I care about systems that are correct, observable, and fast. I spend most of my time on backend architecture, API design, and the plumbing that makes full-stack applications not fall apart under load.
Outside of code I roam around on my motorcycle chasing sunsets and fast winds. I also like ricing my Arch Linux environment. These are my dotfiles.
Bachelor of Science in Data Science.
B2B Procurement platform digitising vendor management for small businesses. Live at vendorgrid.in. Engineered a high-concurrency monorepo backend with FastAPI, asyncpg, and SQLAlchemy 2.0. Features SSE-based real-time vendor notifications, HTTP-only cookie auth, structured JSON logging, and a Docker Compose deployment behind Nginx on a DigitalOcean VPS.
Designed and implemented a genetic algorithm timetable scheduler in Python, optimising a multi-constraint fitness function across 2,000 evolutionary iterations. Authored a CLI automation toolkit leveraging Python asynciofor concurrent task orchestration.
Real-time observability dashboard built on a hot/cold path architecture. Hot path: Redis Pub/Sub fans out events to SSE subscribers via Elysia (Bun). Cold path: BullMQ workers drain into ClickHouse for long-term retention and analytical queries. Frontend in TanStack Start (React) with TanStack Query, Eden Treaty for end-to-end type inference across the monorepo.
Self-hosted NSE end-of-day data pipeline, archive, and screener. Downloads and structures twenty years of market data into a queryable PostgreSQL archive. Exposes a FastAPI REST API consumed by a React dashboard. Built with an async-first architecture using Python, asyncpg, and a Redis-backed task queue.
Python library for financial forecasting and portfolio optimisation using NSE end-of-day index data. Combines statistical analysis and machine learning with a Progressive Web App dashboard. Rebuilt from a family member's original pipeline with strict architectural patterns: one-way dependency flow,StrEnumthroughout, injectable transports for testing.
Python(Advanced), TypeScript, Rust, C/C++, SQLFastAPI, asyncio, asyncpg, SQLAlchemy 2.0, BullMQ, Elysia (Bun), Redis, ClickHouseReact, TanStack (Query / Router / Start), Zustand, Pydantic v2Docker Compose, Nginx, Let's Encrypt, DigitalOcean,AWS, Git, Arch Linux / SwayC++, ClickHouse internalsI take notes while I build — on architecture decisions, things that surprised me, and things I had to understand properly before I could move on.
I built Watchtower, a self hosted log ingestion pipeline. Moving infra off my dev machine made throughput 4x worse, and I spent way too long blaming the hardware.
Small, focused notes on things I pick up while building — too short for a full post.
To compress a folder you first bundle it into a single file (tar), then compress that file (xz) — which naively means juggling three artifacts: the folder, the intermediate .tar, and the final .tar.xz…
From a Rustlings traits exercise: two impl Trait arguments look like they share one bound, but each occurrence is a separate generic parameter.
In my LeetCode grind each solution file is self-contained: the function, its unittest cases, and an if name == "main" block that runs the tests — so uv run solution.py runs that file's suite. With a f…
When a function must branch on a command string, an if/elif tree grows one branch at a time and the dispatcher bloats. The dispatch pattern replaces the tree with a registry: a command → handler mappi…
A progress bar doesn't draw a new line per tick — it rewrites the same line over and over. The trick is the \r escape sequence: a carriage return that resets the cursor to the start of the current lin…
rm does not erase your file from disk. Neither does mv "move" your file. Both work on the filesystem's index — the metadata that says "this name points at this data" — which is why deleting a folder w…
Since Python 3.10 you can wrap the context managers of a with statement in parentheses, so several resources share one block instead of nested with blocks. Same cleanup semantics, flatter code.
FastAPI and Pydantic both read Annotated metadata, merge it into the OpenAPI spec, and Orval turns that spec into a complete typed client. Write the contract once; get validation on the backend and a…
The best résumé workflow I've found: give an AI agent your raw material and let it write the LaTeX. You paste the result into Overleaf, it compiles to PDF, and you download it. No word processor invol…
Stop all running containers in one command using nushell's splat operator:
Nushell's sys command exposes system info as structured data, so you can query it with filter syntax instead of scraping text out of ip addr or ifconfig with awk/grep.
Redis is the usual answer for job queues, but Postgres has a built-in pub/sub mechanism — LISTEN/NOTIFY — that covers simple worker patterns without adding another piece of infrastructure.
Stop duplicating state between the URL and component state. With TanStack Router + TanStack Query, the URL search params are the state, and the router turns any change into a data reload.