The Slack channel was looking kinda boring and the
/giffy's where getting annoying. Time for a classic dad joke to lighten the mood!
What it does
Add Slack Dad Joke as a Slack integration to enable the
/dadjoke slash command. This will grab a dad joke from Reddit's r/dadjokes.
How I built it
I build two apps in a Django project: one for the API and the other for the landing page. Django was used in order to host both the site and api in separate apps and to allow easy access to python libraries for building the recommendation system portion. When a user submits feedback, the user's preference of joke topic is saved, and they will receive a similar joke next time. If they dislike it, they will receive a joke that belongs to a different topic.
Challenges I ran into
- Getting enough joke data from Reddit.
Accomplishments that I'm proud of
- Creating a REST API in Django
- Integrating machine learning algorithms for the improving which jokes are sent (not just random)
What I learned
- How to use the Django ORM to interact with a relational database
- How to seed a database with data from an external API via task scheduling and multithreading
- How to apply a Linear Discriminant Analysis classifier to implement a basic recommendation system
What's next for Slack Dad Jokes
- Unit Tests
- Submission to the Slack App Directory