IIT Bhilai · B.Tech CSE 2027 · Scroll to climb

Roshan
Raj

I build systems end to end: a compiler and bytecode VM in C++, a fault-tolerant load balancer in Go, a real-time coding race platform, and machine learning for a medical screening device.

at 2,500 concurrent users
0 errorsat 2,500 concurrent users
in my own bytecode VM
60 opcodesin my own bytecode VM
anemia sensitivity (NISHAD)
91.4%anemia sensitivity (NISHAD)
LeetCode problems solved
350+LeetCode problems solved
scroll

L1 · HardwareSummer Research Intern · Jun – Aug 2026

NISHAD

Screening for anemia from a fingertip video

S3 Summer Labs, IIT Bhilai · in collaboration with AIIMS Raipur

A low-cost, non-invasive device that estimates hemoglobin from fingertip videos lit by three LED wavelengths. I built its machine learning and embedded software.

patients in the dataset
481
anemia sensitivity
91.4%
mean absolute error
2.09 g/dL
LED wavelengths
3
  • Programmed the Raspberry Pi device in Python: GPIO/PWM LED sequencing during 30 fps video capture, and output to an I2C LCD.
  • On-device PyTorch inference with a 3-branch residual network, one branch per wavelength.
  • Trained models with patient-grouped cross-validation, so no patient appears in both training and validation folds.
  • Best model: a Random Forest + LightGBM + XGBoost ensemble on 1,060 features (820 color-histogram and 240 PPG pulse features).
LED sequencingone wavelength lights each video segment

On the device

  1. GPIO/PWM LED sequencing
  2. 30 fps capture
  3. PyTorch 3-branch ResNet
  4. Hemoglobin on I2C LCD

Best research model

  1. 820 histogram + 240 PPG features
  2. RF + LightGBM + XGBoost
  3. 91.4% anemia sensitivity
  • Python
  • PyTorch
  • scikit-learn
  • XGBoost
  • LightGBM
  • OpenCV
  • Raspberry Pi
  • Signal Processing

L2 · CompilerCompilers · Virtual machines · WebAssembly

MiniLang

A compiler, bytecode VM, and browser IDE, built from scratch

A statically typed, C++-style language with functions, recursion, pointers, and vector/queue/stack containers. It compiles to bytecode for my own stack VM, which also runs in the browser through WebAssembly.

lines of C++17
7,000+
VM opcodes
60
precedence levels
13
end-to-end tests in CI
14
  • Hand-written lexer and recursive-descent parser with panic-mode error recovery.
  • Semantic analyzer with scoped symbol tables and type checking.
  • AST optimizer: constant folding, constant propagation, and dead-code elimination.
  • Stack VM with call frames, compiled to WebAssembly for a Monaco-based IDE with a step-through debugger for bytecode, stack, and locals.
Inside the compilerone line, every stage
VarDeclStmt  x : int
└── LiteralIntExpr  25

The parser gives * higher precedence than +, so 10 * 2 becomes the inner node.

  • C++17
  • WebAssembly
  • Emscripten
  • JavaScript
  • Monaco
  • GitHub Actions

L3 · NetworkDistributed Systems Lab · IIT Bhilai

Fault-Tolerant Load Balancer

Zero errors at 2,500 concurrent users on 1 CPU and 512 MiB

A reverse-proxy load balancer in Go, in front of three replicated Go backends and PostgreSQL, running on four containers each capped at 1 CPU and 512 MiB.

errors over 60,000 requests
0
concurrent users
2,500
error rate, before → after
18% → 0%
peak LB memory of 512 MB
364 MB
  • Least-connections routing: each request goes to the backend with the fewest in-flight requests, and equal loads take turns.
  • Active health checks: a backend is marked down after 3 failed probes and back up on the next success.
  • If a backend errors or returns a 5xx before any bytes reach the client, the request is retried on a backend it has not tried yet.
  • Backends batch writes to PostgreSQL and pull peer updates every 300 ms using sequence numbers.
Live simulationsame routing rules as the Go code
served
0
retried
0
502 errors
0

Every request goes to the backend with the fewest in-flight requests. Take a server down to see what happens.

