My October Passion Project: Gameo
Hello everyone! Time sure flies fast and it's almost the end of October! For those who participated in Hacktoberfest, congratulations! I hope it went well and amazing.
As for me, though I initially wanted to participate as well, I found Facebook's 2020 Developer Circles Community Challenge to be interesting, so I decided to sign up for that instead.
Hence, I built a project with a friend throughout the month of October to submit it for the hackathon. The hackathon finally ended and so in this article, I'd like to share with you what I've built, challenges I've faced and how I overcome them.
Gameo is a game recommendation engine that helps anyone to discover and play games. Using a matrix factorization-based model built with PyTorch, Gameo recommends users games via collaborative filtering.
To use Gameo, simply create an account and add games you've played to your Library.
Then rate them from 1 to 10 so the model learns which types of games is more suited to your personal preferences.
And that's the gist of how Gameo works! It was a pretty fun and challenging project for me.
Challenges I've Faced
This is the first time I'm using PyTorch to implement a matrix factorization model and that alone makes this project quite a challenge to build.
Matrix factorization is a class of collaborative filtering algorithm.
Learn more about collaborative filtering in this article.
1. Machine Learning and PyTorch
It is an unfamiliar territory for me. I used to try working with Tensorflow for a bit but it was difficult to pick up for a beginner.
This time, I want to push myself a little more with PyTorch. I think the most difficult part is not how to integrate PyTorch into Gameo because its documentation has guides for that. The hardest part was actually learning about machine learning algorithms such as matrix factorization/collaborative filtering to make the recommendation engine work.
Fortunately, thanks to some perseverance, teamwork and YouTube videos, we managed to pull it off!
From this experience, I learned how recommendation systems work and how some businesses today such as Facebook and Amazon can use it to display personalized recommendations to their users.
2. Finding Datasets to Train
With machine learning, I would need a large dataset to work with, in order to split train-test the data and build an accurate model.
However, it is not easy to find data of users and games for this recommendation engine. I remember spending half a day on Kaggle and finally come across 2 datasets which had to be combined, cleaned and processed to get it ready for training.
What I learned? Kaggle is the best place to find datasets. Just need to search really thoroughly.
3. Designing the App
What are the ingredients that make up a recommendation engine? How do I make the app easy to use for users?
These are the questions I have to think about when building this project. After all, spending too much time on perfecting the model instead of building the app would be inefficient. So I tried to have a goal in mind in terms of how Gameo will use the trained model to predict what games each user will like based on their previous ratings.
With a little brainstorming, our team managed to build Gameo as a React app and finally, it was born!
The final requirement for this hackathon is actually to write a tutorial (1000-4000 words) on how the project is built using the PyTorch and React technologies. Our team decided to go all-out.
Instead of writing the tutorial as a plain README, we made a landing page documentation website for it using Docusaurus, and we loved it!
Also, the hackathon encourages the tutorial to be written in different languages so we wrote 2 versions: English and Bahasa Indonesia. My Indonesian has gotten rusty so translating was another challenge but it was fun to write in a language other than English so I enjoyed it very much!
What's Next for Gameo?
I believe there's still much to improve on the algorithm. I also want to allow more filtering and refined searches so users can exclude certain game genres they don't like or platforms they don't play on.
Overall, I am happy that this passion project went smoothly and ended well. Whether my team win this hackathon or not, the learnings from this experience were more valuable than any prize (although a prize would be nice :D).
Edit: We ended up winning the local prize! Yay!
Thanks for reading! If you'd like to check out Gameo, here are some links: