The Final Post

A Conclusion

Lior Hirschfeld

This week, the last of the term, served as a wrap up. I made some modifications to how the website presented data, which I will discuss in more detail later in the post. I feel like I have learned a lot over the course of the past three months, and I would like to offer a brief reflection on each component of this IP.


Although I expected it to be the most challenging part ...

Week 7

So Much Debugging

Lior Hirschfeld

Although I planned to spend my time this week working on setting up D3, I instead worked primarily on debugging jargonBot and repostBot. Beyond the copious amount of errors, there were a few things which greatly slowed down this process. 

One is the environment in which the bots run. Normally, when running into an error, I would run the script on a test designed to trigger that error. Unfortunately, I do not have control ...

Week 6

Finishing the Blog

Lior Hirschfeld

I spent this week upgrading the Django infrastructure I had developed last week into a fully functional blog. Instead of starting from scratch, I found a theme called “Future Imperfect,” which can be found here: However, after I copy-pasted the code from this theme into my Django template, there was still a significant amount of work to be done. The first thing I worked on was removing excess: I got ...

Week 5

Working with Django

Lior Hirschfeld

This week I spent my time divided between finalizing the machine learning versions of both the repost and jargon bots, as well as developing the online blog with Django. After some testing, I realized that both of the bots had a problem in that when I would attempt to “fit” (update) their linear regressions models with new data, it would overwrite all that they had previously learned. Of course, this is an effect I do ...

Week 4

Creating a Bot Class

Lior Hirschfeld

This week I spent the first half of my time developing machine learning functionality for repostBot. The first step in this process was to determine which variables might allow a model to predict whether a post is a repost. As reddit submissions can be of two types (link and text), I needed to consider each format differently. I decided on this:

Link posts will only be considered a repost of an older post if they ...

Week 3

Beginning RepostBot

Lior Hirschfeld

This week I spent my time developing repostBot. To understand the purpose of this bot requires some knowledge about Reddit. On Reddit, post upvotes and downvotes affect the total “karma,” of whoever originally made the post. Many users are interested in increasing the total karma associated with their account over time. Because of this, an issue is developed called “reposting.” After one user posts an interesting post, be it a piece of artwork ...

Week 2

The Evolution of JargonBot

Lior Hirschfeld

This week I upgraded jargonBot by taking its existing functionality and adding machine learning concepts to its decision making. Previously,  the way that jargonBot chose whether or not to define a word was very basic: If the character set was not among the 80,000 most commonly typed in English and it existed in the dictionary, then it would be defined. However, now jargonBot is equipped with the ability to learn. It uses a model ...

Week 1

An Introduction

Lior Hirschfeld

To write each of my bots in this IP, I have used a code library called “The Python Reddit API Wrapper” or PRAW for short. This allows me to directly control a Reddit account to browse through the site, and even create posts or comments. Although the functionality I’m looking for would technically be possible through webscraping (i.e. accessing and navigating through a website’s code), PRAW saves me an incredibly large amount of time ...