Portfolio
A selection of projects I’ve been working on throughout my life.
LLVM--2
The codebase for my bachelor’s project. A spiritual successor to the Tiger compiler written during the compilers course, except this would attempt to allocate registers with the use of graph coloring and linear scan instead of greedily spilling each variable to the stack as we were directed to during the compilers course.
Written in OCaml 4.14 with the help of the OCamlgraph library for control-flow graph to conduct dataflow analysis to derive liveness, as well as interference graphs in the case of graph coloring. The results were mostly measurements of runtime performance and can be seen in the corresponding report (pp. 25-29).
Con^2
Demo | Repo (frontend) | Repo (backend)
A minimum viable product enabling users to share pictures of nearby bus stops on a map for others to enjoy.
The backend consists of TypeScript using the fastify web framework, Postgres for data storage and Amazon S3 for media storage.
The frontend is written with TypeScript and React.
Dasha
An x86 disassembler written in Rust with a demo targeting WebAssembly mostly intended as a demo/toy project linking assembly code to machine code generated.
Minimal utility in practice but it looks really cool to see specific parts of the machine code corresponding to associated assembly highlighted as you mouse over.
bad-directions
A silly web app that can give you a step-by-step route from a point of origin to your destination in text form, but also gives you the option to translate to one of ~20 different languages an unlimited number of times to help obscure your route or even challenge your sense of direction!
Inspired by a bit from a comedy show: got home and had a working prototype the day after. It relies entirely on OSRM for pathfinding, OpenStreetMap (specifically Nominatim) for geocoding, and LibreTranslate for translation (specifically this mirror for graciously allowing CORS requests for free 🖤, as of 1st of April 2024: no free and open mirrors remain so my home server will need to suffice, though it’s extremely slow).
Popeye
A demo/toy project intended for optimizing training programs for workout routines using graph colouring. Although this uses Welsh-Powell instead of the linear time approximation known as coloring by simplification or linear scan as used in my bachelors thesis.
Written in Rust targeting WebAssembly using the Yew framework with the datasets loosely lifted/borrowed from https://exrx.net. It serves no real purpose other than demo’ing the use of graph colouring and its application in something other than register allocation.
Homepage
The site you’re on! Built with Hugo, deployed and hosted with GitHub Actions on GitHub Pages.