Hi! Bonjour! Привет!

My Head I’m a PhD candidate in computer science at Carnegie Mellon University and a Debian Developer. My professional ambition is to do beautiful mathematics that are relevant to computer science. I’m generally interested in the semantics of programming languages, the Curry-Howard-Lambek isomorphism, parametric polymorphism, and the foundations of mathematics.

While an undergraduate, I had the opportunity to do research at several wonderful places: McGill University, Microsoft Research Cambridge, Queen’s University’s School of Computing, MIT CSAIL, and ENS Lyon. I also spent a semester studying at the Independent University of Moscow in their “Math in Moscow” programme. A copy of my CV is available here.

See my blog for my musings on computer science, mathematics, and languages—spoken or otherwise.

Recent Blog Posts

  • On input validation and accessibility

    I use a custom keyboard layout based on the Programmer Dvorak layout, where numeric keys are accessed using shift. Accessing number keys via shift is also present on, e.g., the bépo layout. Over the past several months, I’ve noticed that more and more websites use validation that prevents me from...
  • How not to check email address validity

    I recently had to fill in a form on the USPS website requesting me to reconfirm my email preferences. They were kind enough to prepopulate all of the fields with my account data. However, when I went to submit the form, it complained with “You must enter a valid email...
  • Configuring the CMU SCS-Public printer on Linux

    A year ago, I wrote a post on Configuring CMU SCS printers on Linux. SCS Computing Facilities is rolling out a new single-queue print system, where you fetch your job from the queue to a particular printer using your ID card. They don’t provide instructions for configuring this on unfacilitized...
  • Implementing popen and pclose in SML

    Though Standard ML provides the OS.Process.system function to execute an arbitrary command using the default system shell, and the Posix.Process structure for fork and the exec variants, it doesn’t (as far as I know) provide a mechanism to run a process and capture that process’s standard out. I learned from...
  • Presheaf categories are Cartesian closed

    As I’ve been working through “Sheaves in Geometry and Logic”, I’ve been skimming proofs and attempting to rederive them. I normally end up with a better understanding of the material, but sometimes I get stuck. Here’s one case where I’ve gotten stuck: can anybody tell me why the counit for...

subscribe via RSS