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.
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.
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.
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.