BackBusiness Card
2026-01-10
| GitHub | 

This is my business card. My business card is a PCB, using the STM32F103C8T6 microcontroller as it's brain.
The STM32 is connected to 6 push buttons and a 12x12 LED matrix. The push buttons and LED matrix are laid out to look like a GameBoy Classic.
The business card has a collection of common engineering related symbols, values, equations, and footprints on the back. The STM32 is programmed to simulate John Conway's Game of Life.
The push buttons allow you to control the game board and the power of the system. The Up/Down/Left/Right buttons move the cursor around when in edit mode. While in edit mode, a cursor will flash and the user can press B to toggle the selected pixel. To Pause/Play the game, the user can press A. While the game is paused the user can edit the board.
Some cool patterns are printed across the front of the PCB. The QR code to my portfolio, and some contact info is also on the front of the PCB.
This project was inspired by Mixtela's StyloCard.
BackPower Distribution Board
2025-11-10
| 

The power distribution board is a reliable and organized solution for managing power delivery to the UofG's rover's modules. The board was designed in KiCad, and supports and allocates power to various modules including some notable ones such as the Light, Arm, Fan, and Antenna boards. Each output was designed with its unique requirements in mind, ensuring correct routing and current capacity across all connections.
A significant aspect of this project was the collaboration with team members, particularly with the mechanical subsection. Clear communication ensured the PCB's footprint met the constraints of the overall assembly.
The board incorporates practices, such as dedicated ideal fuse protection for the major outputs, optimal power trace sizing, and connector orientations. Design decisions were influenced by past designs and collaboration with the team.
A major struggle with this project was configuring the board in such a way that the converters would be close to the outputs but also fit within the board size requirements. I ended up deciding to mount the converters on top of the board on a tray. This is why there is a higher than normal count of connectors on the board.
BackFiledex
2025-09-10
| Github | 

About
Filedex is a semantic file searching tool. Filedex is powered by Gemma3 using different models for different tasks. Model 1b is used for creating relations between tags. Model 4b is used for identifying tags for text files. Model 12b is used for identifying tags for image/PDF files.
Tags, relations, and directories are stored in SQLite.
Usage
Filedex needs to be told what folders to index. This way you have control over what you would like to be indexed. In the main menu you need to select 2. Add a directory to indexer to add a directory. To remove directories from the indexer select 3. Remove a directory from indexer. Currently if you remove a directory the related tags and information will not be removed. This prevents broken links from being introduced into the database. The justification behind this is that the relations made while tagging a folder might present better search results for unrelated folders/files.
Once you have added directories to Filedex you need to start an indexing job. To do this select 4. Start indexing job. Once you have selected this, you can not restart the task or cancel it without restarting the program. A notification will be sent to the console once the indexing is done. The indexing may take a long time depending on hardware and amount of files within the directories.
Finally, once the indexer is done, select 1. Search to search. Filedex will try its best to relate your keyword(s) to files it has seen. Search results will vary from machine to machine and from run to run. This is because results from the LLM used is fairly random. The search tool is limited to 20 results. The results will automatically be sorted from most relevant to least. The relevancy is identified by the LLM so accuracy may be poor.
To reset the database:
- Delete the file named metadata.db.
- Duplicate the file named metadataE.db.
- Rename the duplicate file to metadata.db.
If there is an issue with resetting the database, re-clone the repository.
Supported File Formats
.txt .pdf .png .jpg
Support for HTML, CSS, XML, JS, and other plain text file formats will be added in the future.
Demo
The picture of the folder which was used for the demo can be seen on the repository for this project. The picture contains a folder with various images, filenames are gibberish showing Filedex capabilities. Notice that the filenames are unrelated to the images. The images were sourced from Pexels.
Search 1
The search corgi resulted in:
1 - \Users\Ethan\Desktop\test\pexels-gilberto-reyes-259461-825949.jpg (picture of dog with brown headband)
2 - \Users\Ethan\Desktop\test\pexels-hnoody93-58997.jpg (corgi)
3 - \Users\Ethan\Desktop\test\pexels-lum3n-44775-406014.jpg (beige dog head peeking out)
4 - \Users\Ethan\Desktop\test\pexels-pixabay-57416.jpg (orange cat licking paw)
5 - \Users\Ethan\Desktop\test\pexels-lina-1741205.jpg (orange cat with red bandana)
As we can see the results are generally related to the search for corgi. The only result that should have came up that did not was the picture of the 2 puppies. At the bottom of the list was results for cats which we can assume was related by a common tag like pet or animal. Because the link is indirect, the results popped up lower in the list.
Search 2
The search sports car resulted in:
1 - \Users\Ethan\Desktop\test\pexels-alex-amorales-321095-909907.jpg (Audi)
2 - \Users\Ethan\Desktop\test\pexels-kelvin809-1519192.jpg (Hyundai)
3 - \Users\Ethan\Desktop\test\pexels-mayday-1545743.jpg (Audi)
4 - \Users\Ethan\Desktop\test\pexels-mikebirdy-170811.jpg (BMW)
5 - \Users\Ethan\Desktop\test\pexels-nordic-overdrive-202768-627678.jpg (Old Sporty Car)
6 - \Users\Ethan\Desktop\test\pexels-peely-712618.jpg (Classic Car)
7 - \Users\Ethan\Desktop\test\pexels-pixabay-210019.jpg (Alfa Romeo)
8 - \Users\Ethan\Desktop\test\pexels-zvolskiy-1637859.jpg (Alfa Romeo)
As we can see the results are generally related to the search for sports car. All the pictures of cars in the test folder came up as results.
The only result which was strange was the Hyundai picture. This picture appeared higher up in the list than most of the actual sports car pictures. This picture may have tags related to it invalidly by the LLM that make it appear high up in results. Upon searching for other car related search terms that the Hyundai picture vaguely connects to, the picture consistently appears too high up. This test demonstrates one of the flaws with Filedex.
Future Plans
- Add the ability to reset the database from within the menu
- Add the ability to change the limit of search results
- Add the ability to customize the models used for each LLM task
- Add the ability to visualize the relation database
- Add MacOSX and Linux executables
BackV10 Pneumatic Engine
2024-09-20
| OnShape | 
Since my inline 3 engine model project I wanted to design a new model engine that could actually run without someone turning a crank. I was unsure what energy to base my new engine model off of until I saw a video by PolyProject3D on YouTube. He has made a collection of 3D printed engines that all run off of compressed air. The specific engine that peaked my interest is the V8 model engine he made.
The reason why his V8 model engine intrigued me the most was because of the intricate intake and exhaust manifolds he designed. The manifolds and the performance of the engine lead me to be reminded of the Lexus LFA due to its high revving nature and unique sound characteristic. Due to this I decided I would design my own version of the engine PolyProject3D made but in V10 form in inspiration from the LFA. I figured it would be the perfect project to learn how to manufacture more detailed and stress-enduring part using SLM printing.
This project is quickly growing in scope as this engine is now be paired to an entire system of 3D printed drivetrain components to form an entire functioning(ish) model car. So far I have the engine connected to a transmission and a differential with the frame sitting on all around double-wishbone suspension. I am not able to find affordable methods to manufacture my engine so I have stopped at assembling just the engine. The engine cranks and the valves rotate but not nearly smooth enough to run off of compressed air. I will proudly blame my Ender 3 for it's poor print qualities.
BackFire Fighting Maze Robot
2024-05-29
| OnShape | 

This robot was made for my Grade 12 computer tech class using OnShape. It features a pair of ultrasonic sensors, an infrared sensor and a temperature sensor. All the sensors communicate to the Arduino which controls the wheels and pump using a L298N motor driver. I also built the maze that our class used for this project as tasked by my teacher.
Additionally I learnt how to make an enclosure for the robot which both serves structural and aesthetic purposes which taught me how to better account for tolerances when 3D printing. I also learnt how to implement a basic maze navivation algorithm.
BackPing Pong Ball Launcher
2024-05-24
| OnShape | 
In this project I designed a fully automatic ping pong ball launcher machine. The only thing that drives the machine is a single DC motor. The entire "logic" that fires ping pong balls is all mechanical. The motor rotates a gear with a linkage attached to it. The linkage pushes a shuttle back and forth in the left side of the slide. The slide resets and triggers the firing mechanism. The firing mechanism is wound up with a compression spring and triggered with a lever at the full back position of the slide. Ping pong balls are held in a simple 3D printed tube. The launcher was designed to be manufactured by a lazer cutter and a 3D printer allowing for cheap and easy construction.
Back2024 Battle Bots
2024-05-13
| OnShape | 

The battle bot I built for the 2024 season was designed off of a year of experience where I learnt everything from where to buy affordable fasteners to how to best design a frame to resist attack. The robot for the 2024 season was completely redesigned from the ground up to prioritize frame rigidity, value, and fairness first. I decided to consider value and fairness as integral aspects because I could transfer what I thought was fair into the parts I was tasked with buying for the 2024 season. I needed to make sure that the parts I decided to buy were easy to learn with, effective in battle bots, but also effective for other activities (i.e. drones). I also needed to ensure that the teams could fairly compete no matter what skill level and budget at hand.
The reason why this specifically spoke to me is because I felt that the 2023 season was unfair due to the wide range of budget, team sizes, and robot sizes. There were no standards in the 2023 season. There was also no defined scoring system which meant teams were blindly going into the competition not knowing how a winner would be decided. These were all issues that were remedied in the 2024 season. I supplied fasteners to whomever needed them, 3D printing parts for other people when I could, designed rules to consider all aspects of battle (as to deter boring metas from forming), and I generally helped/mentored around 10 teams with their bots. I felt I had a lot more fun in the 2024 season and I hope a lot of other people did too as that is how I would measure my success.
My battle bot had the following specs:
- 4 1/2" saw blade
- Drone motor driven by a D2822 ESC (weapon)
- Dual 25GA-370 drive motors driven by an L298N
- Arduino Uno
- Bluetooth receiver (smartphone control)
- 50mm computer fan for cooling
- 4 easy to swap 18650 Lithium-Ion batteries
Back2023 Battle Bots
2023-06-26
| OnShape | 

