Projects

A few of my projects:

Worklytics – Worklytics is a data-driven Employee Experience solution.  We combine traditional “active listening” via surveys with real-time predictive analytics, to provide rich, continuous insight into employee experience. Using data from common SaaS productivity tools (Google Workspace, Office 365, GitHub, Asana, JIRA, Slack, etc), Worklytics provides ongoing prediction of employee satisfaction and leading indicators of employee outcomes.

terraform-aws-worklytics-export and terraform-gcp-worklytics-export are Terraform modules for exporting your Worklytics data to S3 and GCS, respectively. Both are available in the Terraform registry as worklytics-export/aws and worklytics-export/gcp.

Psoxy – a pseudonymizing proxy to sit between Worklytics and the API of a 3rd-party data source. Psoxy can replace/redact PII and other senstive data according to configurable rules, enabling your privacy and data minimization requirements to be achieved.

psoxy-example-aws and psoxy-example-gcp provide examples of how to provision and configure Psoxy instances via Terraform.

Past Work

Amazon S3 API binding for Google Apps Script – Google’s provided ScriptDB limits objects to 100KB. I needed more, so I wrote a (very simple) library to store things to S3 via the Amazon Web Services REST API.

Economic Hierarchical Q-Learning –  My senior thesis (pdf), advised by David C Parkes, applied economic approaches to the problem of hierarchical reinforcement learning (HRL).  The thesis won a Thomas T. Hoopes prize for outstanding undergraduate research.  We published a conference paper based on the work, entitled Economic Hierarchical Q-Learning, at AAAI’08.

Pipelines 2.0 for Google App Engine – still very preliminary, but vision is to provide Beam-like semantics for “adhoc” pipelines.  Distinct from Cloud Dataflow in that each pipeline is not its own distinct JAR with a static DAG.  Rather, the JAR execution bundle may execute a diverse set of pipelines, with DAGs that may be built dynamically at run-time. Each invocation of a pipeline from application code (a job) can use logically isolated persistent storage, to support multi-tenant use-cases.