Projects

Digital and Embedded Applications

Galaga-like game on an STM32

Implementation: C

Links: Source Code

As part of a team in a microprocessors course for university, I developed a Galaga-like videogame. It used the physical sensors and peripherals on the STM board to use the board as a video game controller. Since the board does not have a VGA output, we developed a renderer to output over the serial UART interface to a console using UTF-8 text. The program runs on FreeRTOS, and implements several different threads with shared resources that are synchronized and managed with semaphores.

Matrix Convolution FPGA Accelerator Module

Implementation: RTL design in VHDL; Verification in SystemVerilog; Modeling in SystemC; Board support package in C

Links: Source Code (not yet public)

Data Applications

CMathematics

Implementation: C

Links: Source Code, Creation Tutorial

This library implements various mathematical functions in C, including those in linear algebra, calculus, along with more algorithmic areas such as graph theory and big integer representation. In this project, I wanted to delve into translating mathematical ideas into computer code. To contribute to the interest and challenge, I programmed it using a lower-level language, which allowed me to learn more about computer architecture and memory representation. As of now, it primarily consists of basic functions in linear algebra, graph theory, and integer representation. However, in the future, I want to add on to these core concepts and create functionality in many other applications, such as encryption.

HttpServer

Implementation: C#

Links: Source Code

The http-server project is in some sense my attempt at replicating the .NET Core web application library. It consists of a web server interface, a static file server that can be hosted from any directory, and a framework that can be used to host a dynamic web server or API. This project helped me learn and experiment with numerous C# features, such as asynchronous functions, interfaces and other OOP concepts, and generics, along with a deep dive into the Type class and all its capabilities. The current capabilities of the library are as follows:

  • HTTP server interface that accepts and responds to requests; can be customized
  • Static file server that allows users to browse their local file system
  • Dynamic web server library that allows users to program an API or host other content; involves route trees and customized endpoint responses

See the README.md file for more details

DataVault

Implementation: C

Links: Source Code, Creation Tutorial

This application is a lightweight secure data storage application that implements several forms of encryption and data security. It is the culmination of several other projects that I had been working on, such as the CMathematics library. It makes full use of its data security functions, namely encryption and decryption with AES, hashing with SHA, and key generation with PBKDF. The CMathematics library was my main motivation for this project as I wished to combine all those cryptography algorithms. So far, it has allowed me to see how these algorithms can work together to store data so that it cannot be stolen and decrypted. The application itself is relatively simple, storing data values corresponding to different categories for an entry. The project is currently ongoing, and has working account creation, data creation, and data access functions. In the future, I hope to implement a console interface along with functions to modify or delete data.

Plain Data Application

Implementation: Server - Python, Client - JavaScript (Node.js)

Links: Source Code, Demo Video

This application is a server-client model where anybody can upload a problem they have, a project in progress, a set of data, anything they need feedback on. And anybody can reply to it, creating a very wide range of incoming opinions. It encourages public contribution on a large scale because everybody has the opportunity to express their thoughts regarding the topics on the application.

The server was built in Python and the first desktop client was built using Javascript (Electron.js). They communicate using a secured form of TCP communication, with a combination of RSA and AES encryption to ensure the communications are private and not vulnerable to attacks.

I completed this project for the 2019 Camp Khan and it placed in the top 50 projects for the summer.

JSON Read/Write Library (C++)

Implementation: C++

Links: Source Code

Installation and usage instructions on the GitHub Repository.

This is a lightweight json reader, editor, and writer in a single .hpp file. In this project, I was able to enhance my skills with C++, including how to use references along with how to integrate more powerful string parsing into a program. The goal of this library is to provide a small but important tool that can be used to write and parse data in other applications such as games that are written in C++.

Graphical Applications

OpenGL Engine

Implementation: C++

Links: Source Code, Creation Tutorial

In the beginning of 2020, I began to learn OpenGL, a low level graphics library in C++. In learning it, I decided to implement my own 3D engine in order to experience the inner workings of the library along with creating something that would be useful later on. In the first half of the project, I followed the site, learnopengl.com, one of the most thorough OpenGL tutorials on the internet, created by Joey de Vries. I implemented a good portion of that tutorial in my engine while adding many of my own contributions such as organizing the code into many different classes to take full advantage of C++’s object oriented design. As of now, it encompasses environment interactions, model loading, object physics, user input, and a primitive collision algorithm that makes use of an octree. In the process, I went through several revisions of the code to add optimizations and organize the code into classes so that it would be easier to read. Currently, I am working on revising the collision algorithm to use planes from a collision model rather than bounding boxes or spheres.

OpenGL Mathematics Visualizer

Implementation: C++

Links: Source Code Tutorial

Taking some inspiration from the channel 3blue1brown on YouTube, I found myself interested in graphical displays of mathematics. This series is a deep dive into leveraging OpenGL’s rendering and shaders to display mathematical concepts. It makes extensive use of the geometry shaders and how it can be used to procedurally generate models.

Some of the included concepts are:

  • 3D surfaces
  • Procedurally generated sphere
  • 3D arrows
  • Transitions and path plotting
  • To be continued…

GLPong

Implementation: C++

Links: Source Code, Creation Tutorial

GLConway

Implementation: C++

Links: Source Code, Creation Tutorial

Websites/Mobile Apps

English Civil War Website

Implementation: Weebly

Links: Site

This site was created for a history project and displays information about the English Civil War. It uses a chronological organization, with each page dedicated to one of the three time periods of the war. This site was created with Weebly as the competition rules dictated.

Metabolic Pathway Website

Implementation: HTML, JavaScript, CSS, Hosted on GitHub Pages

Links: Site, Source Code

This site was created to display a biological process. I was able to first try out hosting a site with GitHub pages with this project and experimented with different ways to present the information. I ended up with a JavaScript click-through slideshow to show the different steps in the process.

Quebec Architecture

Implementation: HTML, JavaScript, CSS (Bootstrap), Hosted on GitHub Pages

Links: Site, Source Code

I created this site in French class to present research I did on architecture in Quebec City. I opted to host with GitHub pages once again because of the ease in the process. This was the first time I experimented with Bootstrap, a CSS framework. Additionally, I incorporated many functions in CSS, such as a timeline, along with creating my own HTML element in JavaScript.

French Summer Work Website

Implementation: HTML, CSS, Hosted on GitHub Pages

Links: Site, Source Code

This website was created for French class as a journal for the tasks we were given to complete over the summer. There is a lot of media involved with this site, so I was able to learn the best manners in which I could display the audio and video clips. This site was built completely in HTML and CSS, without any JavaScript.

Portfolio de Thèmes Website

Implementation: HTML, CSS, Hosted on GitHub Pages

Links: Site, Source Code

I built this website as a portfolio to keep track of my work in French class. Each page is dedicated to one of the different themes in the class. Once again, I was able to experiment with different ways to display media and other content. Additionally, I used this as an opportunity to test a new navigation style.

SpaceX Launches Mobile App

Implementation: JavaScript (React Native)

Links: Source Code, Creation Tutorial

This React Native mobile app is very simple: it takes data about SpaceX launches from the SpaceX API and displays them. It displays images from the links along with information about the launches, which all come from the API data. This project allowed me to experiment with the structure of a React Native app, including how to integrate packages like React Navigation.