Hi! I'm Raymond Li, and I'm a software developer and a BSc Combined Major in Computer Science and Mathematics student at the University of British Columbia from Calgary, AB.
In my academic coursework, I've completed Computer Science courses covering Models of Computation, Data Structures and Algorithms, Computer Systems, and Software Construction; and I've completed Mathematics courses covering Calculus I, II, and III, Linear Algebra, and Mathematical Proofs.
In addition to academics, I have experience participating in programming contests such as Waterloo's Canadian Computing Competition, the USA Computing Olympiad, and Google Kickstart; game jams such as Global Game Jam Vancouver; and Capture the Flag (CTF) cybersecurity competitions such as jellyCTF.
I also enjoy exploring ways to apply math and computer science concepts to real programming problems. For example, in my game development project for a pixel-art style 2.5D RTS, I applied linear algebra and affine transformations to render a 3D-like hexagonal grid and handle interactions with a hexagonal coordinate system.
I have experience writing real software and designing complex systems, as shown in my game engine project. I used the composition pattern with dependency injection to handle scene loading with dynamic libraries, and designed a hooks and events API for easily extending and modding the engine through injecting run-time hooks and signing event calls.
This game engine project also used data structures and algorithms such as trees and DFS for recursively loading Lua mods and their dependencies, and designing the engine around Lua mods allowed for fast-iteration through hot-reloading, which allowed for seeing changes to code update in real-time without compilation.
I have passion and believe in free and open source software, I use Linux (Arch btw) and Neovim, and enjoy contributing and supporting FOSS projects that I use a lot, whether its game-modding tools such as Aurie and YYToolkit or programmatic animation software like Motion Canvas.