Incident report
Error rate0%
OOM kills0 new
LB memory364 MB peak
  1. Symptom

    About 18% of requests failed under graded load. Errors clustered in the first seconds of each load stage, with zero timeouts.

  2. Root cause

    cgroup memory.events showed 121 OOM kills on the load balancer container. Each restart left a 1-second gap with nothing listening, so clients were refused instantly.

  3. Fix

    Reused buffers with sync.Pool, cached feed snapshots on the backends, set GOMEMLIMIT with a lower GOGC on every node, and cut the restart delay from 1 s to 50 ms.

  4. Result

    0 errors over 60,000 requests at up to 2,500 users, no new OOM kills, and all three backends served the same 57,490-message feed.

  • Go
  • PostgreSQL
  • Docker
  • Linux
  • cgroups
  • Concurrency

L4 · ApplicationFull-stack · Real-time

AlgoRace

Live 1v1 coding races

Two players are paired by ELO rating, get the same problem, and watch each other’s progress live. The first to pass every test case wins.

problems
102
test cases
1,020
REST endpoints
30
reconnect grace
10 s
  • Live opponent progress over Socket.IO rooms.
  • REST API defined in OpenAPI, with generated type-safe React Query hooks and Zod validators.
  • Grading runs generated C++ and Java test harnesses on the Wandbox API.
  • Wins and ELO changes settle in one database transaction that allows only one winner; JWT, bcrypt, and rate limiting protect the API.
How a race plays outillustration · 10 test cases · K = 32
YouELO 12000/10
OpponentELO 12480/10

Every submission runs against all test cases, and progress is pushed to both players over Socket.IO.

  • React
  • TypeScript
  • Express
  • PostgreSQL
  • Drizzle ORM
  • Socket.IO
  • OpenAPI

L5 · Open sourceOpen Source Contributor · Jun 2026

RateMyCourse

5 merged security and privacy fixes

OpenLake, IIT Bhilai · Next.js, TypeScript, Supabase

OpenLake’s course-review platform for IIT Bhilai students. I found security and privacy problems and fixed them.

  • Next.js
  • TypeScript
  • Supabase
  • Web Security

L6 · SkillsToolbox

Skills

Grouped by area, with the projects where I used them most.

Languages

  • C++
  • Python
  • Go
  • TypeScript
  • JavaScript
  • SQL
  • Bash
  • C

Most used in: MiniLang · NISHAD · load balancer · AlgoRace

Core CS

  • Data Structures & Algorithms
  • OOP
  • Distributed Systems
  • System Design
  • Concurrency
  • Networking

Most used in: Load balancer · MiniLang · LeetCode

Web & Backend

  • React
  • Next.js
  • Node.js
  • Express.js
  • REST APIs
  • WebSockets (Socket.IO)
  • TanStack Query
  • Tailwind CSS

Most used in: AlgoRace · RateMyCourse · this site

Databases

  • PostgreSQL
  • MongoDB
  • Supabase
  • Drizzle ORM

Most used in: AlgoRace · load balancer · RateMyCourse

Machine Learning

  • PyTorch
  • scikit-learn
  • XGBoost
  • LightGBM
  • OpenCV
  • NumPy
  • Pandas
  • Signal Processing

Most used in: NISHAD

Systems & Tools

  • Linux
  • Docker
  • Git
  • GitHub Actions
  • WebAssembly (Emscripten)
  • Raspberry Pi
  • Vercel
  • Render

Most used in: every project here

Education & achievements

Expected May 2027

Indian Institute of Technology (IIT) Bhilai

B.Tech in Computer Science and Engineering

Relevant coursework

  • Data Structures & Algorithms
  • Operating Systems
  • Computer Networks
  • Database Management Systems
  • Machine Learning
  • Probability & Statistics
  • Linear Algebra
  • Discrete Mathematics

LeetCode

350+

problems solved, including 200+ Medium and 20+ Hard, across dynamic programming, binary search, trees, and graphs.

View profile

Ramanujan Mathematics Olympiad 2023

2nd

rank in Patna district in the Bihar state-level olympiad, among 1,000+ participants.

SummitContact

Let’s build something that runs.

Open to software engineering roles. The fastest way to reach me is email.