photo of me, with a blurry space needle in the background!

I work as a backend engineer at Smartpay in Tokyo, Japan, where I am happy to be writing purely functional Scala.

In my free time, I work on Noteworthy, an open-source Markdown editor with bidirectional links and excellent math support! I also enjoy reading about functional programming and discrete differential geometry.

I hold a Masters in Computer Science from Georgia Tech, where my research advisor was Jacob Abernethy. Previously, I studied math at the University of Michigan, where I also helped with a machine learning class and reading group.

Out of the office, I enjoy biking, long walks, and baking sourdough. Maybe one day I'll make more games. If you'd like to chat, feel free to write me at

Recent Updates

2022 Joined Smartpay in Tokyo as a backend engineer writing purely functional Scala
2020 Started full-time as a Machine Learning & Graphics Engineer at EmbodyMe in Tokyo
Teaching Assistant for ISYE 6740: Computational Data Analysis with Prof. Yao Xie
2019 Teaching Assistant for CS 4540: Advanced Algorithms (F19) with Prof. Jacob Abernethy
MS in Computer Science (High Performance Computing) from Georgia Tech
Attended the Discrete Optimization & Machine Learning Workshop at RIKEN
Internship at RIKEN AIP in Tokyo on the Approximate Bayesian Inference team
2018 Teaching Assistant for CS 4540: Advanced Algorithms (F18) with Prof. Jacob Abernethy
Visited the Data Science & Online Markets group at Northwestern

Recent Posts (View Archive)

Yoneda Lemma Bridging the gap between formal and informal presentations of the Yoneda Lemma.
The Hask Category A quick reference for understanding the Hask category of Haskell functions between data types.
Abstract Algebra: Modules Vector spaces over a field are a special case of the more general notion of modules over a ring. Rather than the long list of axioms normally presented in textbooks, we see how an algebraic view of vector spaces helps to motivate the definition of modules.
Expectation Maximization Expectation Maximization is an iterative algorithm used for maximum likelihood estimation on latent variable models. Following (Neal & Hinton 1998), we present expectation-maximization as coordinate ascent on the Evidence Lower Bound. This perspective takes much of the mystery out of the algorithm and allows us to easily derive variants like Hard EM and Variational Inference.

Open Source

I maintain the following open-source packages:

I have also made a few small contributions to open-source libraries: