Ever get sick of watching the same five streamers every day? Tired of following the same games, but don't know what to watch instead? "Surprise me!" solves that problem for you! Inspired by an old Reddit thread, we developed a Chrome extension that picks a random stream we think you would like to watch.

What it does

We find streams from random, lesser-known streamers (who are currently streaming) and recommend them to our users. On Twitch's side, we target streamers who are beginning to develop their online platform, but need that extra little boost to make it to the top page for their respective games. We aimed specifically for streamers who have approximately 500 viewers because we think that represents a large number of streamers who are on the edge of making it big, but can't seem to find that extra kick of energy. On the user side, we targeted users who have an open mind and are ready to experiment with new streams. Seasoned Twitch veterans may be tired of watching the same game or the same streamer every day, no matter how many times they have that PogChamp! moment. With this extension, we keep our viewers involved with Twitch no matter their viewing preferences, and give smaller streamers the boost of confidence they need to make streaming a potential part-time job.

How we built it

(Lots of hard work and failures and revisions and using Google searches for the entire 24 hours.) We used HTML and CSS to create the front-end for our Chrome extension, and Javascript with JSON for back-end interactions with the Twitch API.

Challenges we ran into

The most frustrating problem was that everyone on the team had little or no experience with the languages we needed for our extension. What started as an ambitious idea quickly had to be scrapped down once we realized our own skill caps. We initially planned an elaborate user interface, where users can "vote" on streams they liked such that streamers with more "likes" would show up more frequently in suggestions. We also wanted to use data from trends such as "how many followers did this user have last week, compared to now?" or "is this streamer losing viewers over time?" Thankfully, we knew that over-estimating our abilities would be the beginning of a tragedy, so we all accepted that we would make a simpler extension (but we'd make it awesome!).

Accomplishments that we're proud of

Learning new languages in the span of 24 hours is no easy feat. For a team who had only used object-oriented programming languages, learning Javascript (and integrating it with the Twitch API and JSON) was one of our biggest challenges and proudest accomplishments. HTML/CSS were easier languages to master since one of our teammates had experience with it before, but we had little or no guidance for what we wanted to do with Javascript. From a few lost college students with a big dream, we are all proud of what we learned from this hackathon!

What we learned

Not only did we learn new programming languages, we also learned how to keep warm at 3am, get by with an inadequate amount of sleep, and stack cups like a pro from MLH themselves. But most importantly, we learned the importance of flexibility. Acknowledging our limits and adhering to them was an important part of our project. Had we decided with the more ambitious route, we may not even have something to show right now.

What's next for Surprise Me!

We hope to redesign the appearance of the extension and further develop the user interface so that the user has more autonomy over what he or she wants to watch. We intend to put in filters so that the user can choose which games they want to see, or which games they specifically do not want to see (after all, Five Nights at Freddy's may not be the best idea at 2am). We also want to allow users to have more control over the streamers they want to see; for example, the user might only want streamers who have between 20 and 500 viewers. Finally, we intend to put in two feedback options for our users: one from the users to us (the developers) and another to the streamers (Twitch).

*The "filter" menu is already available on the front-end, but we hope to develop it on the back-end in the future.

Share this project: