Adam's Webpage
Software Engineering Student

  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.

Welcome to my Projects Page!

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.

Tetris Program Image

Tetris Game

In HTML/CSS/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.

Sudoku Program

In Java and Python

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.

Sudoku Program Image
Calculator Program Image

Programming Calculator

In HTML/CSS/Javascript

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:

  • Powers of 2
  • Log base of 2
  • Binary/Decimal/Hex conversions
  • The Modulo (%) operator

Maze Solver

In C++

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.

Solved Maze Image