About me
Hi! I'm a 4th year student at UWaterloo Software Engineering.
I love all things programming-related, but I'm especially interested in graphics, VFX, game development and reverse engineering.
I've been programming for around 8 years, and gotten acquainted with a variety of languages and frameworks through personal projects, school, and work experience. I also did quite a bit of contest programming in the past, with top ranks in national contests such as the CCC. I consider myself a fluent programmer, and love to learn new things!
Skills
- Strongly experienced: C/C++, C#, Unity Engine, Python, Houdini
- Experienced: JS (Node, Typescript, React), OpenCL, OpenCV
-
Realtime hair simulation
What: Hair simulation based on Fast Simulation of Inextensible Hair and Fur. 10k hairs with 16 particles per hair at 20fps. Supports sphere colliders and root motion.
How: Written using Houdini DOPs with OpenCL.
github.com/sunny-lan/hairsim -
Ray tracer
What: Ray tracer based on Ray Tracing in One Weekend. Supports triangle meshes, textures and bump maps, constant density volumetrics, BVH, and camera depth of field.
How: Written in C#
github.com/sunny-lan/raytracer -
Serious monkey business
What: A Vapourwave themed tower defense/FPS game in VR, created by a team of 3 interns during Unity GameDev nights. I created the: Health and money systems. UI/logic for tower selection and placement. Rocket smoke trail and explosion VFX. Rocket launcher turret, banana boomerang, and katana weapon (3D modelling, VFX, and code).
How: Created in Unity Engine.
-
E-Wall
What: A set of games where characters can interact with physical elements such as a level drawn on a whiteboard or your hand. Cutouts with enemies drawn on them get loaded into the game; they can shoot at you and you can kill them.
How: Written in Python. Used OpenCV's Sobel edge detection and FLANN based object matching to detect real world elements. Graphics are displayed using pygame. Built with a team of 5 people.
github.com/RichardYSun/E-Wall -
Grage
What: Controls the garage door at my house through a web app. A general purpose web service + device firmware for controlling IoT devices across the internet. With an extremely simple API for extending the service or controlling new devices.
How: The server is written in Typescript and runs on Node.js. It communicates through WebSockets with an ESP8266 which monitors and controls whether the door is open. The web interface is written in HTML and Typescript (with webpack).
github.com/sunny-lan/grage -
Tyanide
What: A desktop client for students to view their grades. Notifies you when marks are updated. Has better calculation features than the original site, allowing students to see how a certain test result could affect their grade.
How: Written in Java. Web scraping done using JSoup. User interface build around JavaFX.
github.com/sunny-lan/Tyanide
-
SideFX
R&D Dynamics TeamBrought 3 non trivial from nothing to user-testing; transform handles and point selection for Vellum Brush, Wind Shadowing to Vellum Solver, and measure thickness node for arbitrary geometry. Polished animation dopesheet, and upgraded volume and attribute blur.
Received recognition from team for outstanding performance, return offer for next term.
-
Unity Technologies
Application Development with Unity C# - VR/Desktop/MobileWorked on Reflect Review, one of Unity's products for Architecture/Engineering/Construction. Fixed over 25 bugs including several release blockers (high impact bugs), across multiple platforms. Added support for Passthrough (AR inside VR headset) in collaboration with Meta. Implemented navigation using grab/zoom in VR, including integration with multiplayer. Made prototype for collaborative tabletop model viewing. Made prototype for real life room scale calibration in VR.
Received recognition from team excellent performance, return offer for next term.
-
Behavior Interactive
C++ VR Game Programmer (January 2021 - May 2021)Ported C++ game with custom engine to VR (Steam OpenVR). My tasks included: Refactoring render engine to allow rendering from multiple camera angles in the same frame. Implementing base support for UI rendering to a plane in VR. Debugging rendering problems (flicking, artifacts) using PIX Adding headset position reset as bindable key. Adding option for designers to disable specific cameras and camera modifiers (eg. shake) specifically for VR
Received recognition from team for outstanding performance, return offer for next term.
-
AMD
Windows Kernel Graphics Driver Development in C/C++ (January 2021 - May 2021)Worked for two terms as part of the Windows Kernel graphics driver team. Worked in C/C++ on a very large codebase (>1M lines of code), helping develop telemetry code, writing tests, and debugging tickets. Took ownership of two initiatives - cross compiling internal tools for Windows, and a new project (Firmware Profiler) to measure overhead of GPU firmware.
Received recognition from manager and mentor on outstanding performance, asked to return both terms.
-
AMD
Windows Kernel Graphics Driver Development in C/C++ (May 2020 - August 2020) -
Triway Education
Tutor (March 2019 - June 2019)Taught Java to classes of around 10 students. Gave private lessons on contest algorithms.
triwayeducation.com -
Principle Inc.
Co-op placement (Sep 2017 - Feb 2018)Worked on event ticket management admin interface, including writing database queries to load data into the UI. Also designed a mobile app to potentially replace the current version.
principle.com -
Duowei Education
Assistant tutor (July 2016 - April 2017)Helped teach students the basics of Java
duoweischool.com
-
CCO Silver
2019Qualified to compete at CCO by being one of the top 30 contestants on the CCC (Canadian Computing Competition) Senior division.
The CCC is a nation-wide programming contest involving problems requiring algorithm knowledge and strong problem solving skills.
-
CCO Bronze
2018 -
CanHacks/PicoCTF 2nd Place
2018Placed second in Canada at PicoCTF. PicoCTF is a contest where students solve challenges involving cybersecurity related topics such as binary exploitation and webapp exploitation, forensics and reverse engineering.