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
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).
On the device
- GPIO/PWM LED sequencing
- 30 fps capture
- PyTorch 3-branch ResNet
- Hemoglobin on I2C LCD
Best research model
- 820 histogram + 240 PPG features
- RF + LightGBM + XGBoost
- 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.
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.
- 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.
Symptom
About 18% of requests failed under graded load. Errors clustered in the first seconds of each load stage, with zero timeouts.
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.
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.
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.
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.
- Prevented an open redirect in the /auth/confirm callback #74
- Sanitized review comments before writing them to the database #73
- Moved PBKDF2 anonymization server-side and patched dependency CVEs #72
- Removed debug session logging from the browser Supabase client #71
- Redacted URLs in anonymized reviews with a placeholder #70
- 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 profileRamanujan 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.