Add me on LinkedIn and GitHub. Check out my websites.

Texas COVID-19 Hospital Resource Usage (GitHub)

Visualization of Texas Department of State Health Services data for regional hospital resource availability across the state. Highlights the impact COVID-19 hospitalizations are having on hospital bed and ICU bed usage. The raw data is extracted with Python using pandas. The website is built with D3.js and deployed and hosted using GitHub Pages.

COVID-19 Case Map (GitHub)

Zoomable choropleth map of confirmed COVID-19 cases in the United States built with D3.js. Data sourced from the COVID Tracking Project and USAFacts and regularly updated using Python + pandas. The website is deployed and hosted using GitHub Pages.

Reddit r/science Dashboard

Monitors the r/science community for all new submissions and tracks performance over the following 24 hours. Uses PRAW to grab various metrics and stores the results in a MySQL database. Charts are generated with Google Charts via server-side JSON exports and displayed on a website using Javascript + HTML.

Scholar Plotr

Scrapes Google Scholar search results to generate annual publication frequency charts for a specific query. Uses a combination of Javascript and Google Apps Script to overcome Google’s anti-scraping protection. Dear Google, please please please implement an API for Google Scholar.

Note: This tool is frequently nonfunctional thanks to Google rate-limiting and blocking my server.

Scholar Plotr Screenshot

Bands I’ve Seen Live

Lists every band I’ve seen perform live in concert. Uses the LastFM API to grab a photograph of the artist and displays in a simple grid generated using the CSS flex property.

LastFM Listening History

Uses the LastFM API and Python to scrape my weekly, yearly, and overall most listened-to artists, albums, and tracks. Loads and displays entries asynchronously using jQuery and PHP.

LastFM First Listen

Input a LastFM username and an artist to get the first time the user ever scrobbled the artist and the name of the corresponding song. Implemented completely in PHP.

Note: This website no longer works since LastFM deprecated the user.getArtistTracks API endpoint.

The Last Swifting

Input a LastFM username to see the last time the user listened to a Taylor Swift song (if ever). Results are asynchronously loaded using jQuery and PHP.

Fitbit History

Uses the Fitbit API and Python to scrape my daily step count and sleep estimate to generate a dashboard-style website depicting a variety of statistics about my activity. Data is visualized using Google Charts.

Trakt Viewing History

Uses the Trakt and TMDb APIs and Python to scrape my recently-viewed TV shows and movies and displays a list featuring episode stills and movie posters.

Alabama Amendments Tweetbot


Uses the Twitter API and Python to post a daily tweet for each of the over 900 amendments to the 1901 Alabama Constitution.

Screenshot of @BamaAmendments Twitter account

Twitter Analytics Dashboard

Deprecated in November 2015

Used the Twitter API + Python to reconstruct and maintain a clone of the downloadable Twitter archive. This collection of JSON files was parsed to extract a variety of metrics including monthly/hourly/weekly activity, user interaction frequency, tweet length distribution, and word frequency. The results of this analysis were presented on a dashboard-style website powered by of HTML, Javascript, and Google Charts.

Dogecoin Address Analysis (Deprecated in September 2015)

Loaded transaction data from Dogechain to generate a timeline and histogram of an individual Dogecoin address’ balance over time. Powered by PHP and visualized with Google Charts.

100 Billion Dogecoin Countdown (Deprecated in June 2015)

Estimated the time remaining until the 100 billionth Dogecoin was mined based on information from the SoChain API. Displayed as a Javascript countdown timer.

Screenshot of 100 Billion Dogecoin Countdown Website

Dogecoin Tweetbot

@100BillionDoge (Deprecated in June 2015)

Used the Twitter API and Python to tweet hourly updates about the remaining time until the each Dogecoin block reward halving and the mining of the 100 billionth Dogecoin.

Dogecoin Halving Countdown (Deprecated in February 2015)

Estimated the time remaining until the next Dogecoin block reward halving based on information from the Dogechain API. Displayed as a Javascript countdown timer.

Screenshot of Dogecoin Halving Website

Dogecoin Block Discovery (Deprecated in December 2014)

Used the Dogechain API and Python to scrape block timing information. Visualized the timeline and histogram of the Dogecoin block discovery times since inception using Google Charts.

Destiny Countdown

Deprecated in September 2014

Javascript countdown to the release of Bungie’s new game Destiny.

Real-Time Location Tracker

Deprecated in 2013

Grabbed location information from a now-defunct Android location tracking app and displayed path on a dynamically updated Google Map along with current speed and total travel time and distance. Rendered obsolete by Google’s Share My Location and Apple’s Find My Friends features.