rackyard.lol

About

I'm primarily interested in compilers, formal methods, reverse engineering, and denotational semantics, particularly where abstract models of computation meet the awkward realities of actual runtimes and hardware. I have a BSc (Hons) from the University of St Andrews, as well as an MSc, and much of my work concerns how programs are represented, transformed, and eventually executed. My main interests include compiler correctness, mechanized reasoning, intermediate representations, abstract interpretation, and the semantic obligations created by transformations such as closure conversion, instruction selection, and memory model lowering.

I also spend considerable time on game hacking and program analysis, primarily through Pokémon ROM hacking, which provides a useful mixture of formats and idiosyncratic engine design. My work on Pokémon Emerald and FireRed has involved reversing ARM7TDMI and Thumb routines as well as repointing ROM resident structures, modifying event bytecode, extending battle engine dispatch tables, and dealing with GBA timing constraints. I'm comfortable working with compressed tile data, palette banks, object attribute memory, DMA transfers, and fixed address pointers into the GBA cartridge region. I've also looked at Pokémon Platinum, where ARM9 overlays, NitroFS, NARC archives, and runtime loaded modules make relocation behavior and data ownership a lot harder to recover from static disassembly.

I also kayak frequently and spend a fair amount of time cave climbing and running with friends.