The idea for this skill is not mine, it’s actually my girlfriend’s.

She is studying for keeping her job in the local government of the city where we live. She has to pass a test, but the date for the test has been delayed several times in the last years, so now she needs an extra motivation to keep on studying.

When my brother-in-law gave us an Echo, she asked me if Alexa could help her learn the acts she needs to study. I said of course, and I started to look for a skill with that purpose. I found some of them, but they lacked two things: the ability of reading long parts of the act, such as chapters or titles, and tests.

So, listening to my inner mid-life crisis man, I decided that I should start learning to code.

First, I wanted Alexa to be able to read any part of the act. The user just had to say “Alexa, read chapter two” and it worked as expected. However, I quickly discovered why none of the other skills could read long parts: size limitations of Alexa response. I had to cut the text in smaller fragments, but I had to figure out how to advance from one fragment to the next one. Then, after hours and hours, I learnt the notions of session attributes and persistence. Alexa could remember what part she was reading and could pass to the next one with a command from the user, like “next”. I had overcome my first big and dreadful obstacle and I was successful! I felt powerful and was starting to love coding.

Then I decided to code the tests and thought that they could also be an enticing ISP. But, before creating useful questions and answers for a student, I had to learn the act myself. And I knew a great teacher for that subject! Asking my girlfriend questions about the act improved her knowledge of it at the same time, and we had a good time studying together. When I gathered a good amount of questions, it was time to code the tests themselves. I also wanted the user to be able to choose the number of questions for each test and the number of answers for each question. Thanks to helpful online tutorials, lots of examples in github and the amazing people of a Telegram group, I could build my tests piece by piece and make them work.

Only ISP was left. But I had a job, a family, and the initial sense of challenge had vanished. I lacked the urge to help my girlfriend because ISP was not useful for her. So, I quit. And then, lockdown came into our lives. Hours of work diminished. I could not visit my family. Everybody was looking for things to do for evading themselves from the harsh reality. It was time to recover my new hobby. Once again, people like German Viscuso or Javier Campos, who unselfishly share their knowledge with whoever needs it, were essential for my task. I also included a set of 10 questions as a free trial. I did it, it worked, and I considered my job done.

Three months later, I read about APL and Beyond Voice. I thought that it would be a nice addition to my skill if the user could also read the text of the act and touch the correct answer of a test on the screen of an Echo Show. Sadly, I was terrified of designing a visual interface. I think that was the fact I liked about coding for Alexa: you do not need a visual interface. Years of humiliating art classes in high school came back into my mind. But one year ago I could not code, so it meant a new challenge. I told my girlfriend that it was just an update to my skill, so it would take just a few days. I discovered why updating an app gets nasty sometimes and stopped complaining about developers breaking old features when implementing new ones. Every part of the code that I touched to include APL created errors somewhere else. I had to rewrite it almost entirely. A few days became three weeks, and I had to leave some ideas behind. It was the first time I had a deadline for my hobby, and sometimes it seemed too similar to a job. But there was a noticeable difference: it was fun!

Now I consider it done but not finished. I know I will keep improving it once and again, because there is always a new challenge to be found.

Built With

Share this project: