I’m a cyclist in snowy Kitchener, Ontario. I enjoy functional programming and mucking with data.


2003–2008. Bachelor of Software Engineering, University of Waterloo.


2014–2019. Scala/Clojure developer at Sortable. Member of the founding team of 5, helped the company grow to ~80 people, of which ~40 were technical staff. Ad tech integrations with all the major vendors. Big data ingestion, storage and query frameworks built on Hive, Spark and Presto.

2011–2014. Scala developer at Snapsort Inc. Consumer recommendation engine website. Web crawling at scale. Running infrastructure on AWS. Data modelling.

2008–2010. C#/C++ developer at Microsoft Corp. Contributed authentication frameworks to the Windows Identity Framework in .NET and Active Directory Federation Services 2.0.

2006–2008 (internships). C#/C++ developer at Microsoft Corp.

2005. VB.NET software consulting to school boards.

2003–2004 (internships). Java developer at Arius Software Corp.

Open Source

Parquet support in SQLite: I wrote a virtual table extension for SQLite that enables reading data from Parquet files. Read more in this blog post.

csv2parquet: A very thin wrapper around pyarrow to make it easy to convert CSV files to Parquet files.

Manu: A Java library, command-line tools and web server for manipulating and serving timeseries data.

Stanford NLP: I contributed a patch to the Stanford part of speech tagger that improved its tagging throughput by 50% for English languages, and 300-400% for non-English languages.


Patents. Software patents are a blight on the industry for the most part. The one I was granted is definitely part of the blight.