Work Projects

Brightspace Data Sets

D2L, July 2017 - Present

Raw, user-level access to Brightspace data in CSV form, refreshed on a regular cadence. Enables clients to integrate into and identify trends unique to their institution's ecosystem.

OAuth 2.0

D2L, March 2016 - December 2017

Third-party integration via D2L's implementation of RFC 6749 - The OAuth 2.0 Authorization Framework.

Brightspace Data Platform

D2L, April 2014 - September 2019

Building D2L's next generation educational analytics platform. Event-driven, lambda-like data-processing architecture backed by multiple types of data stores. Data is exposed via a RESTful API layer.

Brightspace Insights

D2L, September 2011 - December 2011, May 2012 - April 2014

Educational analytics as a service. Traditional ETL process, extracting Brightspace data from a transactional database into a reporting warehouse. Data is exposed via a white-labelled third-party BI tool with pre-defined reports and ad-hoc support.

Other Projects


Use cron-like expressions to test if a datetime is in an allowed range.


A GitHub App that only notifies on a subset of actions.


A popular word guessing game using React and Redux.


A Netlify plugin that blocks deployment if it is outside of deployment hours.


Interface for going through the OAuth 2.0 authorization code grant flow. Written in Vue.js.


Tool for pretty-printing newline-delimited JSON using React and Redux.


An open-source Python library. I fell in love with C#'s LINQ / Enumerable a while back, and realized Python could use some love so that it can do something similar. I decided to write my own library, following the likes of C# LINQ / Java streams / Apache Spark's RDD transformations.


Occasional contributer to the Serverless Framework.


GUID generator, written in Vue.js. Generates up to 999 GUIDs at a time.