nathan cooper jones

eating data for breakfast since 2019

projects

Things I’ve built, mostly with data and machine learning, and a few just for fun. Find me on GitHub and LinkedIn, or read my resume (PDF).

Selected work

Collie, a cartoon border collie, wondering which of three beers to recommend

Collie

A deep learning recommendations library for Python. By the time I left ShopRunner, it powered the site’s product-to-product, member-to-product and mass-appeal recommendations.

My part: creator and primary contributor, from my internship through my second year as a data scientist. Built with teammates, especially Hanna Torrence (implicit metrics, partial-credit loss) and Nicole Carlson (faster data loading, the open-source review).

Four GAN-generated Bored Ape portraits in a two-by-two grid

These Bored Apes Do Not Exist

A GAN I trained from scratch to generate Bored Apes, just to spite Jimmy Fallon (and make crypto bros angry).

My part: all of it, from training the model to the write-up and a site full of apes that don’t exist.

Title slide of the talk Understanding and Playing Deal or No Deal Better Than a Human

Deal or No Deal Bot

A reinforcement learning agent that plays the TV game show Deal or No Deal better than a human. My first reinforcement learning project that actually worked.

My part: a solo side project (and an excuse to watch too much TV) that became a talk at OFFRootsTechapalooza 2020.

More projects

Shakespeare AI

My answer to the GPT-2 release frenzy. I collected and cleaned everything Shakespeare wrote, trained an LSTM as a baseline, then fine-tuned GPT-2 for comparison. The GPT-2 output was so good that I had to look up passages to make sure Shakespeare hadn’t actually written them. Props to OpenAI. Shakespeare AI on GitHub

Meezer

A ShopRunner hackweek project: my homemade take on Siamese networks, using hard negative mining via an Annoy index. Rough around the edges, but promising for unsupervised image clustering and classification. Meezer on GitHub

Script Scraper

A lightweight parser that splits film and TV scripts into characters and their lines, then generates baseline stats for analysis. It was inspired by research at the Geena Davis Institute, which ended up using it. No machine learning, just a neat foray into software engineering and repo management. Script Scraper on GitHub

2048 AI

My first try at getting a reinforcement learning agent to play a game I love. It didn’t go as smoothly as I’d hoped, but it taught me deep Q-learning and NEAT, and I got to build 2048 from scratch in Python, playable in the terminal. 2048 AI on GitHub

A Python-Kafka-BERT-Kafka-BigQuery-Trump Project

A final project for a Big Data Technologies grad school course, and an extremely over-engineered way to analyze the best tweets from the worst president this country has ever had. Type some text, a pre-trained RoBERTa model encodes it, and you get back the most similar Trump tweet. My first time with GCP and deep learning NLP. A stupid idea that was a lot of fun to work on. The repo on GitHub

Recycling Classifier

Another grad school project: a Flask API in front of a FastAI image classifier that says whether an item is recyclable, what kind of recyclable it is, and how to recycle it properly. I built the model and Noah Quanrud built the front end. We deployed it on EC2, and the whole class hit the endpoint during the demo. Recycling Classifier on GitHub

Did Someone Get Robbed at IIT Today?

Recent crimes on the Illinois Institute of Technology campus, pulled from the Chicago Data Portal‘s SODA API and mapped and charted so students could see where and when they happened. It beat the barebones IIT Alert emails, and it answered the most important question of our generation. It lived on as a subdomain of this site until the IIT Alert API broke and it started reporting no crime at all (very, very incorrect), so it’s retired now. The repo on GitHub

Managing Stress in the Workplace

A collaborative research study on unobtrusive monitoring and adaptive interventions for workplace stress. I collected, cleaned and analyzed physiological data measuring stress during office tasks like writing and presenting reports: visualizations of stress signals, sentiment analysis of participants’ responses, hypothesis tests and ANOVA, and mixed linear models of what drives changes in stress. The published paper used to be free to read on the lab’s site, but that link has since gone dead. Scripts and reports on GitHub and my research poster (PDF)

Code415E

My high school CS project. It’s awful in hindsight, but I can’t bring myself to remove it. I love it too much. Here’s the original description I wrote for it, unedited:

My ultimate pride and glory. This is a text-based, Zork-like game built in Java during my senior year of high school and slowly expanded upon and refined since then. This demonstrates my understanding of Object-oriented Programming and some real fun conditional statements that lead to what the New York times calls a riveting story full of multiple endings, secret paths, cheat codes, and characters that you instantly fall in love with. Okay fine, you caught me – they didn’t really say all of that; just most of it. If anything, this game is just a fun pastime for when you’re bored and hate GUIs. Comes as a.zip file including a platform-specific shell-script, Java installation instructions, and a JAR file armed with the actual code. You can download it here.

Writing and talks

Both talks were Covid-era conferences, held entirely on Zoom, strange internet connections and all.

Websites I built

In college, I built websites to help pay for tuition. If you’re looking for a web developer, I shouldn’t be the person you hire (I think I’m better as a data scientist), but this is the first thing I ever wrote code for, and I still build one now and then. The ones still running stay on the list.

Sadly, this list used to be longer, but many of these sites have since been taken down or changed. R.I.P. to those sites.