Recent Posts:

Table of Contents:

Projects

Last updated 26/07/2024

Cache Visualizer (Bachelor's Project)

For my bachelor's project, I wrote a cache visualizer. The frontend takes in an arbitrary cache configuration and a C program (Of a smaller subset of C). The input is then sent to a python backend using flask-socketio, where the program is compiled down to RISC-V machine code and then disassembled. The process of compiling and disassembling is done by the RARS toolchain and not my program. The python program then launches a C program that takes in a file containing RISC-V disassembly and a cache configuration that we got from the frontend. The C program simulates all of the RISC-V instructions accurately, such that we can find out what the program ultimately returns or outputs to stdout. Aditionally, all memory accesses are sent through a memory module that keeps track of all cache interactions. Ultimately, the program produces a log file containing all necessary information in order to reconstruct the entire execution timeline as a set of discrete steps, showing on which lines of source code we're roughly operating on at any one time, and the state of the cache for any specific instruction. It's also here that miss-rate and other heuristic statistics are calculated and displayed.

Ultimately, the tool ends up being useful for both testing novel ideas for cache architectures, but also for running heuristic analysis of different approaches of doing things in a C program, showing how programs that comform well to the cache used gain a significant performance improvement.

Magic the Gathering Simulator

Probably my favorite hobby project. I wrote a front and backend for an online platform that facilitates access to an online game of magic, with all rules integrated, such that it would guarantee playing in accordance with the rules. I built it using Python for the backend and Javascript for the frontend, communicating between the two using flask-socketio. I made it possible for people to create a lobby and for another person to join said lobby before starting the game. As of now this project is not finished, but is in a pretty impressive spot. The sheer amount of different ways mechanics interact in magic gave rise to a lot of neccessary refactoring as I worked to make all systems extremely flexible.

Huffman Code File Compression

During a course on Algorithms and Data structures, I was inspired to make a file compression implementation. I did this using huffman encoding, which caters to compressing ascii based files. A file containing the entire manuscript for the Hamlet play was originally 177.232 bytes, and after my compression, only 106.825 bytes. To finish this project, I had to manually implement a huffman encoder and decoder in C, which also involved a handwritten max-heap.

Web Scraping MTG Pack Opener

One of my first ever projects. To experiment with webscraping I made a program that you can supply any 3 letter acronym of a magic the gathering set, and it would scrape the entire set off of Scryfall. After scraping the set, I made an interactive UI to simulate opening packs of cards, keeping track of how far along a complete set collection you were as you kept accumulating more cards.

This Website

SQL Based MTG Loldle Clone

Fasto Language Compiler

Visual Pinball X Launcher

Zupreme

Table of Contents: