Java Program - Alarm deactivated
Java Program - Alarm activated and going off
Java Program - Alarm activated but not going off
iPhone App - Home Screen: Here you can set your alarm and view the current time. The alarm responds according to Chuck's tweets.
iPhone App - Alarm Screen: If there is no snow day or 90 minute delay, you will unfortunately be awakened by the alarm.
Imagine this: it’s an early morning and your alarm rings through your room. Following your routine, you get out of bed and start getting ready for a long day of school ahead of you. While eating breakfast you check Twitter and see a tweet from your superintendent Chuck telling you that school is cancelled because of the weather. You’re all dressed and ready to go and it turns out you could have gotten a few extra hours of sleep. You break down into tears as you feel the great weight of your brief existence and all that wasted time bear down upon you. The salt burns streaks down your face and through your paper-thin soul. With plsChuck, your waking up for no reason problems will disappear!
What it does
Our project makes sure to let you know whether you can sleep in or not. On snowy days, or days with inclement weather, our school superintendent, Chuck, usually tweets out whether we have a snow day or a 90-minute delay in the ungodly early hours of the morning. To prevent FRHSD students from the great indignity of long nighttimes spent checking Chuck’s Twitter feed with a nervous heart, our app utilizes the Twitter API to access Chuck’s tweets and parses them to determine if Chuck has come through and the app automatically turns off our alarms. If no such matches are found, then, unfortunately, we must all get up and go to school.
How we built it
We used Swift to build an iPhone app with front-end alarm functionality and Java to build an accessory application that has the full functionality. Both programs have a clock and alarm function, but the Java program includes the ability to turn off the alarm when tweets come through. The Java program accesses the Twitter API to check Chuck’s tweets every minute, and turns off the alarm if the most recent tweet discovered uses one of the strangely consistent phrases Chuck uses to announce changes in school schedules. It’s currently being tested with one of our own Twitter accounts, but can be easily redirected to Chuck’s Twitter
Challenges we ran into
While trying to create our iPhone app, we discovered Apple requires a prohibitively expensive $100 license to publish an app and test it on an iPhone, so we attempted to create the app solely with the iPhone emulator available. However, emulators do not allow access to APIs, which allowed us to access Twitter posts, so we found that it was impossible to fully create this app with the resources we had. Therefore, we created two applications, one iPhone app with alarm functionality that serves as a front end demonstration and a Java app with alarm and full Twitter reading functionality that serves as a back end demonstration. Another problem we encountered was Twitter’s strict limits on the frequency of requests and on the identity of the requesters to its API. This meant we had to limit the app to checking Twitter only once a minute. This would also mean we would have to have individual users of the app log in to Twitter beforehand, but as we only have one current user, we were able to forego this for now.
Accomplishments that we're proud of
The $100 Apple Developer Account was a major obstacle to our project, and thus, we were very proud when we were able to develop the components of the app separately, without spending the money to put them together. Some of the work we’re most proud is actually about are the features under the hood, including significant effort that prevented us from needing individual users to log on as well as another major effort to muddle through the very particular requirements of converting dates to strings and back in Swing.
What we learned
Some of the technical matters we encountered were entirely new to all or most team members and will likely prove of great aid in the future, including API calls and app programming in general, but part of what we were genuinely pleasantly surprised to learn across our time at this hackathon was the collaborative spirit of Hackathons made work so much more productive and enjoyable. Time management and cooperation amongst team members were both great aids, but the assistance and enthusiasm of everyone else were actually just as important. By divvying up parts, working as a team with the materials we had, and asking for help when we needed it, we were able to complete the project on time, successfully, and most importantly, enjoyably.
What's next for plsChuck
Without obtaining the license, we could relatively easily port the Java program over to an Android app and create an available version of this app for students to use. Unfortunately, we would probably not be able to raise the $100 needed to make an iPhone app available for students, but we’re planning to go around with a hat and ask for contributions to what could be a vital public service. Maybe Chuck himself would be partial to donations. We could also circumvent the limits around accessing Twitter by using a different API or creating a central website that checks Chuck’s feed once for all app users and then communicates the result to app users, instead of replicating that functionality across all app users. Additionally, we're hoping to build in a feature that distinguishes between 90 minute delay and a closing so the former will add 90 minutes to your alarm while the latter will simply shut off the alarm.