Aly Cerruti
About Me
I am a graduate student of Computer Science at University of Calgary, formerly a Computer Science undergraduate at University of California Santa Cruz. My current Master’s program involves reverse engineering of old video games that were hand-written in assembly and analyzing the human practices and patterns present in that era of games programming.
Research Interests
Many of my interests involve the interaction between “levels of computation”, i.e. compilers, decompilers, reverse engineering tools, and hardware-software interactions. I like to understand the ways we translate between higher- and lower-level models, and I find it fun to use that understanding to create transformative works like modding APIs. I think it’s important to understand these tools to gain more insight on the different ways programs can be modeled.
Programming Languages/Compilers
I am currently working on designing a compiler for an OCaml-like language that outputs Hexcasting patterns. The unique challenges in this space are that Hexcasting operations are performed entirely on the stack, as well as that Hexcasting is a concatenative language, meaning recursive bindings and operations become quite complex tasks. At the moment I have yet to write formal documentation on how the language behaves, however I have made available notes that chronologically document my thinking process.
Reverse Engineering
I’ve been reverse engineering and modding games (among other software) for a while. Most recently, I’ve been working on reverse engineering the scripts used in Ever Oasis, and then I plan to move onto reverse engineering the game engine. Ever Oasis uses Squirrel scripts internally: this is the same language Valve calls VScript, but while Valve stores all scripts in plaintext format, Ever Oasis ships blobs of Squirrel bytecode. I couldn’t find any existing tools to aid in the reverse engineering process of Squirrel bytecode, so I made my own tool squirrel-explorer that uses a mix of WebAssembly and Scala.js to run the Squirrel compiler on the user’s code, disassemble an uploaded file, and compare the assembly for the user to try and match.
Hardware-Software Interactions
For a long time, I have had an interest in clockless computing, where rather than waiting for a clock signal to proceed to the next pipeline stage, CPUs process data and events as they become available. There are already companies exploring this type of design, such as GreenArrays, who are developing clockless circuits built to be energy-efficient. One of my longstanding interests is functional and streaming paradigms such as those featured in fs2 and cats-effect, and I would like to see if taking inspiration from these paradigms could lead to a more unified approach to reactive computing.
Programming Experience
I currently mainly program in Scala, and am very proficient in Java. Other languages I am able to program easily in include C, C++, C#, Rust, and Kotlin. I have experience writing TypeScript/JavaScript, Python, F#, Crystal, Lua, and Haskell. My GitHub username is currently s5bug.
Gaming
My all-time top 5 favorite games:
- Ever Oasis
- Marble Saga: Kororinpa
- Rabbit & Steel
- Celeste
- The Legend of Zelda: Ocarina of Time
One of my favorite ways to game is to be faced with the same difficult challenge for hours on end and gradually chip away at it. I can back this up with my hundreds of hours in Geometry Dash and hundreds more in Celeste. Ever Oasis also has a grind-heavy postgame, and I’m still working towards 100% completion on my main savefile.
I used to play a lot of Final Fantasy XIV: in only 2 months it became my most-played game, and it’s a game I now have spent over 2,000 hours in. I mainly played Fisher, Monk, and Black Mage, and enjoyed blind and world progression. When Monk and Black Mage were simplified in Dawntrail, I dropped them to play Pictomancer, but the continued simplification of skill rotations has taken all of the enjoyment out of the game for me. Instead, I recreated 4.3’s “Tornado Kick Monk” entirely in a Minecraft mod (alymod), which is pretty enjoyable.
Coursework
There are times when extending this website is better for coursework than a different tool. To keep time in lexicographical order, I use a numbering system that places the autumn of one year into the next year.
- 2022H
- Spring section of the 2021-2022 school year.
- 2022N
- Summer section of the 2021-2022 school year.
- 2023A
- Autumn section of the 2022-2023 school year.
- 2023F
- Winter section of the 2022-2023 school year.
2022H: Japanese Culture
Japanese Culture 2022 Spring: Course Project
2023A: Visual Communication and Interaction
About This Website
The entirety of aly.fish
is supposed to be easily browsable without JavaScript, CSS, or custom fonts. CSS and custom fonts are used to make the website more consistent, and may be loaded by your browser. The source code is on GitHub (s5bug/aly.fish). This website was generated with Astro v5.10.1 and is being hosted via Cloudflare Pages.