face photo
Hi, I'm Greg.

Software developer. Mechanical engineer.

About

Summary

I love making sense of data, and I love building software to do so. As a mechanical engineer I quickly grew a reputation as "the database guy" because I wasn't afraid to learn new tools, build reports, and write scripts to automate them. This led me down a path of web development, machine learning, and open source contribution, while learning several languages along the way.

Languages, Frameworks, and Tools

Languages
Python
TypeScript
JavaScript
C++
VBA

Back End

Flask
SQL
SQLAlchemy

Front End

React
Bootstrap
jQuery

Machine Learning & Data Processing

Keras
Numpy
Pandas

Cloud

AWS Lambda

Data Visualization

Bokeh
Matplotlib

Embedded Systems

Arduino

Enterprise

SharePoint
SAP
Microsoft Access
Microsoft Excel

DevOps

Git
GitHub
Docker

Projects
sleep tracker demo

ML Baby Monitor Sleep Tracker

A machine learning web app to track our daughter's sleep routine.

github logo
Python
JavaScript
Keras
Pandas
Flask
Bokeh
Matplotlib
OpenCV
jQuery
Jinja2
Bootstrap
Google SDM API
SQLAlchemy

This is a complete machine learning project from data collection to production. I first connected to the API for our Google Nest camera and collected thousands of training images. I manually categorizeed the images as "baby in crib" or "baby not in crib".
I then constructed a neural network and trained it with this data. This was a long, interative process as I recognized various weaknesses in the neural networks (e.g. shortcuts by recognizing lighting patterns), and would then collect additional data and modify training methods to improve the model.

The project was then bundled into a web app to provide:

  • Database for recording baby presence every 10 minutes
  • Aggregation of data into "bedtimes"
  • Live video feed, with live inference from the latest model
  • Visualization of bedtimes for the week
  • Meta-project information
    • UI for saving data from the live feed
    • A page for each model containing its hyperparameter info and a visualization of its accuracy.
    • A view of all data with ability to correct its value
Since this app was for private consumption (and due to privacy concerns), this is not deployed. Please see additional demos in the repository.


pop it now demo

Pop It. Now.

Browser game for popping bubble wrap. Try it out.

github logo
TypeScript
React
Testing Library - React

This is a simple game built with React to pop bubbles as fast as you can. The timer starts as soon as you start popping, and the app keeps track of your best time.


cowlitz covid graph demo

Cowlitz County COVID Tracking

Bot for gathering COVID data and tweeting daily graphs.

github logo
Python
BeautifulSoup
Matplotlib
Twitter API

Early in the pandemic I grew frustrated with the lack of trended data available for Cowlitz County. So I wrote a script to scrape their website every day, normalize the data to account for reporting gaps, compute 7-day rolling averages, and tweet an updated graph of cases.
Official reporting is now improved, so this bot is no longer active.


memorial picture frame

Audible Picture Frame

Picture frame for playing a voicemail from a loved one.

github logo
Arduino
C++

My wife lost her grandmother unexpectedly, but was ecstatic to discover a voicemail from the previous year of her singing Happy Birthday.
To help that memory last, I integrated a touch sensor, speaker, Arduino Nano, and SD card reader into a picture frame.
When the photo is touched, the frame plays the voicemail.


IP-Locator

API to get information for your IP address. See more.

github logo
AWS Lambda
Python

This is a lightweight cloud-deployed API for capturing your public IP address and looking up the listed location. The API can serve a standalone HTML page for human consumption, or a JSON response for applications.

Open Source

Interactive Data Visualization in the browser, from Python

github logo
TypeScript
Python
Pytest

I am a member of the dev group for Bokeh. I contribute general bug fixes, add tests, triage issues, and help support the community. See my code contributions here.

In my free time I work on an integration of D3-force into Bokeh to provide force-directed layout of data.

Demo:

bokeh force demo