Computer Engineering student at the University of Waterloo. I build projects to solidify what I'm learning, currently working in C++, Python, and systems programming. Always looking to pick up new tools and contribute to things that matter.
CPU ray tracer built from scratch in C++17, with no external dependencies. Implements Lambertian, metal, and dielectric materials with Snell's law refraction and Schlick-approximated reflectance, a thin-lens camera with depth of field, stochastic anti-aliasing, recursive path tracing, motion blur, and a texture system covering image maps and procedural noise. Scene traversal is accelerated by a bounding volume hierarchy (BVH) over axis-aligned bounding boxes, cutting per-ray intersection cost from O(n) to O(log n). Built with CMake; outputs gamma-corrected PPM. Key takeaways include designing spatial acceleration structures (BVH, ray–AABB slab traversal), managing numerical precision in ray–surface intersection, procedural texturing via hashed permutation tables, and navigating subtle C++ pitfalls around auto-induced variable shadowing.
Node.js + Express + SQLite to-do app containerized following Docker's Getting Started Workshop. Covers layer caching and Dockerfile optimization, named volumes vs. bind mounts, multi-container networking with MySQL over a user-defined bridge network, and multi-stage builds. Orchestrated with Docker Compose. Built with Node.js, Docker, Docker Compose.
- Low-level graphics and rendering pipelines (extending the ray tracer with BVH acceleration and texture maps)
- Containerization and DevOps fundamentals
- Getting hands-on with machine learning fundamentals using scikit-learn
I'm always open to talking about engineering, co-op experiences, or opportunities.