AlphabetPOP - The Why? Of It

I have a neurotypical preschooler who cannot read yet and an elementary-aged kid with auditory and visual processing challenges who needs to do some remedial speech therapy. I wanted to build a skill that bridged my children's different learning needs - something that could cover the pre-reading/auditory awareness skills my preschooler needs, in addition to removing some of the drudgery of speech pathology exercises for my older kid.

Did I end up doing that for this submission? No. I have a lot of features/code I didn't end up submitting to QA in the interest of entering the hackathon (because, why not kick off the year with some semblance of ambition?). Shop room floor cuttings will have to go for a round two submission to QA, likely under a different product name or listed as 'New and Improved'.

What it does

Short and sweet: It plays various versions of the alphabet song on demand. I realized I need to validate that Alexa owners in fact are willing to explore a sub-category in the skills companion app: Kids>Education before I over-engineer what should be a MVP.

How I built it

My main goal was establishing good workflow in the new year, understanding devOps best practices as it relates to Alexa and to get my head around the graphics sink-time for Echo Show.

Honestly, I hadn't touched JavaScript since I worked at a portal years and years ago, so first I had to learn how to code again. Then I read all the code available on the AWS Alexa Github repo and tried to think of various ways I could reconfigure existing code for the dialogue scripts I had written. I vaguely remembered some VUI concepts from way back when I ran a voice service in Canada in the early 2000s. So I inhaled Wired For Speech and Designing Voice User Interfaces: Principles of Conversational Experiences to come up to speed on what has happened since I tapped out. Then, I had to grok AWS devOps basics by taking some online courses from A Cloud Guru and Cloud Academy. Getting to the starting line probably took longer for me than it did for everyone else in the hackathon. By some miracle, I still remembered how to use Illustrator. When I ran into a technical challenge, I would procrastinate by doing image research or image editing to keep myself motivated. So for anyone reading with some distant recollection of newb/rusty developer reskilling sink time - here it is.

There is no secret sauce in this one. Just the Alexa Skills Kit SDK for Node.js, audio editing in Audacity, some SSML tags, various art assets assembled in Illustrator, a DynamoDB database, some JS/Node in a Lambda and assets hosted on S3.

Challenges I ran into

Other than continuous failure? (Eventually, things started to work!) There was that time I forgot I had set up the ASK CLI, edited text in the dev portal instead of skill.json, then lost it all on the next 'ask deploy'. (Version control. Still a thing.)

Accomplishments that I'm proud of

It's in QA! Personally, I'm really keen to take another crack at voice at a point in history when there is finally an install base larger than a few thousand people and an opportunity for monetization.

What I learned

I think the the largest takeaway is just establishing good workflow/task automation so the next skills are much easier to develop. Also, once you really start thinking about UI for a multi-modal skill, audio and graphics research is a huge time commitment. One that I spent too much time on instead of basic feature implementation. What I learned overall is failure isn't a big deal, my code will fail, but it doesn't matter if I keep working at it. And as it is the first hackathon I've entered, I should just take the small win where I can.

What's next

The first order concern is simply validating Alexa-enabled households are interested in using skills for children's education. So, yeah - next step - acquire customers. If that is the case, I have 125 really nice images for Echo Show and a bunch of code related to phoneme testing that I spent too much time on, so I should attempt to get that version of my code working and into QA.

I would also like to roll my own analytics, but for now, I'm just including Dashbot as a supplement to the regular skill analytics dashboard. A key next step is to figure how to apply the DynamoDB Streams/AWS Lambda/Kinesis Firehose/Athena tutorial to my skill as I want my feature development/prioritization to be data-driven. Also - unit testing. Definitely something I need to be better at, so I will look into the Bespoken unit testing offering. So foundation in place, I'll get back finalizing all the features that got cut in the interest of entering the hackathon.

End result: I walk out of here with some motivation for the new year.

Share this project:

Updates