Show & Tell

These are projects that I'm working on currently or worked on in the past. Some of my code can be found publicly in it's entirety on bitbucket.

StackBounty

Highlights
  • Outsourced project that I helped architect and advised for
  • Allows any user to place bounties on stackexchange questions via paypal or CC
  • WIP! Unreleased!
Active 2017-Present
Built with django Python RQ docker

Skoolbot

Highlights
  • Winner of 2016 VentureBeat International Hackathon
  • Facebook and SMS chat bot that integrate with Google Classroom
  • Uses selenium to browser-scrape data unavailable in official oauth-enabled Google Classroom API
Active 2016-Present
Built with Flask docker Selenium Python RQ

HotelRoomAlerts

Highlights
  • Polls 1M hotels daily for availability on very modest hardware
  • New hotels and rooms are crawled for, and put into a distributed pipeline for processing
  • 3 supported platforms (web, android and iOS) use unified API
Active 2013-Present
Built with django elasticsearch Python RQ AngularJS asyncio Grafana nginx docker scrapy

Course Pickle

Highlights
  • Well received by students
  • Sold in 2014 (separately managed today)
Active 2013-2014
Built with django backbone.js jQuery Apache Solr Celery scrapy

Idderall

Highlights
  • Perfect 5-star rating on addons.mozilla.org while supported
  • Featured extensively on the front-page of addons.mozilla.org
Active 2011-2014
Built with django Firefox Add-On SDK dojo jQuery

AudioQuarium

Highlights
  • Low maintenance
  • Auto-generated content
Active 2011-2013
Built with django dojo scrapy

Course Pickle

During winter break 2013 I teamed up with a friend to create coursepickle.com. At Virginia Tech, there was effectively no way to be notified when a seat opened up in a class that was presently full. We solved this problem by creating a service where people could input course numbers and be notified via e-mail or SMS when an opening was found.

I created the scraper in Python that took all the class data from the Virginia Tech course catalog and timetable of classes and placed it into our own database. The scraper is capable of opening the course catalog asynchronously in a number of threads to speed up the process. With all the course information, we could run full-text searches to match courses on our Apache-Solr search server.

I also created the entire front-end. The front-end was built as a single web page application. I used the backbone.js router and html5 push-state to dynamically create views and build URLs without hitting our Django back-end. I modified twitter's bootstrap typeahead plugin to display course results in a neatly formatted table. We created a simple RESTful API for creating and managing orders that visitors could place.

All of our application parts combined use less than 512 MB of memory so we are able to host on the free tier of AWS (a micro EC2 instance and an RDS instance)

Idderall

“Idderall” (idderall.com) is a complex js Firefox add-on complete with a django backend. I built Idderall in my spare time for fun and to help those with internet addiction. At the time, there was no existing tools to block websites that weren't easily disable-able (there still might not be any today). There's over 7k lines of JavaScript alone – as such there are unit tests for the front and back-end to keep things humming.

Idderall went through a major refactoring with to upgrade from dojo 1.6 to dojo 1.8. The new dojo uses AMD modules among other changes, and requires major restructuring. The upgrade and refactoring also allowed syncing Idderall across multiple Firefox browsers. So users could have the same settings on their laptop and desktop, for example.

AudioQuarium

Audioquarium is a music discovery site. A Python script on the back-end scrapes RSS feeds from music blogs for mp3 media. When new media is found, the id3 tag info is extracted from it and the song is added to a database.

The front-page "incoming" shows media that has been found most recently. Users can play the music directly from the site, and continue to navigate while the music is playing. The website was built as a single-page web-app for this purpose.

Users can login via facebook and add songs to their favorites.