Adam T. Geller

atgeller (at)

I am a graduate student at the University of British Columbia. I study Computer Science with a focus on Programming Languages.


  • Verifying that Web Pages have Accessible Layout. Pavel Panchekha, Adam T. Geller, Michael D. Ernst, Zachary Tatlock, Shoaib Kamil. Accepted to PLDI 18.

Blog Posts

  • Minisaw: a writeup of some of my work on Cassius.

About Me

My Experience

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.

Conferences I've Attended

I (virtually) attended PLDI 2020.

I attended the PLMW at SPLASH 2018 (which was awesome), where I also had a poster about PGo.

I was at PLDI 2018, where VizAssert was published.

I went to PNWPLSE 2018.

I've also attended RacketCon 2017, and RustConf 2019.

My Interests

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 and

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.

Research Projects

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.

Index-Typed WebAssembly (September 2019 - Ongoing)

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.

MPI Fellowship (May - July 2019)

I worked on a software testing project that combined fuzz testing with dynamic symbolic execution. Check back later for more details.

Cassius & VizAssert (March 2017 - June 2018)

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:

  • Testing and improving the specification and implementation of Floating Layout
  • Adding support for colors
  • Improving the implementation of shrink-to-fit width
  • Creating and implementing a specification for line-height, text-box size and placement, and inline size and placement
  • A test case minimizer to help us debug Cassius, and hopefully eventually help web devlopers fix any issues Cassius finds. One of my blog posts is a writeup of my work on the minimizer.

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.

PGo (August 2018 - April 2019)

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.