AzuleJoe: behind the scenes of the CommuniKate 20 demo

One of the parts of CommuniKate 20 that turned out to be very popular is  AzuleJoe, the demonstration software we use.

It’s time to talk a little bit about that live demo and how it works. This is one of those posts that’s only focused on the technical reader. It will have very little value to the non-coders among you.

AzuleJoe is entirely open-source and, like almost all the code presented on this site, it’s available to download from github.

When you view the live demo, what you are actually looking at is the CommuniKate 20 pageset running on the AzuleJoe software. The software that became AzuleJoe dates back to when I built a very small system for my little brother. When we started to prepare CommuniKate 20 for public release in 2014, the software was significantly overhauled into something that developed its own identity

The name ‘AzuleJoe’…

In case you are wondering,  ‘AzuleJoe’  is a Basque word meaning Tiles.  We were trying to find a word that sounds like it might be something to do with an AAC device and also includes “Joe” as the last three letters (“CommuniKate” rather painted me into a corner) so we were pretty happy with a short word that means Tiles.

Why is it separate?

Of course, we could have folded AzuleJoe in with CommuniKate and left it as a simple online demo. The reason we that we separated out the projects should be obvious to anyone browsing the repository: AzuleJoe can demonstrate any pageset, not just CommuniKate 20.   CommuniKate 20 is the first openly licensed pageset, we have no intention that it should be the only. 

If you’ve got a pageset that you would like to see running online easily, then the AzuleJoe code will help out, and indeed, Joe will probably help out if you ask.


Edit – April 2016 – large amounts of the design section is now completely out of date and misleading. It remains here for historical interest only.

Some of AzuleJoe’s design features might be a little unexpected on first viewing, but they are generally part of a reasoned view.  Let’s look at one in particular.

Full page images

You might expect that the images that AzuleJoe works on to look like this:

Screenshot 2015-02-13 12.10.12

Instead they look like this:


There are sensible reasons for this. First of all it was useful for the development of the pageset. Kate put CommuniKate together as a PowerPoint file. I then exported that into images and put those images directly into the software. Each image has an accompanying JavaScript file that tells the software what do do when each zone on the screen is pressed. Currently I generate these JavaScript files by hand, but the next version of AzuleJoe should be able to generate them automatically from the PowerPoint files.

Here’s the JavaScript file that goes with the image above.

function breakfast(){
    utterances[0][0]="yes ";
    utterances[1][0]=" ";
    utterances[2][0]=" ";

    utterances[4][1]="bran flakes";


    utterances[0][3]="boiled egg";
    utterances[1][3]="fried egg";
    utterances[2][3]="scrambled egg";
    utterances[4][3]="full English";





You can see how simple this is to build, one image for every page and one very simple file to go with each one.


Why is this useful?

We think that pageset design should be as simple as possible for users. If it’s PowerPoint it can be a communication book as quickly as it can be a working AAC demo. We want to be able to say to people “Here is a PowerPoint Template, now you can build a pageset concentrating on the language rather than the buggy interface some programmer threw together. When you are finished. We’ll expand it out for you.”


I like open source things, how can I get involved?

We love the idea of people helping out with the code. Because AzuleJoe is currently such a simple project, it’s there are a lot of easy things that people can do to help. So if you’d like to fork the repo to, for example:

  • provide scanning
  • use native TTS on android (or any other format)
  • retarget AzuleJoe to a different pageset
  • import from (hard) or export to (medium) the openboardformat
  • precompute utterances

Then we’d love to see what you can do.









Leave a Reply

Your email address will not be published. Required fields are marked *