Creating a skill for the Amazon Echo to allow access to updates and notifications regarding university events.
Quick update: I've been in touch with a few other people who have previously made skills and that has been a great way to sate my curiosity and give me actionable steps towards refining my own approach to this project. It has also been interesting to see the diverse range of experiences that different people have had. There was this one person that has gotten to the point where skills are what he does when he's bored and he can put one together in a matter of a focused hour. Which compared to my own slow slow progress is just so impressive and almost unbelievable. But I guess practice makes perfect and subsequent skills won't require the same slow research into jargon that first time forays require.
Because talking to others seemed to be such a positive motivational source of inspiration, I also reached out about the wider industry and have a meeting set up to talk about Artificial Intelligence with a professor. I've been reading up on her work in the past, and I'm just so excited to ask her so so many questions and just hear her take on where she thinks the world is going in terms of tech and also I want to float my project by her and hopefully get her approval or at the very least, some beneficial advice. I'm just trying to get my thoughts and questions sorted out beforehand so as to prevent myself from making an absolute fool of myself when talking to her.
I'm also really glad that I made the rough prototype that I did when I did. Its really useful to have a tangible representation of your ideas when talking to others - it helps lend credibility to your project. Even though its a very weak representation of my overall goal, it has come in handy recently.
The kickbox cards were right, it was so hard for me to just put down a rough prototype. I had so much that I wanted to include, it didn't seem fair or useful to make a prototype that was nowhere near what I had originally envisioned. But I can see the benefits now that I have something real and tangible.
For this first version, I used my own schedule instead of the school's, and then inputted that as an ics file into my program. I went really basic with the analysis (nowhere near the like category breakdown that I still want for the final version). The questions too are very very basic - the baselines, the givens.
But it works. The code does what I intended it to. And that was so so exciting to witness. This is nowhere near what I want, but its a definite step in the right direction. From here, I can expand the list of answerable questions. After that, I can work on categorization. Once all of that works, I can work on inputting different schedules from around campus. And then, the extreme reaches of my goals for this project include the refinement of those first three additions to the base version, and then getting everything to get more and more predictive over time as the user falls into patterns and habits. It all just gets better and better from here on out.
One popular way to build an Alexa skill is through the Alexa Skills Kit SDK for Node.js provided by Amazon via GitHub. It was built to help developers create skills more efficiently without getting caught up with un-needed complexities. And according to other users, it is generally held in high regard within the developer communities. The only problem is that I still constantly have to look up every third word. I don't know if I just lack the proper computing sciences background, but this roadblock is the most obnoxious one yet. I think my best approach going forward is to try and meet up with a person who has previously created a skill so that I can pick their brain to understand how they approached the new jargon and to see if i can pick up a few tips or tricks.
The developer kits and forums were a great place to start with my research. One evening after helping a friend with computer science I got really excited about coding and tried to dive straight into the actual coding part of the development of a skill without looking into the support networks. That was definitely the wrong move and just led to some tired frustration. Luckily, a friend pursuing a similar project texted me a link to one of the developer forums - excited because she had found an answer to her question. And from there I realized that there is actually a pretty sizable amount of documentation and already answered questions to lean on when I'm stuck and confused. I browsed around, skimmed a few introductory pages and immediately felt more grounded. It definitely isn't equivalent to Stack Overflow for Java but it is still a whole network of people who have either previously accomplished what I'm attempting or are currently doing the same. And that revelation was important and exciting for me. I set up a Drive folder to store links to pages I found interesting, questions I felt I might run into later on, and just all the random things that caught my eye. I also managed to return to the coding and set up the basic foundation for me to work off of. The next step is acquiring the calendar files, and then reading and analyzing the file - so as to break it up into manageable parts. The first question I want to be able to answer is simply what events are going on, followed by a variable amount of time (today, this weekend, this month).
My first foray into the world of Amazon Echo skills included a lot of just acclimating. I had talked to my mentor about his favorite parts about using the Echo, as well as some more casual conversations with friends who own and use the Echo. I also tested the waters by asking if they would use such a calendar skill if i built it and made it available for use. At this point I wasn't entirely sure the capabilities that I wanted to include or the logistics of how I could go about making it happen - the idea had stemmed mostly from liking how the Echo made things that I don't usually bother with, easier to do (like checking the weather before deciding on an outfit). I maintain a pretty haphazard schedule - its either in bullet points scratched on whatever paper I can find or on the lock screen on my phone if its an urgent event. Nothing is every cohesive or orderly, not for lack of trying. My phone does a good job of taking my own google calendar for school, events that my friends invite me to, work events, and a family calendar in a manageable manner. But often times I'll only hear about school events after the fact when I see the social media documentation. And adding the school calendar to my own seemed too overwhelming, I don't want to hear about all events just the ones I would actually enjoy. It seems like a very niche dilemma, but it happens to be a solvable one. Running off of my frustration and my recent enjoyment in getting news and weather updates in the morning from Alexa, I decided to code a skill to enable the Echo to do what I want. From the feedback I got, a few things I'm going to keep in mind going forward:
I have downloaded a few new random skills that sounded interesting, so I'm going to play around with those and then do a bit of reading into what exactly the developer kits will let me/ help me do. That seems like a good next step.