About Me Blog Papers

I Finished my Ph.D.!

Thu 22 December 2022

It took six and a half years, but I'm happy to announce that I finally got my Ph.D. in Computer Science. Hooray! As I write this, I'm starting a short-term post-doc at MIT to wrap up a few research projects, but I'm actively applying to jobs. If you have …

Continue reading »

How to Use CMake Without the Agonizing Pain - Part 2

Mon 31 May 2021

Welcome back to Part 2 of this series! I was very happy to see the warm reception Part 1 got over on /r/cpp. Before we get started, I thought I would take this opportunity to clarify a couple of points about this series.

First, this series is not a …

Continue reading »

How to Use CMake Without the Agonizing Pain - Part 1

Sat 22 May 2021

When age fell upon the world, and wonder went out of the minds of men; when grey cities reared to smoky skies tall towers grim and ugly, in whose shadow none might dream of the sun or of spring's flowering meads; when learning stripped earth of her mantle of beauty …

Continue reading »

Building a Faster Triangular Solver than MKL

Sat 20 March 2021

A significant part of my research involves investigating algorithms with interesting properties and then trying to optimize them to fully understand how they work. One recent, and fairly successful, exploration was into triangular substitution solvers. In this blog post, I'm going to explain the …

Continue reading »

CMake IS a Build System

Sat 13 March 2021

One of the most common things you'll hear when learning CMake is that "CMake is not a build system". This is technically correct, depending on one's definition of a "build system". However, this statement alone is meaningless on a practical level as it doesn't communicate anything actionable regarding how to …

Continue reading »

Building a Dual Shared and Static Library with CMake

Sat 06 March 2021

When packaging software libraries, it is a common requirement to deploy both a static and a shared version. However, CMake library targets are always either one or the other. How do we make it easy for our …

Continue reading »