My father-in-law bought my mother-in-law an Echo Dot for Christmas. She listens to old time radio shows from Internet Archive at night and they were looking for a way to play her shows through the Dot. In digging around a little bit, I found Alexa development was pretty easy to start goofing around with and ended up writing Radio Fun Time, which provides a voice interface to the Old Time Radio Researchers’ public domain old time radio shows published on the Internet Archive. You can ask Radio Fun Time to find specific episodes, shows, genres, and even discover gems and oddities by playing random shows (my favorite). It’ll save your place so that you can come back every night for the next episode (super fond of Bold Venture right now!).
Because Radio Fun Time turned into sort of a big project, I took a small break from it and released Arcade Party first, which plays audio from Andy Hofle’s Arcade Ambience project hosted on the Internet Archive.
What I learned:
Archive.org is amazing, a real treasure trove and we should all support it (okay, I knew that already)!
Python wsgi, flask, and flask-ask made rapid prototyping and testing for Amazon Echo really easy.
No AudioPlayer support on the Firestick is lame, but it’s definitely cool that you can test non-AudioPlayer apps on your Firestick.
Redis is awesome and just seems to always work. Using RedisCache to save state gave me a lot more flexibility and speed.
SQLite is awesome, especially using fts5 for fuzzy search. I originally was using IA’s python module, which is awesome, but pulling everything into a database sped everything up and helped me get more accuracy in search and I didn’t have to add creds to my python script (no bueno).
A family member who uses your skill daily is cheaper than Pingdom and Statuscake, haha.
Most importantly, don’t go into Alexa development expecting to make a lot of money if you’re not doing a lot of advertising (I got a hoodie and a free Echo, so there’s that…but I’m still out-of-pocket for AWS costs). From what I’ve read, you need thousands of users to make anything and Amazon’s algorithm for payouts is a black box…not gonna make much with Radio Fun Time’s 10 DAU and Arcade Party’s 30 DAU.
However, it is pretty great for sharpening up your “full-stack” development skills (with the exception of a GUI). You’re goofing with web servers, tuning performance, minding the security house, writing and testing code, designing voice user interfaces that are intuitive and make sense…not to mention working around cleaning up the voice inputs Amazon sends you, which can be…challenging. Also, Amazon proxies everything through their servers – so you don’t get user IPs, which makes handling privacy a lot easier. And if you configure your app not to collect any user data, even better.
I do know that at some point I should move it all onto AWS Lambda instead of hosting myself (cheaper, too), but goofing with Zappa didn’t really work for me and the rapid-test-development you can do hosting yourself was a lot less complicated than using AWS Lambda, personally. Especially with the complicated code I’m using for Radio Fun Time. I did also try Dynamo to save session state, but had some random connection issues and slowness – likely due to my own inexperience, but Redis did exactly what I needed (saving session IDs, current track/title/file/etc. so that users can get back to where they left off even after a week or so) and did it fast.