Projects

I take immense pride in my work. The following showcases a collection of my favourite projects. Each of these highlights my application in a range of skills, from object oriented programming using Java, using NLPs and API integrations, to research work and mobile app development using Unity. The hackathon projects demonstrate my ability to collaborate and contribute in a meaningful way while rapidly learning and applying new skills. The island project demonstrates my use of algorithms for irregular terrain generation.

Thank you for taking an interest in my work.

Nasa Space Apps Challenge - Matlab, Java, Google Cloud - 2023

The Cosmos PerSonified project transformed CRISM's hyperspectral images into an auditory experience. By translating each wavelength band into a unique sound signal, our program enables users to explore the full spectrum of light beyond human vision. The UI allows users to drag their mouse over a 10x10 grid, unveiling distinctive sounds associated with each image section.

Utilizing Matlab and a Google Cloud Database, we processed hyperspectral images and transformed coordinates into sound frequencies. Java was employed to convert frequencies and amplitudes into smooth audio transitions, stored in Google Cloud. The user interface, built with Vue, offers an interactive grid for exploring sounds. 

View the full project entry here: Nasa Space Apps Challenge

Hack the North 2023 - Memory Blinkr - Python, NLP, OpenCV

MemoryBlinkr is a memory challenge game designed to enhance memory skills by requiring players to memorize and replicate images or text before their next blink. The project combines computer vision and game development, offering a collection of minigames under a common theme.

The game includes various challenges:

  • Grid Game: Players face a grid of black and white squares, with increasing difficulty as the grid size grows. The objective is to progress as far as possible.
  • Image Game: A random image appears, and players must replicate it by drawing on a canvas.
  • Phrase Game: Players input a topic, generating a short sentence to memorize and reproduce.

The development process involved setting up the tech stack, dividing tasks for UI elements and blink detection, and creating the baseline grid game. Additional minigames were introduced to broaden skill sets, such as a paragraph game utilizing an NLP API and a freeform drawing game involving mathematical calculations to compare image differences. The project was polished on the final night in preparation for presentation and pitching. MemoryBlinkr offers an engaging way to challenge and improve memory skills while incorporating diverse technical elements for a well-rounded learning experience. The full project entry can be seen here: Hack the North Dev Post

Island Project - Java, Procedural Terrain Generation

This was a challenging project allowing the procedural generation of 2D islands, with features such as the following:

Various Island Shapes

  • We created some pre-defined shapes, and the code is designed such that new ones can be easily added, including irregular shapes.
  • The shores of the island will always be composed of beach tiles.

Elevation

  • Elevation profiles can easily be defined; we included a few examples such as a single large mountain, or a range of smaller mountains covering the island.

Rivers

  • Rivers start at a spring on a random tile and flow along tiles with decreasing or constant elevation.
  • They can merge with other rivers, forming a wider river which continues to flow. 
  • A river ends either when it reaches the ocean, or when it can’t flow down any further.

Lakes

  • Lakes appear at random on the map in varying sizes.
  • They also form where rivers end if the river doesn’t reach the ocean, with the size of the lake determined by the flow of the river that formed it.

Moisture Absorption

  • Rivers and lakes cause surrounding water to absorb moisture, effecting greenery and habitability. This effect spreads outwards from the source.
  • Moisture is also produced by hidden underground aquifers at various points on the map.
  • The soil absorption coefficient can be configured.

Biomes

  • A tile’s biome is related to its moisture and elevation. For example, a low dry biome is a desert, whereas a high wet biome is a snowcapped peak.
  • Biomes each have their own colour, although they gradient based on how well they fit their criteria, allowing for a smooth colour transition across the island.
  • Biome criteria is determined by a Whittaker Diagram. New Whittaker Diagrams can be defined to change the face of an island.

