atgeller (at) cs.ubc.ca
I am a graduate student at the University of British Columbia. I study Computer Science with a focus on Programming Languages.
I had a research fellowship at the Max Planck Institute for Software Systems (MPI-SWS) from May-August 2019, where I worked with Maria Christakis and Valentin Wuestholz.
I am currently in the second year of my masters program at the University of British Columbia (UBC), where I started in September 2018, advised by Ivan Beschastnikh and William Bowman.
I graduated from the University of Washington (UW) in June 2018 with a bachelor's degree in Computer Science.
Check out my CV for more details.
I am currently most interested in compiler theory and type systems. I like doing research and working on random projects (few amount to anything useful).
Outside of school, I am a fencing referee who hopes to one day referee at the Olympics. I have refereed at many national tournaments in the United States and Canada. I took up running and climbing since getting to Vancouver, and I enjoy playing soccer with my lab mates. I pass time by watching shows and movies, cooking, and playing with my cat.
My cat's name is Socrates (Soccers for short). I adopted him from the RASKC in July 2016 when he was about two months old.
My bunnies are named Simba and Greyce Hopper. Simba is the big fuzzy grey lionshead, and Hopper is the fluffy grey and white one. Unfortunately, my bunnies were not able to travel with me.
For me, reasearch is a way to dig deeper into topics I find fun and interesting and push the boundaries of human knowledge. I started doing Programming Languages research after finding myself really enjoying an introduction to PL class I took as an undergraduate at UW. Now I have the opportunity to work closely with faculty and fellow students at UBC to learn and build new tools and ideas. Learn more about my research interests by looking at my Statement of Intent.
My current research project is building an indexed type system for WebAssembly to catch possible runtime errors during compilation and improve compiler optimizations. More details coming soon. Currently, I'm working on writing my thesis (once that is finished, much more information will be available). The redex model is publicly available.
I worked on a software testing project that combined fuzz testing with dynamic symbolic execution. Check back later for more details.
I worked on Cassius during my undergraduate studies at UW.
Cassius is a tool for automated reasoning about webpage layout. It models the specification for much of CSS, and has novel ways of reasoning about many features of CSS, including floating layout, line-height, and margin-collapsing. My work on Cassius mainly involved improving or adding to our specification of CSS. Notable features I worked on include:
VizAssert is a tool that uses Cassius' understanding of webpage layout to allow developers to verify visual behavior of webpages. Developers can use VizAssert to make their own assertions, or use examples that we provide based off of accessibility and usability guidelines. My work on VizAssert included testing assertions and making a couple of new assertions based off of my work on line-height, as well as my work on Cassius. VizAssert had a paper accepted to PLDI 2018.
I worked on PGo during my first year of my masters at UBC.
PGo is a source-to-source compiler from PlusCal to Go. The goal of PGo is to avoid errors arising from incorrectly modeling a system by providing a mechanical translation from a model-checkable specification to an implementation. PGo aims to provide a best-of-both-worlds experience: avoiding state-explosion commonly found in implementation model checkers by using a model checking language (PlusCal) that can be compiled into a correct (and useful) implementation.
I wrote an extended abstract and designed a poster which was accepted to the SPLASH 2018 poster session. The extended abstract can be found in the PGo github repository.