Robert Wettlaufer

View the Project on GitHub Robert-Wett

About Me: Resume // Email // LinkedIn

Projects / Repo Descriptions

These are some of the more complete, full stack, or recent projects


A basic implementation of a key/value database with write-ahead logging and transaction support that can replay transaction entries up until the moment of the program crash. Command set is based on redis commands, and concurrency support was ruled out from the get go as something that I wasn't going to be able to implement in a couple days.


Using the input from CMU's SPHINX Project, given a word return a list of rhyming words, annotated by the number of matching phonemes and their phonetic definition, sorted by the number of matching phonemes.


wGiven a filename or an array of filenames, this class will stream in each seed file and build an overall table from which it generates markov text output from.


write random things, thoughts, blogs, or whatever with the CLI app backed by firebase with an angular front-end, inspired by jrnl. Because there's no backend needed, you can host this on the github project page as I do here. One of the main objectives of this project is to create a rich experience without having to run any servers. All actions are first backed by a sqlite db, then persisted to a firebase store. Currently abandoned.

Email Tracker

I hurriedly built this in 5 days of free-time for an interview challenge, with really no prior knowledge of how email tracking was implemented (because honestly, unless you need to who cares?). It's a proof of concept email tracking server that stores Campaign's or unique sales events (Unique to the string level with this POC), like "Wikipedia's 50th donation begging" and maps them to individual CampaignEmail's which are sent to specific User's in the form of indivdual UserRequest's that we track. At the moment, we track blanket information about every request we subsequently get from users under the corresponding UserRequest object, and enforce basic security in that a specific user can only redeem a given campaign once. Shortcuts used due to time constraint: Every endpoint is a GET, file structure is non-existent as everything is in emailutils.js, and there's plenty of logic in routes.js.

Crypto Alert

Listen to a live feed of the latest Bitcoin, Litecoin, or Dogecoin prices and send an email alert if the value drops below a given point in USD.


This project listens to Twitter's public filter stream for defined emoticons. It keeps track of the number of occurences of each emoticon, and displays the most-used emoticon at the top. The bottom portion changes each time a different emoticon is detected, and shows the last 25 tweets that triggered it.


This simple web-app was built in a couple of days preceeding the heartbleed bug. You can see a subtle nod to the famous comic in the last cell of the comic here. There is some back-end API functionality that isn't documented or fully fleshed out.

Reddit Sentiment Analysis

As seen on blockspring

Grab a reddit user's latest comments on reddit, and run them against the popular TextBlob (NLTK-based) python library to get an overall "Sentiment" rating (postive or negative statements). The top 10 rated positive comments and their sentiment ranking, as well as the top 10 negative comments will be shown as well as the overall are you happy score.


Implements a FIFO queue that is optionally capacity bound. The queue also enforces type safety for all entries by designating the queue object class type in the constructor. ActionScript 3 does not intrinsically support templates/generics other than the Vector class but this convention serves the same purpose for this object.

What's Trending?

Unfortunately, this app was deprecated via Twitter's switch to API V1.1 which killed the API end-point needed for this to function.

The words in the title are the current top ten trending terms on twitter, for whatever location you choose in the drop-down (by default we are using U.S.A.). Underneath are the results we get when we cross-reference UrbanDictionary. The original idea was to try and make sense of some of the random people, places, terms, and things that trend on twitter throughout the day that might not exactly be in Merriam-Webster. The results can be funny, informative, random, useless (#hardtosplit), offensive, or a healthy mixture of them all. On the right-hand side, you'll see a table (not on mobile) that holds all the trends you've loaded in the session. You can click on "Location", or "Trend Name" to sort them descending/ascending alphabetically. Try loading different locations from the drop-down at the top and see what trends they share, and which ones are 'local'.

Daily Programmer

These are my solutions to various /r/dailyprogrammer challenges, in 5 different languages. This is mostly for algorithm/problem-solving practice, or to learn a new language. The languages used are:


Here are the projects that I did for the sole purpose (well, all my projects are for learning) of learning a specific technology or concept.

Tinder Keyword Swiper

Automate tinder swiping behavior in a smarter way by defining positive and negative keywords (and subsequent weights for each) and swiping left or right based on matches. This relies on using clarafai's image recognition API, and only the POC has been built as of now.


Working through graph-related CS problems in JavaScript. Algorithms are (somewhat loosely) transcribed from the Python code in Problem Solving with Algorithms and Data Structures.


As seen on blockspring.

Reads in a string and converts it into 2x3 delimited Braille characters (using standard English Braille). This was an experiment to learn more about using python in a more object-oriented, re-usable manner that one would expect from a command-line utility. This was based on my DailyProgrammer solution.


Web-App that allows users to upload images, and denote the exact time the file will be un-hosted and the file deleted.


Web-app that satirized the Manic Pixie Dream Girl trope using actual quotes from Tinder. This app was primarily done to get practice using MongoDB + Redis. The original (POC) version can be seen here.

String To Comment

Sublime Text 2 Plugin. StringToComment allows you to highlight a string and convert it into an 80-char delimited block comment in the language currently set in the view.