Some of the projects I worked on and am proud of

Newest Version API (Flask Website/REST API)

This free API provides the newest version number and download URL for popular software packages and libraries. The idea for this API was driven by the need to repeatedly update bash scripts that contain hardcoded references to a version number or download URL. Now, instead of hardcoding these values, they can be retrieved from this API and scripts never have to be updated when a new version is released. To do so, send a GET request with the name of a software package (using curl, httpie or similar tool), then parse the JSON response (using JQ or similar tool) which contains the newest version number of the product and a download URL for the newest version. Version information for each product is updated every 60 minutes.

For more info, see the live website:

Responsive Web Design is the front-end for the Newest Version API. The interface adapts to any screen size to provide access to the same content. Users can browse for products that are monitored by the API and register a user account that provides email alerts that can be configured for any product. Users can also perform standard user management tasks (e.g., change password, change username, change time zone, etc.). relies on Flask, PostgreSQL and SQLAlchemy for URL routing, data storage and ORM functionality, respectively. The front-end is powered by a combination of Flask-Bootstrap, jQuery, AngularJS and CSS. Beyond the bare-bones structure provided by Bootstrap, the HTML templates and CSS are completely original designs created from scratch. is (quite obviously) the website you are currently enjoying. If you haven’t noticed, it too has a responsive design that adjusts based on screen size. In contrast to, this is a static website generated with Hugo, based on the Mainroad theme. I have included it as a project because I have made substantial modifications to the base theme: custom layouts for my content types, new widgets, and custom CSS for nearly every element.

Vigorish (Python CLI Web Scraper)

Vigorish scrapes and stores MLB data sets, including detailed boxscores, pitchfx measurements and player biographical info. Data is scraped from and

This package is not ready for public consumption at this point, several features are incomplete and all mothods/modules are subject to change. However, the CLI help documentation gives a general idea of the desired v1.0 functionality and can be accessed as shown below:

$ vig --help
Usage: vig [OPTIONS] COMMAND [ARGS]...

  --help  Show this message and exit.

  scrape  Scrape MLB data from websites.
  setup   Populate database with initial Player, Team and Season data.
  status  Report progress of scraped mlb data sets.
$ vig scrape --help
Usage: vig scrape [OPTIONS]

  Scrape MLB data from websites.

  --data-set DATA-SET  Data set to scrape, must be a value from the following
                       bbref_games_for_date, bbref_boxscore,
                       bbref_player, brooks_games_for_date, brooks_pitch_log,
  --start DATE-STRING  Date to start scraping data, string can be in any
                       format that is recognized by dateutil.parser.
  --end DATE-STRING    Date to stop scraping data, string can be in any format
                       that is recognized by dateutil.parser.
  --help               Show this message and exit.

To track the progress of this package, visit the github repo:

Async File Server (C#/.NET Core)

Light-weight, cross-platform (NET Core 2.1) C# Asynchronous file server and text messaging platform. Utilizes custom extension methods which wrap asynchronous TCP socket method pairs (e.g., BeginProcess/EndProcess) within a single method which returns a Task object, providing the benefits of the Task Parallel Library (TPL) to socket programming.

For more info, visit the github repo: