Creating an Alexa skill for tracking chores

My son loves talking to Amazon Echo, and now he can ask Alexa what his chores are.

This is still in the test phase, not in the Skills store yet. The roadmap I'm working on -

  • Adding/Tracking chores through a mobile app
  • Adding chores through Echo
  • Marking chores as done through Echo
  • Notifications to mobile app when chores marked done
  • Reminders when chores missed
  • Gamification - Stars & Achievements for completing chores, linked to a goal/reward
An Intro to Product Management

An Intro to Product Management

As a someone who is passionate about products that solve problems, I love to talk about the need for Product Management, especially for digital products and agile software development. This is a deck that I have created and use to introduce the concepts of Product Management to anyone who is interested. This also acts as a great jumping off point to go deeper into about making customers the core of product decisions, how to validate ideas, create value propositions, UX & CX.

Product Pricing - Is freemium right for you?

Product Pricing - Is freemium right for you?

Freemium is a pricing model wherein a product is offered in mostly two variants – free and premium.

The freemium pricing model is usually opted for by technology companies where in they are able to unbundle the product features and offer differential pricing policies.

Strength of the freemium model is that it offers a low barrier to entry for the customers and gives you the ability to scale up by attracting users to try the service/product. This helps that build a user base, a percentage of which will convert to the premium ‘paying’ tier.

It is customer friendly. Instead of customers getting time limited trials, they can continue using the product and can upgrade when they require more features.

Freemium can also be more effective that advertising spend. Advertising may get users to your but if the price is not right, they may not sign up. So instead, the same spend can be attributed to maintain free users on the product.

On the flipside, Freemium can be a failure too. It relies on getting free users converted to paid users, if that does not happen, or the conversion rate is lower that what the service can sustain, it may cause a company to spend more that they’re earning and eventually go out of business.

It also relies very heavily on a low cost base, e.g. if the cost of running a service is negligible regardless the number of users. E.g. 100 free users vs 10000 free users will not make the cost running the service 100x.

It can work well if the product has a high switching cost, e.g. moving your playlists from Spotify to Apple Music. It’s possible not but easy and that’s what keeps users there.

In the long run, freemium can be a successful pricing model if the product or service on offer has these attributes –

  • It has a low cost of running, replicating the product doesn’t mean replicating costs same fold.
  • The product has a very large potential market
  • An increasing number of users see value in upgrading to the paid model
  • Can monetise free users by collecting user insights or displaying advertisement.

This however holds true for digital products and services. A physical product cannot sustain a freemium model as the cost of production and giving the product away for free is prohibitive. Even with product samples, the business will have to limit the amount that a customer can get access to.

The Digital Standard

The Digital Standard

Finally, there's a digital privacy and security standard, a benchmark that most digital products should follow. It covers things like best build practices, what should a good password look like, encryption and known exploit resistance. This looks like a great reference for any product team to ensure that their product is secure and cares about their user's privacy.

The standard is being voluntarily created, and it's insane to think that this hasn't been put together earlier.

The Digital Standard

Integrate Sonos with Google Assistant through IFTTT

I've been playing around with ways to control my Sonos speakers with voice command for a while now, see here. I recently moved from an iPhone to a Google Pixel XL which brings with it the Google Assistant.

Google Assistant is integrated with IFTTT, so you can use the Maker service to call the node-sonos-http-api running within your network. Here's how.

Sonos API with IFTTT

Ok Google, launch toddler tunes in the kitchen

You will need

  • Google Assistant enabled device
  • Sonos device (any)
  • an always on computer capable of running node.js (RasPi, NAS, Mac/PC)
  • to be comfortable with terminal/command line


    1. Setup jishi's node-sonos-http-api on a computer on the same network as your Sonos. A RasPi is a great device for this or run this on your NAS through docker. (I have this running on a QNAP NAS).

    For this to work, computer must be always on and accessible over the web. To find out how to enable this, look for instructions here.

    When you're able to reach http://your-ip-address:5005/zones and get a response back, move to the next step.

  1. Create Favourites or Playlists in your Sonos app
  2. Log in (or sign up) to IFTTT

    • Click on My Applet > New Applet
    • Click on +this
    • Choose Google Assistant as the service
    • Choose Say a specific phrase as the trigger
    • Type in a phrase e.g. launch $ in the kitchen
    • Click on Create Trigger
    • Click on +that
    • Choose Maker as the action service
    • Choose Make a web request as the action
    • In the URL field, enter the sonos-api url as like so -http://your-ip-address:5005/kitchen/favorite/{{TextField}}
    • Choose method Get
    • Click Create Action
    • Click Finish
  3. Say "OK Google, launch classic rock in the kitchen", the favourite "classic rock" should start playing in the kitchen.
  4. You now have limited control of Sonos with Google Assistant.

The difference between this and the Echo integration, is that you can call favourite/playlist dynamically using the applet ingredient define by '$' above.

AThe URL format to follow is http://your-ip-address:5005/{room name}/favorite/{favorite name} or http://your-ip-address:5005/{room name}/playlist/{playlist name}

For other actions such as pause/play the URL format is http://your-ip-address:5005/{room name}/{action}


  • Classic rock in the lounge (http://your-ip-address:5005/lounge/favorite/classicrock)
  • Pink floyd in the bedroom (http://your-ip-address:5005/bedroom/playlist/pink floyd)
  • To pause, use a phrase like "living room stop" http://your-ip-address:5005/living room/pause

Checkout node-sonos-http-api for more examples.

How well does it work?

Same conditions apply, if you have a manageable number of devices and have created favourites and playists in the Sonos app, this gives you limited voice control. Similarly, you cannot group or switch rooms as long you have the right triggers created and remember the trigger phrases.

On the plus side, you can pass the favourites/playlists dynamically.