Cities and Roads

  • City locations are chosen based on ideal conditions, based on an area’s moisture and distance to other cities. The capital city is placed first, in the optimal position on the map. Additional cities are then placed in the next best positions, while attempting to maintain a fair distance from other cities to prevent resource starvation.
  • Roads connect in a star network to the capital city.
  • Roads avoid lakes and rivers where possible but will create bridges over them if necessary. They also attempt to avoid mountainous terrain and will take the path that’s least steep if they have to go up a mountain to reach a city.

Generation Parameters

  • Shape, elevation profile, number of rivers lakes aquifers and cities, soil absorption, and the biome Whittaker diagram, can all be configured.
Algorithms and technical knowledge used:

Object-Oriented Programming

  • Our code is heavily based around OOP principles, with emphasis on abstraction, inheritance, encapsulation, and polymorphism. Detailed UML diagrams can be found here:

View UML Diagrams

Irregular Polygon Mesh Generation

  • First random points were added to the canvas, then a Voronoi diagram was calculated for each point, leaving a sharply angled mesh.
  • Lloyd Relaxations were then used to smooth out the polygons into their final shape.
  • Delauney Triangulation was used to find each tile’s neighbours for future use.

Breadth First Search (BFS)

  • Both elevation and moisture absorption were implemented through variations of the BFS algorithm to represent an expanding radius from a point.
  • Edits were made to the BFS algorithm when generating mountains in order to produce a more irregular shape.

Dijkstra’s Shortest Path

  • Road networks were calculated via use of this algorithm, with each tile as a node, and the difficulty of building a road across a tile due to steep elevation or blocking rivers used as a weight mapping for graph edges. This ensured the most efficient road networks were created.
Island Generation

Hack the North 2022 - ImitAItor - NLP Project using Cohere's API

Our team was comprised primarily of beginners to hacking, so we sought to take on a project in a new area none of us had worked with before, those being Web3/Ethereum or NLP. Both areas had tremendous sponsor support and help, and we eventually decided on an NLP project using Cohere's API.

Using Cohere's API, we decided to educate people using our project on NLP technologies in a fun, engaging, and approachable way.

The main premise of the app was based on spot-the-lie style party games such as those frequently seen in the JackBox Party packs. We thought that trying to mimic an intelligent AI would add an interesting challenge to this style of gameplay, and teach players to spot differences between how AI and humans speak; thus furthering people's knowledge in an approachable manner.

Our backend utilized Python calling Cohere's NLP API. Front-end was built using Figma and Tkinter GUI framework for Python. I worked on the back-end of the project, creating the general workflow and main functions while my team members worked on UI. The full project entry can be seen here: Hack the North Dev Post

University of Waterloo - 2022 Research Co-op

This was a summer internship at the University of Waterloo. I created a dataset of open-source Android apps as a tool for other researchers using Android Studio to compile a large variety of apps.  I developed Python scripts to mine data using GitHub’s API to provide lists of suitable apps. These apps were tested to confirm if they were in a compilable state. At the end of the project I wrote a report on the development of the dataset and how it can be used, for the MSR 2022 conference

View Draft Paper

Driving App

BASEF-Logo-2013-white-medium.png

 

 

2021 Bay Area
Science and Engineering Fair

Project Details:

Developed an Android driving simulation app using Unity and C# to enhance learning, safety, and awareness while driving, by training users to incorporate road rules without the use of a car and to begin forming procedural, rather than declarative, memory through repetitive action. The intended use for this app could be part of a driving course, or to practice for G1 and G2 tests.

Awarded:

  • ArcelorMittal Dofasco Hot Mill Award
  • Mohawk College Computer Science & Information Technology Excellence Award
  • Primary Fluid Systems Award
  • Silver Merit Award

As part of my BASEF application, I created a 15-page paper on the results of my project, titled, “A New ‘App’roach to Enhance Learning and Improve Safety with Driving”.  This paper focused on my process, as well as my theories on how the app could promote procedural memories. The results were based on feedback received from beta testers, as well as results from an initial interest survey.

“FYI I have 10 years driving experience and did driver training in class room and in person. […] Overall my impression is that this app would definitely have benefit to new drivers. At a minimum it demonstrates to new drivers the level of attention driving requires, as well as provides an opportunity to experiment with the way cars handle. […] the app definitely reminded me of how much you need to watch road signs in unfamiliar situations. The first while I missed speed limit changes or upcoming stops. This improved as I used the app.
Beta Testing User Feedback

Foundation for Student Science and Technology (FSST)

In Grade 11 I participated in a research co-op with The Foundation of Student Science and Technology (FSST). I worked with Dr. Mei Nagappan, an assistant professor of software engineering at the University of Waterloo. The research was looking to see the relationship between a software developer’s experience, and the likelihood that they will introduce a defect in the software. For this project I had to learn how software was developed in the open source world. I developed Python scripts to mine the data from GitHub repositories. Finally I had to build statistical models to determine the relationship using logistic regression. As part of the project a formal scientific research paper titled ‘Examining the Relationship Between Developer Experience and Defects’ was submitted to the Journal of Student Science and Technology.

View Submitted Research Paper

SE Garage - University of Waterloo

After completing my FSST Co-op, I continued to work on other projects with Dr. Nagappan and 3 other volunteer students. The goal of one of these projects was to help create a website called SE Garage that would act as an app store for software engineering research tools. I worked on gathering “tools” for the site and was also consulted regarding design aspects of the site. I searched International Conference of Software Engineering (ICSE) sites to find the research tools to be used on this app store

References

Throughout the 4 months of the internship, I was amazed by how fast Jake could learn new concepts with minimal direction from my end. Since it was a remote experience (mostly in part due to the pandemic), I could not teach Jake the concepts myself. I would routinely just point him to online resources and he would pick them up on his own. Such independence is a fantastic skill to posses for any seasoned researcher. Jake picked up difficult concepts that he had not learned in school like logistic regression quite easily. I can only assume that this was possible because his basics are strong. Similarly, he was able to mine the data with ease. Note that this project is similar to what graduate students start with as well. So the research standard is quite high here. Still Jake managed to execute it well within his internship timeframe.
Dr. Nagappan
Associate Professor, University of Waterloo
I have known Jake for over three years, having the pleasure to teach him in both my English and drama classes, and I believe that I can speak of his character with insight.

Jake is a talented, creative, hard-working student. He has demonstrated a range of impressive skills on a consistent basis. In drama, he has produced work that is thoughtful, imaginative and at times, very humorous. Jake is a terrific group member who contributes ideas in a positive manner and respectfully accepts concepts from his team. He listens deeply, a rare but essential skill in today’s world. Jake possesses strong leadership and problem solving skills, and he quickly senses when his peers need further direction and motivation to complete set tasks. He is well-liked and highly respected by his classmates.

Jake expresses his ideas in a concise, articulate manner in both oral and written forms. He is a talented writer. His work is carefully drafted and he pays close attention to detail while at the same time bringing a fresh, often unique perspective to the topic.

Contributing to the community is also important to Jake. He has volunteered for more than 150 hours at the Apps Mill Nature Centre, where he helps run summer camps for six to 10-year-olds. He also takes a leadership role in the school’s chess club and is learning two musical instruments. Combined with his excellent work in drama, these pursuits highlight an essential characteristic of Jake: he strives to challenge himself beyond his more obvious and outstanding talents in math and science.
Department Head of English
Paris District High School
Jake is a graduating grade 12 student at Paris District High School (PDHS). He is an incredible student who has excelled in the classroom, when competing in mathematics/science competitions and in his software engineering research. Jake has demonstrated a strong interest and abilities in the math's, sciences and software engineering. Jake has won numerous school awards in the math's and sciences. As well, Jake’s school mathematics team has won zone championships in the Fryer mathematics contest, Canadian intermediate mathematics contest, Galois mathematics contest and the Canadian senior mathematics contest
Department Head of Science
Paris District High School

View More About Me