The theme was life hacks, and one of my personal life hacks for not spending money on things I don’t need or really want is to think about how much money I could have later if I invest it instead. There are caveats to investing, but this trick has stopped me from buying things I would have regretted later. Exponential growth is amazing when it works in your favor. Small amounts of money can grow to unintuitively large amounts, if given enough time. Humans don’t naturally grasp the power of exponential growth, so I always do a quick mental calculation.
I turned this trick into an Alexa skill called Splurge Stopper (the source code is on GitHub). You ask it why you shouldn’t spend a certain amount of money, and it responds with how much money you might have in the future if you invest it instead.
You: Hey Alexa, ask Splurge Stopper why I shouldn’t spend 80 dollars on fancy socks.
Alexa: Because if you invest it instead, you might have about 143 dollars in 10 years, 257 dollars in 20 years, 459 dollars in 30 years, or 823 dollars in 40 years.
It assumes an inflation-adjusted, annualized return rate of 6 percent. The historical rate for the S&P 500 is between 6 and 7 percent. Because the rate is adjusted for inflation, the amounts reflect current day purchasing power.
This was my first time working with Alexa or any voice control platform, so I learned the basic concepts as I read the Alexa Skills Kit documentation.
Parsing the money amount was the hardest part because as of now, there is no built-in slot type for money, which was really surprising. I found an open issue to add a money type. As a workaround for now, I followed this Stack Overflow answer and used two slots: one for dollars and one for cents. I had to use many more utterances to account for various combinations of dollars and cents.
I read about Speech Synthesis Markup
the first time. It allows you to control how text is converted into artificial
speech, so you can make it sound more natural. For example, you can surround a
certain phrase with emphasis tags (e.g.
the voice will stress the phrase. I didn’t end up using SSML, but it seems like
it’d be very useful for a more involved skill.