CS student at the University of Alberta. I build things at every layer of the stack — kernels, 3D renderers, binary translators. Currently working on systems programming, Embedded/Firmware programming and where it meets AI.
Most of my projects start with a question I can't find a satisfying answer to, so I build it myself. That's how Im currently writing an OS kernel. My previous projects are a software 3D renderer, then a binary translator that converts RISC-V machine code to WebAssembly bytecode.
I'm studying CS at the University of Alberta with a minor in mathematics. The coursework is good, but the interesting stuff mostly happens outside of it. I tend to work at the bottom of the stack — memory, hardware interfaces, instruction sets and I find that understanding those layers makes everything above them make more sense.
Right now I'm thinking a lot about the overlap between systems engineering and machine learning. I want to work somewhere that cares about both.
No GPU, no graphics API just C, SDL2, and math. Perspective projection, backface culling, near-plane clipping, Phong shading, free look camera with 6 degrees of freedom. Multiple render modes switchable at runtime. The whole thing is architected into isolated modules: lighting, geometry, mesh loader, culling, camera. I wanted to understand what the GPU is actually doing before trusting it.
Binary-level translation — not source Unfortuanatly I cannot show this code as this was a CMPUT 229 Lab, for any questions feel free to email me at any time. Takes RV32I machine instructions and emits WebAssembly bytecode. R-type, I-type, branches. Built a signed LEB128 encoder from scratch because you have to. Register translation table handles the architectural differences including the zero register. This project taught me more about how both ISAs actually work than anything else. (Course work)
Full stack Android app, built with 5 other people over a semester. Event management with a capacity based lottery system, QR code generation with embedded geolocation, Firebase Firestore for multi user data. We ran proper Agile sprints, did code reviews, designed UML diagrams before writing a line. Different kind of challenge making decisions with a team is harder than making them alone.
Currently building a bare metal x86_64 kernel in Rust. Boots on QEMU. VGA buffer driver, UART serial output, a full Interrupt Descriptor Table with breakpoint and exception handling. The entire thing runs without the standard library — no_std, no_main, none of the safety nets. I started this to understand what actually happens between power on and your terminal prompt.
Built a distributed monitoring system across two programs distpsnotify and remoteagent, coordinating real time data collection over TCP/IP sockets from multiple remote machines simultaneously. Designed and implemented a custom client server command protocol (EXECUTE/QUIT, START/STOP delimiters) for structured, ordered data exchange across persistent socket connections. Engineered dynamic memory management for an arbitrary number of remote agents using heap allocation, verified zero memory leaks across all code paths using Clang's leaks tool on macOS. (Course work)
Solid fundamentals program. The mathematics minor adds useful rigor — linear algebra and discrete math show up everywhere in the kind of work I care about. The gap between what I learn in class and what I want to build is where most of my side projects come from.
Part time work . Facility setup, enforcing safety rules, keeping things running smoothly when something goes sideways mid event. I've gotten good at staying calm when things don't go to plan.
If you're working on something interesting in systems, AI infrastructure, or low level software or if you're just looking for a capable intern who won't need their hand held send me a message.