I'm a PhD student at the University of British Columbia, and I'm interested in programming language design. In particular, I want to investigate how we can practically leverage the unique properties of more unusual, often somehow declarative, language semantics.
At the moment, I'm primarily pursuing the question of order in imperative languages: in most popular imperative languages, there is one canonical evaluation order between statements. Does there have to be? Why, when we write more complex programs involving any kind of asynchrony, does apparent statement order become so misleading and bug-prone? What does removing implicit order do to the imperative paradigm, and can we benefit from it?
This site, like a CV but more colourful, combines information about my projects and other pursuits for those interested.
A distributed systems compiler, aiming to provide compilation from abstract model-checkable specifications in PlusCal into Go code that can run on a real network. The project includes networking support libraries, and Modular Pluscal, a modular superset of PlusCal.
My MMath thesis work. Designed to make Interface Definition Language implementation easier, it's an impure functional language with fully out-of-order processing, making order-of-operations bugs, even involving pointers, impossible.
I produce experimental electronic music, which I post on SoundCloud, and other music sites via a distributor. Not guaranteed to be easy listening, but I hope it's entertaining.