This is the Battle Bot for the HHSS 2022-2023 battle season. This bot uses a plastic spinner as its weapon, driven by an old weed wackers DC motor. The drive train is powered by a pair of 25GA-370 motors controlled through dual L288N drivers and an Arduino Uno receiving bluetooth control inputs. The components in this robot are air cooled by a 50mm computer fan. There was not enough detailed CAD planning involved in this project as it was my groups first time building a complex electromechanical system. A lot of components were just stacked on top of whatever could have held something. We also could not find a suitable weapon to use so we just ended up throwing together a plastic spinner. A lot was learnt while making this robot.
BackecoConnect
2023-05-20
| Website | 


I made this tool for the 2023 Spring Hacks Hackathon. This tool uses your location to show a sorted list of curated local produce stores. Each business has a latitude and longitude stored in the database which is put into the Haversine formula to determine the rough distance to the user. I attempted to write a script that would automatically grab business data from Google Maps but I wanted to avoid having to pay for API credits. I also tried to make a web scraper to get data without paying for an API but I could not guarentee the quality of the data provided to the user.
BackCircuit Layout Creator
2023-04-03
| Github | Devpost | WebApp | 


Circuit Layout Creator or CLC is an open source, circuit layout creation website. This project was inspired by DIYLC, with the main difference being that this web-app is compatible on all devices as long as they have a web browser and a physical keyboard. As it stands a basic circuit can be created from start to finish. The biggest change that needs to be made is an improvement to the current control scheme. Everything in this app is done through they keyboard which is the biggest suggested category of change given by the alpha-testers. The control system in the future will be able to integrate the mouse to click and drag components around.
The entire web-app is programmed in Javascript utilizing easy to read JSON files and custom component files to draw the components on the canvas. The custom component footprint language means that contributors can easily add components to the library.
BackAutomata
2022-10-27
| OnShape | 
This is a 3 cylinder, dual overhead cam engine model built for an automata project in GR11 using OnShape. This model was manufactured using a 3D printer, a laser cutter, and a lot of hot glue. This model operates with a hand-crank. The requirement for the automata project was to build a simple cam based toy but I was able to convince my teacher to let me stretch the idea of the project to build an engine model.
BackFarmunation
2022-05-11
| Github | WebApp | 


Farmunation is a 2D farming game that was created because of my love for farming games. The project took inspiration from games such as Farming Simulator and John Deere's: Harvest in the Heartland. The idea around this game was to give the player complete freedom and near limitless space for them to grow and develop their farm. Both Farming Simulator and Harvest in the Hearthland limit your map in some way. This game is not finished and still has a lot to complete.
In Farmunation you can buy equipment, seeds, fertilizer, and decoration. I stopped development of this game as I got frustrated with the way drawing to the screen works in Javascript and the inherit flaws with the language Javascript.
BackCaved
2022-01-25
| Github | 
Caved is a retro 2D terminal remake of the game Minecraft made in Java. Crafting, mining, sleeping, building, saving/loading maps, and killing mobs are all things possible in this game.
The map is procedurally generated and the enemies are driven by a basic AI algorithm.
This was the first major game I created in Java which I built in my Grade 11 Computer Science class. The map data is saved in a custom semi human readable format so that someone with basic education could modify their map. Caved will display the game in colour if the terminal the user used supported it, this results in an interesting gameplay experience.
BackFood Inc
2021-01-17
| Itch.io | 
I made this game for fun using the Unity game engine. I published this game on the Google Play Store on which it obtained many downloads. This was my first large-scale project supporting many operating systems and was updated to add more content numerous times.
This game gives you the ability to buy different upgrades and evolve the food that you were producing. I used the popular game Egg Inc as heavy inspiration and as such lots of gameplay loops and styles are found in my game.