Hi,
my name is Yi Ran Yin (commonly referred to as Adam) and I am
currently a 4th Year Computer Software Engineering student at the
University of British Columbia. Some of my hobbies and interests
include: programming, computers, basketball, reading, violin and
cooking. Currently, my goals are to graduate from school and
secure an ideal software engineering position, making programs and
deliver applications to users across the world.
  Due to my passion for software, I often find myself
writing my own programs in my spare time. The variety of programs
which I have written range from desktop software to mobile and web
applications. I am deeply impassioned by being able to produce
software which people can use and depend on, thus I strive to
create programs for myself and those around me. My personal
programs and projects are either linked in this page or found in
my GitHub profile.
  As I got into web development, I came across the land
of functional Javascript. Fascinated by the elegant/magical
looking excerpts of functional Javascript code, I stumbled across
Haskell and became mesmerized and enlightened by such a
sophisticated style of programming. In addition to separating
semantics and interpretation, being able to utilize abstract
maths, in my opinion, brings programming to a new realm. Since
then, I have been immersing myself in relevant theories such as
Category Theory while also hacking in Haskell during my spare
time. Ultimately, with the Curry Howard Isomorphism in mind, I
strongly believe there is great potential for this style of
programming.
This page is an exhibition of the side projects which I have worked on during my spare time and all of which can be found in my GitHub repositories. School related projects are excluded.
Note: Much of this page is outdated as it was built when I first
learned HTML/CSS and Javascript.
A client side web application version of the classic puzzle game, tetris, including common elements in tetris games such as level/speed select and next block preview.
However, unlike tetris, this game features an additional piece-wise gravity scheme and custom blocks, allowing fancy comboes while also providing increased difficulty! Amongst the variety of tetris gravities, piece-wise gravity is known to be the most complex to implement, making this an interesting challenge.
A sudoku program first written in Python then later translated into Java and ported into an Android app. Desktop version UI is made using the Java Swing Library.
In addition to the typical 3x3 blocks x9 forming a grid with 81 squares, this program supports the generic NxN dimensions, such as 4x4 blocks x16, a grid with 256 squares.
This program can solve and generate random Sudokus at levels of difficulty and is fully playable on desktop environments.
A calculator front end web application with elements inclined towards computer programmers.
In addition to standard calculations, this calculator features shortcuts to capabilities such as:
A maze solver program that parses an image of a maze using the OpenCV Library. Then uses the Breadth-First-Search (BFS) Algorithm to solve the maze by interpreting the pixels read.
Upon solving the maze, this program draws the found solution path onto a copy of the original image in either green, green or red.