Alexa is the voice-controlled digital assistant from Amazon. It lives in custom hardware, like the 'Echo Dot', but also as software on phones. As a piece of technology I was not (surprisigly) an early adopted, but I was sufficiently interested to see how far it could go, and so wrote a few skills (the Alexa terminology for 'app')

My first planned project was an adventure game. For this, I reasoned that I would need to fix-up a lot of text sentances to be grammatically correct. It's better to say "1 point" than "1 points", for example. Or "you have an axe" instead of "you have a axe". With many years in the gaming industry I have probably seen all the bad examples of this, when people construct text programmatically with no regard for the rules, nor the style, of written language. So, I wrote a "Grammar as a Service" API to help others in the same boat.

It was released, had many people lauding its usefulness, but achieved no paying customers :( Even Amazon, who stood to gain more realistic sounding skills, ignored me, offering only opportunities to work for free with their partners!

I still use it for my own work, but by the time I was ready to start working again on the game, something similar had been done, so I shelved it.

Instead, I continued to work on more traditional quiz and fact based skills, whilst designing my second "voice first" game.

This page gives a brief overview of the skills I've released so far...

These include Grammar as a Service - Maker Bot - My Council - Bro Code - James Merlin - PiMania - Insult Me

Grammar as a Service

This was the online service I built that will automatically edit text into grammatically correct sentences. This includes text which is written to a screen, or spoken via SSML.

As I mentioned above, this was a fine idea and received a lot of positive feedback - but only from people wanting me to work on it for free. With no sight of funding I stopped actively working on it, but the page will remain active until/unless the costs spiral.

Grammar as a Service - Main page

Maker bot

When I think of hands-free interfaces, I usually think of personal itches that need scratching. At this time I thought of the maker movement, and the problem some people have reading the colour codes on resistors, or remembering which IC is a 7401. Since both hands are usually occupied soldering components, a voice interface seems perfect for these type of questions.

Maker bot -A bot to help makers determine the type of resistor they have by converting the colour code to a value, and vice-versa.

There is a lot of interesting logic in the skill to handle the myriad ways in which the colour code might be spoken, and interpreted. Given the range of difference responses, this is all written in JS.

Understanding the IC numbers, however, is a simpler affair using a DynamoDB table.

Enable 'Maker helper' here

My Council

This skill was partly inspired by the local (Cambridge) Alexa meetup. Their original idea was to launch a competition that involved writing a skill to determine which day the various bins went out. Naturally, I went a step beyond this by calling it "My Council", with the intent of providing access to the data beyond Cambridge, and report on more local interest data than just bins.

In return, I won an echo dot!

For the voice input, I thought of every way of asking the (banal) question "when do the bins go out?" and then replaced every word with every other possibility. For example, instead of 'green bin' people might say 'recycling', 'recycle bin', or simply 'green.' These were generated as if they were a regular expression, and written directly in the JSON.

The generated output took a little more time, with much time spent on thinking "how could this text be misinterpreted", and then fixing it, so it had a single meaning. Innocuous phrases like "next Wednesday" could mean the up and coming Wednesday, or the Wednesday in the subsequent week. Knowing that bins are never collected on Sunday, meant I could use that as a natural 'break', and so use phrases like "next week on Tuesday."

The considerations made by the software encompass a mere 50 lines of JavaScript, but support:

  • Specific cases for 'Today' and 'Tomorrow'
  • There is a custom call to action for 'Tomorrow' telling you "go and do it now", because the answer of "today" is usually too late
  • If the date is abnormal (e.g. because of Christmas) then we start with this information, because it carries more weight
  • If the next collection is abnormal, we end with this information, along with a specific date as an aide-memoire
  • Use whatever bin name the user gives us. Internally, a blue bin is identical to a recycling bin. But, if the user were to say "blue bin", then that is the text that will spoken back at them.

My Council - This is a bot to find out about rubbish and recycle collections in the UK. You can ask about blue, black, and green bins to find when the next collection day will be.

Bro Code

Created as a proof of concept for a larger (as yet, unrealised) project. Taken from the TV series, "How I Met Your Mother", this humour-based skill behaves like Barney, with Alexa delivering some of his more famous lines.

Despite its simplicity, this took over 2 months to get through the store. Each time Amazon claimed there were sexual references such as, and I quote, "kissing." Naturally no such thing is featured in the skill, but that didn't stop it from being blocked, and my support query emails being ghosted. Ultimately, I just kept resubmitting it until one of their algorithms misfired and let it through!

As a consequence, the follow-up project never materialised, because no one is going to invest in an Alexa skill (and therefore Alexa) if Amazon are likely to block it for factually inaccurate reasons.

Enable 'Bro Code' here

James Merlin

As a magician is it quite rare for me to reveal my secrets. However, every once in a while I invent a magic trick that the community think is so amazing that I have to share it. With them. For Money.

Consequently, when I showed the Alexa Trick to my fellow magi they were amazed at how a piece of technology was able to read their minds! So I took a day off from work, and caught a train down to Kent to film a 30 minute video explaining the ins and outs of this rather nice little effect. Of course, it didn't take 30 minutes to film... that was the better part of 3 hours! But the tricked worked every time, and the reactions were brilliant.

I'm not sure if I'll release (m)any other technological-based tricks, but I'm happy I did at least one. I can now go back to publishing the odd card trick in magazines, and relative obscurity, happy knowing I've made my slight dent in the magical community!

Enable 'James Merlin' here


"PiMania" was a cult text adventure game from the early 1980's. I have converted the code and design into a voice-only game for Amazon Alexa.

In doing so, I realised that text-based games need different rules and conventions when the words are read out loud, compared to when they're printed on a screen. You can't skim read, for example. Futhermore, the player needs to build the entire game world in their head, and maintain that knowledge throughout the game. Memory is exercised as the objects they are carrying, the exits of previous locations, and so on need to be remembered. This necessitates a simpler game mechanic, such that it ultimately leads to the case where the game itself revolves around how you visualise the world in your head.

Strangely, having the game exist mostly within the player's mind, introduces more technical complexity to game - not less! One such example is when an object like 'cuddly toy' is introduced. The player internalises this. So they might think of a teddy bear, for example. But when they come to say 'drop the cuddly toy' they, instead, say 'drop the bear' because that's what they visualised and there was no screen to prompt them otherwise. So the game needs to cater for this, and any other misspoken term, because every game reference exists solely in the past.

To learn more about the development process with audio-only games my talk on this subject was recorded at AdventureX, in London, in 2019 and has been made available to non-attendees for free at:

PiMania for Alexa: A Retro Remake - aka Alexa game development - by Steven Goodwin

Note, however, that there are spoilers in the talk so you might want to play the game first.

If not, you might like to know some of the expectations the game is able to subvert! After all, people believe Alexa to be a simple voice assistant (which it is.) They also believe that text adventures based in the 1980s are simple (they weren't!) So we can interupt the voice with a (fake) ring tone, introduce small patches of music, or ask the player to speak louder. (Speaking louder does nothing to the game, but helps wrong-foot the player in line with the surreal game world.)

Developers interested in the voice-only space would also do well to read about my 'Grammar as a Service' technique above.

Gamers who want to know what other games I've created in the last 20 years of my career, you can read about them on Steven Goodwin's games page.

Enable 'Pi Mania' here

Insult Me

A simple, and admitedly, unoriginal skill which throws insults at the user.

For this skill I created two lists of words which could be joined in any combination, to create something amusingly offensive. (Despite using no curse words.) The same code features in PiMania, but I decided to release it in its own right. I also added the ability to use Alexa's alternate voices, so you could be insulted by a French woman. If that's your thing...

Enable 'Insult Me' here


Grammar as a Service - Main page
Maker bot -A bot to help makers determine the type of resistor they have by converting the colour code to a value, and vice-versa.
My Council - This is a bot to find out about rubbish and recycle collections in the UK. You can ask about blue, black, and green bins to find when the next collection day will be.
Bro Code - Taken from the TV series, "How I Met Your Mother", this humour-based skill behaves like Barney.
James Merlin - The Alexa Trick
Insult Me