So, I could have done without losing two days to operating system grief. Friends don’t let friends update to the latest MacOS version. On the plus side, I now have a shiny new install of Mojave, so there’s that. First of all (and briefly) why invest time in velocity?
Because for the next 15 weeks I’m going to be constantly tinkering and experimenting with parts of Alexa skills in order to examine or demonstrate things. This week was an investment in understanding how to cut the time required to do that down significantly, in order to get more done later. I’m going to circle back around to doing a more formal post on tools for velocity once I’ve had a chance to tinker with a couple of the ones that were new to me. Here’s the things that come to mind to list:
- Jenkins + OS notifications (get your builds happening as a push-button experience, and get the OS to notify of progress. I’m still a fan of Growl for this on Mac)
- Lambda layers (more on this in a second - this was the winner for the week!)
- lambda_local for unit testing Lambda skills
- unittest for unit testing Python code
- ask simulate for testing a skill’s interaction model
- git flow for managing support & ongoing development for live skills
I’ve got a build already using lambda_local to unit-test Lambda code, which is nice, but building my first skill I completely overlooked the importance of developing test-first with unittest. For the skill I’m tinkering with currently, I’m starting with unittest, and it’s making all the difference. I’ve only just discovered ask simulate this week, and I need to dig into this more to get a feel for how exactly it simulates Lambda behaviour for a skill. But unit-testing the interaction model for a skill reliably, and in an automated fashion, is perfect. I’ve got a tree of potential interactions with the help system for my first skill that I’m super-keen to automate if possible, to avoid repetitive manual testing.
Lambda layers
This was the real winner this week. With some simple logging as part of a script-based deployment, deployment was verifiably cut down from around 46 seconds to 7. HUGE, HUGE difference. Smaller deployment ZIP file, wins all around. And this looks very keen for shared custom code between different skills. Particularly with a solid approach around versioning & aliases. Aliases look particularly powerful - being able to update the specific version of a Lambda layer used by Alexa without requiring a re-submission of the skill? Ace.
Podcast recommendations
Alexa Dev Chat Episode 27 - Building Fun & Engaging Voice Games With Alexa - this is a great listen, but worth it for the show notes alone. The episode mentions a magic number for choices presented for voice-based interaction - two. This is a little sobering, as it seems a more complicated RPG experience would provide a rich vocabulary of potential actions for a player. Maybe it’s in how those choices are presented?
Alexa Dev Chat Episode 25 - Chatting With Your Customers Daily Through Flash Briefings - an interesting possibility space. Being able to stand out in a much smaller crowd than the podcast space (and with a form factor designed for short regular updates to interested customers) feels like it might be a good potential marketing tool down the track. The podcast does raise the problem of discoverability, and relying on a third-party website doesn’t feel like a great solution.
This Week’s Reading
I’ve read through the first third of Game Feel, until the book moved into territory that’s irrelevant for the project. Summary Notes here
Alexa Regular Reading Resources
Got this list together just before the MacOS woes. Looking forward to this being the regular routine from next week on. Have plugged into the following resources:
- Reddit - have joined alexa, amazonecho & AmazonEchoDev
- Amazon Developer Alexa space
- StackOverflow - all posts tagged alexa
- Alexa Developers YouTube channel
- Echotalk forums
- Alexa Slack workspace
Look forward to updating on which of these resources have solid signal:noise ratios.
What’s In Store Next Week?
Next week is a deep dive into the Skill Builder tool. Tinkering ahoy! (will be interesting to see how many of the velocity tools uncovered will actually be useful in week two, or if it’s all development in custom browser tools)
Reading-wise, will likely sneak Creativity by Mihaly Csikszentmihalyi into the week. Parted ways with Game Feel, and this book feels like an important fundamental primer.
Also planning to tinker more with a Blackjack skill to test python-statemachine as a very straight-forward comparison to Skill Builder. Blackjack has a fairly simple state diagram of about 5 sequential main states, so it’s a good starting point.
Will be nice to not be fighting OS X every step of the way.