A Trojan Hacker's Day!

Inspiration

USC has TONs of interesting events almost everyday. A Trojan Hacker may be interested in many of them. However, different departments or schools post their events on their own website, like Viterbi does. It is frustrating to read the descriptions of so many events and try to fit the events into one's schedule.

We built a web app to solve this problem, making the life of a Trojan hacker easier.

What it does

The web app is called A Trojan Hacker's Day. It does two things.

First, it has a crawler to retrieve today's events information on several major USC departmental websites, as well as the main USC events calendar. The backend also cleans the data and sort them according to the time.

Then, the backend will generate a word cloud to highlight the keywords for today's events. Our Trojan hacker can input an unlimited long keywords list to find matches. Then an auto-refreshing bubble chart will be generated to show which event(s) may interest the hacker most. If there is a time conflict, the bubbles representing the events will have a same x coordinate. Finally, a table of sorted events will be generated and you have everything (location, time, link) ready.

The website is also mobile friendly.

How we built it

We use the R ecosystem tools to build the web app. The app is created by shiny and hosted on shinyapps.io. The crawler is implemented with the rvest package.

Challenges we ran into

The biggest challenge is how we compute the similarities of Trojan hacker's input and the event descriptions. We didn't find good trained word2vec model so now the app uses exact matching to do the job. However, we find a way by generating the word cloud for the hacker and allow as many keywords as the hacker wants.

Accomplishments that we're proud of

The app works pretty well. All desired functions work.

What we learned

We learned more about the crawler and how to choose the right way to visualize the data our users are interested in. And We learned to work in team seamlessly.

What's next for A Trojan Hacker's Day

  1. Implement a better algorithm to rank the events.
  2. Allow better parsing of the date information
  3. Add more interactivity to our UI

Built With

  • r
  • shiny
Share this project:

Updates