Back to Parent

Outcome


The Inspiration behind Jude

As a Graduate Student, personally I’ve faced challenges managing my assignment and meeting schedule. Each class has multiple assignments, each with a different team and each with a separate deadline. This leads to many permutations and combinations, giving rise to a management headache.

About Jude

Jude is a Slack bot which helps you manage your assignment schedule. Anyone can interact with it. You can DM Jude just like you would any other user.

You can ask Jude to do the following:

  1. Add an assignment for an existing course
  2. Add a new course which isn’t already listed
  3. Show upcoming events

Jude, the person

Jude is a beautiful young lady, efficient, smart but also quirky. She loves to help young students but can be a disciplinarian if you keep making mistakes. That being said she is always there to aid you in your tasks and is caring.

Workflow Diagram

Workflow diagram
Show Advanced Options
Screen shot 2016 12 15 at 11.56.22 pm
Show Advanced Options

Challenges faced

Considering the wide number of tools used (rake, postgres, google api client, slack api client, ruby, sinatra), the biggest challenge was obtaining documentation for each tool and learning how to make them work in harmony.

Some of the major issues:

  1. Google Calendar API: Due to lack of organized and readable documentation and changes made by google in the google-api-client gem v0.9, OAuth integration and accessing tokens was a challenge into which many hours were. sunk. Find a guide, made by me for easy implementation of Google OAuth here:
  2. Slack API: While Slack API’s documentation is very readable, the wide number of commands and interactions used in Jude let to a lot of troubleshooting.

Future Work

There are a number of functionalities that can be added to make this app appealing to wider audience. Some of the focus areas would be:

  1. Refresh tokens: Google APIs access token provide single time access for one hour. To keep accessing the API data, one must use refresh tokens the usage of which I have not been able to figure out.
  2. Multiple users: Currently the database and functionality is configured to handle only one user. Future work would involved building a scalable application that can be used all Carnegie Mellon students.
  3. Daily Updates: Jude will provide a morning update of the day’s schedule
  4. Work hours for an assignment: Different assignments require different amount of effort. So Jude will accept the number of hours required for an assignment as an input and accordingly decide when to set the reminder
  5. Completed assignments: Jude will be able to
  6. Filtering: Jude will be filter only your assignments from your entire google calendar to show them to you
  7. Meeting and lecture additions: Jude will be able to add lectures and group meetings to your calendar, while being able to remind you about the same

All the above features require a modification only in the Sinatra app, without need for any additional APIs.

References

  1. http://readysteadycode.com/howto-access-the-google-calendar-api-with-ruby
  2. https://developers.google.com/api-client-library/ruby/guide/aaa_oauth
  3. https://api.slack.com/events-api#event_type_structure
  4. https://api.slack.com/docs/message-buttons
  5. http://www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/CalendarV3/CalendarService
Drop files here or click to select

You can upload files of up to 20MB using this form.