4th Year CS @ UBC
Vasily
Rubtsov
Systems programmer and full-stack developer. I build things at every layer, from GPU shaders and assembly to web apps and distributed systems.
I'm a 4th year Computer Science student at UBC who works across the full stack, from writing mergesort in 32-bit assembly and implementing malloc in C, to building computer vision pipelines and full-stack web apps.
I'm drawn to problems that require both low-level precision and high-level thinking. Outside of code, I self-host a Proxmox server running NAS, a reverse proxy, and a dev environment I SSH into from anywhere. I speak Russian, English, and Chinese (HSK4+).
Where I've
contributed
- Authored 27 canonical test vectors across 5 error categories, stress-testing malformed packet inputs against Rust, C++, Java, and Python backends
- Identified and patched missing decoder validation in C++ and Java backends, preventing malformed packets from being silently accepted
- Audited example documentation and cross-linked readme files to improve navigability across the codebase
- Designed and led a LaTeX workshop for 40+ students, teaching document compilation, typesetting, and reproducible formatting from scratch
- Co-organized a cross-club hackathon that drew 140+ attendees, handling logistics end-to-end and judging finalist teams
- Built frontend components for a UBC student advising chatbot trained on scraped university website data
Selected
work
End-to-end CV pipeline that converts Traditional Chinese manga to Simplified Chinese, fully automatically. Chains PaddleOCR, YOLOv8, OpenCC, and Pillow across 5 modular stages, with a Python CLI for batch processing and a React UI for visual pipeline inspection.
Interactive pathfinding visualizer on real city road maps. A*, BFS, and DFS animate step-by-step as traces over MapLibre GL. A Python backend precomputes road graphs; all search runs client-side for instant, deterministic playback.
Mergesort in raw 32-bit x86 assembly with no stdlib and no abstractions. Parses a text file into an integer array using system calls and ASCII arithmetic, sorts it recursively with proper calling conventions, and debugged entirely in GDB.
Thousands of particles simulated entirely on the GPU. Physics state is encoded into RGBA fragment shader textures, bypassing CPU bottlenecks entirely. Verlet integration handles stable collision resolution, a technique borrowed from physics engines.
A working malloc written from scratch in C. Uses mmap to carve virtual memory, tracks per-block metadata for coalescing free regions, and implements reference counting to catch use-after-free before it becomes a segfault.
Java application that authenticates against the Refinitiv Knowledge Direct API and pulls structured data from the server. Built a full Swing UI using OOP to compose small components into larger interactive objects.
Let's
connect
Open to new opportunities, internships, and interesting projects. +1 (236) 339 7393