This skill is inspired by several things. First, as a child, I was given a personalized book with name in it. It was a hard cover book, and while I don't know where it ever went, I do remember the gift quite well and fondly. I'm sure it helped a lot to inspire my life-long love of reading.
Secondly, I've dreamed of getting into Artificial Intelligence for most of my adult life. Although my current employment allows me to write software, I was never able to get into a career that allowed me to pursue my childhood passion. This feels like a great way to get started on finally doing that.
Finally, my son and I often tell each other whimsical tales that we usually make up on the spot. This is a chance to perform a study of how a computer might do such a thing, and perhaps have fun in the process.
What it does
The skill tells stories. Computer generated stories. It does this through an evolving story generation algorithm that can learn over time.
How I built it
I built this skill using several AWS technologies -- notably Lambda, DynamoDB, and of course, the Alexa Skills Kit. The skill is written in Kotlin, and uses the Serverless Framework link
Challenges I ran into
Debugging functions in Lambda is tricky. Thankfully, I bring a few decades of agile software development experience to the table and utilized several tricks such as writing exhaustive unit tests, which has helped cut the testing effort down tremendously.
Additionally, this is my first direct experience with NoSQL, and while I've worked with MongoDB in the past, I've spent too much of my career working with relational database design and found it difficult to rationalize some of the data storage requirements.
Accomplishments that I'm proud of
Implementing several lambda functions and integrating completely on AWS was a milestone for me. I was able to quickly rampup on several AWS services -- CloudFormation, CloudWatch, Lambda, IAM, ASK, and DynamoDB.
What I learned
Defining a voice interaction model up front is pretty important. I had to refactor several times as I added additional functionality, and if I had spent more time in the beginning with storyboarding or some similar type of practice I probably could have saved some debugging and testing time.
What's next for Story Teller Alexa Skill
More, better stories! Next on the feature plate:
- Better story generation
- Story genre selection (fairy tale, sci-fi, etc)
- Asking for more about what the user might have liked or disliked about the story
- Story length selection (short stories, novellas, etc)
- Potentially writing a research paper and having it published.
Alexa Skill ID