Learning to code is difficult. There are numerous resources for an education in programming, but many of the traditional outlets (such as school) have not satisfied the demand this skill warrants in society today.
New technologies like Amazon Alexa enable us to have deeper, more natural experiences with technology. An intuitive conversational interface offers the unique ability to help kids learn to code more easily just by talking with them.
What it does
HTM Elementary contains a set of quick, short courses that help kids learn how to code. Introduce children to the most basic concepts in programming and let them level up to become a coding superstar.
Kids may run through a set of short question and answer sessions to score points, they might ask Alexa “what is HTML?”, or they may buy rewards that makes coding more fun and awesome with their points!
How I built it
HTM elementary makes use of several technologies and libraries. Foremost is Amazon Alexa and the AWS cloud. The skill is built in node JS from an Alexa template.
The web based counterpart is built in Ruby on Rails and hosted in heroku. They communicate via a simple API through Ajax.
Challenges I ran into
The complete process of concepting, designing, building, and deploying an Alexa skill is quite complex. I stayed within the AWS environment, deploying lambda code directly to AWS. I have documented my deployment flow that I used to successfully get an Alexa Skill available to test. This document also notes issues with the deployment flow: https://docs.google.com/document/d/1fyXBxmYx8obntynmgCB4oX3gVkcemTl7DRgozk4c_Ho/edit?usp=sharing
Amazon AWS offers unique capabilities simply because there is so much stuff. Adding Alexa to this mix offers a powerful blend of capabilities that, if unified in a developer experience, could provide a one of a kind experience in the cloud industry. I think if Amazon focuses on simplifying AWS and unifying the deployment experience, that would be truly something special.
Accomplishments that I'm proud of
I was not able to create Alexa skills before, but I think I’m pretty comfortable doing so at this point. I am looking forward to building out more capabilities and features in HTM Elementary.
What I learned
How to build Alexa Apps, and deploying node.js code to Lamba (lambda is really interesting). I think the ability to build apps on these platforms will be valuable moving forward.
What's next for htm Elementary
There are several more features in development, including features and courses. There are a handful of courses that would provide a more complete experience for the learning child. This also presents the opportunity for third-party developers to create their own “courses”; each course is simply an Alexa walkthrough and could be community-generated in the future.
HTM Elementary would benefit from more badges and exciting rewards for children, offering them a more engaging and fun experience. Also, better rewards could provide a more customized and personal experience for each kid who wants to learn to code.
I also would like to further connect Alexa and the web app to write code by talking to her. This could be considered a ‘sandbox’ where users may define the little HTML project they want to build and Alexa will fill in the blanks.