About Me

I am Alfred Chan, a seasoned software engineer by profession. Outside of my work, I dedicate my leisure time to pursue my passion for game development as an enthusiastic hobbyist.

Throughout my academic journey at the University of Waterloo, where I pursued a Bachelor's degree in Computer Science, I honed my professional programming skills by engaging in various Co-Op jobs. Among the courses I undertook, the introductory class on Type systems and functional programming left a lasting impression on me, instilling the belief that prioritizing correctness verifiable by computers is paramount.

Fun Projects

This is a list of projects that I have made.
  • Space Industrialist (mini-game)[ Game Github ]

    Developed a personal pet project showcasing my skills in game development, focusing on a space-themed logistics game. Players assume the role of a CEO in charge of a galactic corporation, with the objective of maximizing profit by strategically constructing efficient production chains and exploring untapped markets on uninhabited planets. Implemented the game logic using Typescript, while leveraging React and HTML Canvas for the engaging presentation layer.

  • Simple RPC server & client [ Github Description Document ]

    This C++ project is developed as part of a distribution system course, offering developers the ability to establish personalized functions on their server, allowing users to execute these functions in the "cloud" environment. The project consists of three major components:

    • Coordinator Server: This server acts as a crucial gateway between other servers and clients. Its primary role is to provide clients with namespace resolution for other servers. Additionally, it serves as a worker server for computation purposes.
    • Worker Servers: These servers are responsible for providing cloud computing capabilities to clients. They maintain an internal namespace directory that gets regularly updated when they communicate with the coordinator.
    • Client Application: The user interacts with this client application to request cloud computation and obtain the results. The client also maintains its name directory and synchronizes it with a worker server during successful communication. This allows for local name lookup, reducing the coordinator's workload.

    Note: This project needs to be compiled and run in a Linux environment.

  • Direct UI Manipulation Game: Doozer Simulator [ Github Description Readme ]

    Presented here is a compact Java game project where the player takes control of a bulldozer equipped with a magnetic tip. The objective is to capture as many candies falling from the sky as possible, akin to a drag-n-drop Tetris-style experience.

    Screenshot of the Doozer Simulator