This is my non-academic page, largely focused on my programming projects. My (likely not up-to-date) non-academic CV can be found here. Note: This CV is somewhat out-of-date. I am notably currently working for Graphcore as a Graduate Silicon Engineer.

Technical projects

Most of my larger technical projects can be found on my GitHub (calliope1), but the following are a selection:

Calliope.Mx

HTML, CSS, PHP, SQL, JavaScript.

This is most of the source code for my personal website, calliope.mx, that you are presumably currently browsing. It is largely written in PHP and JavaScript, with some SQL integration for storing and serving information about my papers and talks.

Budget App

Kotlin, Python.

This is a simple server-based budgeting app for Android designed to allow multiple users to share a single pool of expenses. The minimalist functionality is inspired by my second favourite budgeting app (after this one), Moneyfy.

The app communicates with the Flask server API to obtain expenses, as well as adding, editing, or deleting expenses (using a simple password and hashing system to validate the agent). The list of expenses, the total expenditure and budget remaining for a given week are displayed, and by swiping left and right one can move to previous/future weeks.

One possible future update would allow users to enter servers and keys themselves, thus allowing for actual distribution of the app, but that isn't too near the top of my priorities at the moment.

The Order of the Closed Eye

Python.

This is a short horror game that I originally developed over the course of a week when I was 16, building on a primitive RPG system that I had designed a couple years prior. The repository includes both the original files and a "remastered" version that I made during the summer of 2025, featuring cleaner code, better terrain generation, better enemy behaviour, better hit detection, and significantly improved lighting.

Minecraft Inventory Puzzle

Python.

Suppose that you are in Minecraft, inventory open, with one full stack of dirt in your inventory and nothing attached to your cursor. What is the least number of clicks required to end up with exactly 17 blocks of dirt attached to your cursor?

This sort of question had been strangely plaguing me for a few months when I wrote this code. A much better explanation of the idea behind the puzzle, the mechanics of minecraft inventories, and the solution to the puzzle can be found in the README for the repository.