So this is a quite personal blog post.

I have a stutter. It’s not too bad, it’s not always obvious, and I mostly don’t pay any attention to it these days. But is has had a significant impact on my life. I can’t always tell what is my choice, and what is due to my years of not wanting to end up in public speaking roles.

I wanted to recount some observations, comments, and experiences. This will be a rambling, heartfelt post.

During school, both primary and secondary, I dreaded public speaking. Even to a class of people I knew well. From finding out about an assignment requiring a presentation, to the sometimes obsessive preparation, to my sweaty palms, thumping heart, and shaking legs as I stood up to speak. It was not fun. Stumbling over every few words, occasionally pausing to take a deep breath, try to steady myself. Feeling like time was going so slowly. Looking from person to person in the audience, gauging their reactions to my torture. The relief I felt when I finally finished, and could hide away back into the audience. Telling myself it wasn’t so bad. So glad to be finished.

There were quite a few goes at speech therapy. Some of it helped a little. Much of it felt hopeless, like I was being shown something that was easy, and why couldn’t I get it? I remember being told a few times that I would grow out of it. It’s just a temporary thing. Well, unfortunately no. It’s still there, hanging out for when I’m nervous, scared, tired, angry. Whenever expressing myself is important.

I’m glad I can write about this now. I’m not looking for pity. This post is mostly for myself. And, maybe, to help other people who stutter.

I have some regular, usually annoying, experiences thanks to my stutter.

  • A common one is people thinking I’m scared or nervous or even drunk when I’m not. I just having to talk to someone I don’t know, or I’m tired and talking without stuttering is more effort than I can or want to expend.
  • Occasionally I’ll meet another person who stutters. I’ve probably only met a handful. A couple of times, we both thought the other person was making fun of our stutter. Then we realised. I don’t know how common this experience is.
  • While any of the 26 letters can trip me up, but some are more likely to hook me than others. S and T are usually the worst. Then there’s getting stuck on a sound that leaves me with my mouth open looking like a stunned fish.
  • There are some tricks I use to make things easier. I don’t do it as often now, but I used to regularly swap out words I knew I would get stuck on for words that might be a little easier. This could be either early on, before I started talking, or while writing a script. It might be just as I was about to say the word - a quick change, feeling like I was tricking my brain into continuing just that little bit smoother.
  • Then there are people’s names. No swapping those out for other words. There are some names that I just cannot say without stuttering at least a little. Justine, Kristen, Steven. This may be a small part of the reason I have to concentrate and pay attention to people’s names when I first meet them. I don’t know.
  • Smooth speech might be useful for some people, but I always felt silly doing it. No amount of “no one will notice” could remove the feeling that I was putting on an act, and if people found out, they’d be even more annoyed than if I just stuttered through.
  • Sometimes I used to economise what I wanted to say. I’d stop before I’d said everything I wanted. I’d let someone else talk over me and not try to cut back in. I still do this sometimes. It’s just easier to be quite than put in the effort it takes to speak.
  • People love to assume I need help to speak. Finishing my sentences or just cutting in to answer. Nine times out of ten, they guess incorrectly, or answer the wrong question. Which means that I have to start all over again.
  • Then there are the twitches or mouth shapes that go along with being stuck or involuntary repetitions. I am glad I cannot see my face at those times.
  • I hate hearing recordings of my voice. I sound so hesitate, worried, uncertain. I feel like the way my voice sounds often has no relation to how I feel.

And now some of the more intriguing and wonderful aspects of my stutter.

  • If I say the same thing as someone else, at the same time, I do not stutter. It’s a curiously intimate thing to do. Where the only time that would occur usually is by accident, doing it on purpose is an unusual experience. If there’s the context, I’ll sometimes mention this whenever a person calls “Jinx!” to someone else saying the same thing at the same time.
  • I don’t stutter when I sing. I can’t sing very well - it’s certainly not in tune - but it is wonderful. Almost effortless, a feeling of flow, unbroken waves, cruising. I really enjoy singing to music when I’m by myself. More than enjoying the music or lyrics. It’s fluency. Knowing that what I’m saying is what I intended to say.
  • Although I don’t ask for it, I do appreciate it when a friend or partner shuts down people poking fun at the way I speak.

Finally, I am so glad The King’s Speech exists. I don’t know if it’s a good movie or not, but it reflects feelings I’ve had about the way I sometime speak so damn well.

This review of the movie as it relates to stuttering is quite good:

The film portrays stammering with sympathy and accuracy (as expected given the writer David Seidler stammered) and will no doubt do much for stuttering awareness.

However the film’s strength is that the true nature of stuttering as a disability is obvious for all to see. Apart from the physical difficulty of speaking, stuttering was clearly impacting on George’s emotional health and on his relationships.

This film gives the stuttering community a wonderful opportunity to discuss and develop their public awareness message. In this way a disorder which until now has led sufferers to bear the brunt of ridicule and discrimination might be more sympathetically and more accurately regarded. “The King’s Speech” has the potential to join the classics of cinema by being emotionally engaging, historically interesting and socially relevant.

I’m also grateful to Megan Washington for being brave enough to put her stuttering on display through a TEDxSydney talk and Australian Story interview.

I cried through most of this talk the first time I watched it.

Reviving my PhD website Prototypes

As part of my phd I created two exploratory prototype websites. I recruited people to evaluate them and collected the data. The websites were then removed and not available for quite a while. Towards the end of my study in 2015, I wanted to revive the prototypes. They were a large part of my PhD work, it would have been a shame to not have them available.

They’re now hosted on my own server. There’s the Samford Sounds and Virtual Bird Walk Tour.

If you have any feedback or have questions, please get in touch!

Historical power outage information

I was interested in past electricity outages in Brisbane. As far as I know, there isn’t a dataset for this. So I thought I’d create one.

I made an open source website to capture and display outages per region and suburb. It also includes the electricity demand.

If there’s anything else you think could be done with this data, please let me know!

Interfaces for analysis of long duration audio recordings

I’m a PhD student at Queensland University of Technology. I’m approaching the end of my degree. My final seminar was in late July, and I’m revising my thesis before I submit it for external examination. My work was in the discipline of Human-Computer Interaction. My research looked into computer interface designs for enabling bird watchers to analyse long duration audio recordings from the natural terrestrial environment.

I did this because acoustic sensors are becoming more and more popular as a means of biodiversity monitoring. However, they produce large amounts of data that need to be processed. Automated processing is advancing rapidly, although raw recordings of the environment can be complex with overlapping and distant sounds. There is also the need for example sounds to train automated algorithms. Birdcalls are some of the target sounds, and dedicated bird watchers have a wealth of experience and knowledge that cannot be found anywhere else. Therefore, it would be beneficial to enable bird watchers to share their knowledge by analysing audio recordings.

Common interfaces for audio playback, metadata, and organisation are not suitable for long duration audio that needs to be analysed. This presents more than just technical implementation hurdles: the everyday interactions with sound for most people are around communication, ambient sound, or music.

The interface for the VLC media player is a good example:

VLC media player interface

VLC media player interface

VLC can play both audio and video. There are many other programs that can play multimedia. They all have very similar interfaces. Some differ in the situation they will be used, for example media players on smart devices need to be designed to be accessible in a pocket or attached to an arm. However, their purpose is to play music or for communication. Most songs are between 3 to 5 minutes in duration. Radio and communication via Skype or other voice call software often gives only the duration of the call from the beginning, or the point within the current program for radio.

Analysis of long duration audio recordings requires not only a playback interface that can deal with recordings up to a day in duration, but also provide some means of seeking within a recording, and a method of adding metadata to the recording. Any metadata or annotations need to remain attached to the recording. Current software simply is not appropriate for analysing long duration recordings. There is software for audio editing, such as Audacity, which provides tools for modifying and visualising audio. The visuals can be a waveform (a time-amplitude representation of sound) or a spectrogram (a time-frequency-amplitude representation of sound).

Here’s an audio file loaded in Audcity showing the spectrogram:

Audacity interface showing spectrogram

Audacity interface showing spectrogram

Audacity is an improvement, as the spectrogram visualisation and other tools make it easier to work with audio files. However, many files are more than 1 gigabyte in size, which is often more than Audacity can handle. This screenshot also shows only 16 seconds of audio. For a day long recording (86400 seconds), there are another 5400 16-second segments. The problem of how to associate metadata has still not been solved. There are software programs created specifically for analysis of environmental acoustic data, such as Song Scope and Raven. While these programs do allow for annotation and automated analysis, they are not suited for many long duration audio files and concentrate on automated analysis.

An interface that effectively enables birders to analyse long duration recordings needs a few things:

  • A visualisation, most likely a spectrogram, to provide visual context for the sound
  • A way to deal with the long duration (seeking over hours, days, or months rather than minutes)
  • A method for attaching information about the identity of the birds that made calls (as metadata or annotations)
  • Information about the date and time, location, surroundings, and device used to record

For my research, I created two prototype websites to investigate how bird watchers could analyse many long duration audio recordings. I looked at how bird watchers could navigate long duration recordings and attach metadata through annotations. This included information about the recordings, such as where and when they were recorded along with a photographs of the surrounding area. In a subsequent post I will go through the prototypes I created and how they were tested.

Exploring Digital Ocean and Dokku

I recently needed to host two websites: one using node.js and one a Ruby on Rails site. I do have an account with bluehost, although setting up recent node and Rails sites on bluehost is something I’ve attempted in the past, and it was rather difficult.

Instead, I gave heroku at go. It went quite well, I was particularly pleased at the deployment process. However, I could see that the prices could quickly build up, particularly as I needed at database and potentially a number of other add-ons. I had a look around for other options, and I found a list of cloud services for Rails, ranging from Platform as a Service (PaaS) to Infrastructure as a Service (IaaS).

I liked the look of the Digital Ocean (DO) droplet pricing ($10/month for a 30GB SSD with 1GB RAM). I then quickly found Dokku:

The smallest PaaS implementation you’ve ever seen

Docker powered mini-Heroku in around 200 lines of Bash

I thought I’d give it a go, and I’ve been quickly hooked. There are quite a few blog posts about setting up Dokku on Digital Ocean. Some of the ones I made use of are:

Here’s my take, from a new DO droplet to a running server with deployed applications.


In this tutorial


Indicates the command is to be run on the local machine, while


means the command is to be run on the droplet.


Let’s get going! Keep the Dokku documentation handy, you’ll most likely want to consult it at some point.

  1. Launch a DO droplet with Dokku and Ubuntu 14.04.
  2. I’d suggest making the droplet name match the domain name that will be used.
  3. Go to http://<droplet-ip>.
  4. Fill in public key with your personal public key.
  5. Set the domain name. This is recommended to be a subdomain. You don’t have to, however things will work much better if you do. An IP address makes it impossible to use sub-sub-domains. For example, I used
  6. Tick Use virtualhost naming for apps only if you set a domain name.
  7. Click Finish Setup

If you choose not to use the Dokku application image from Digital Ocean, don’t forget to add your public key to Dokku.

local$ cat ~/.ssh/ | ssh [sudouser]@[yourdomain].com "sudo sshcommand acl-add dokku [description]"


You’ll need to set some DNS records:

  • ‘A’ record named <subdomain> with droplet IP address (e.g. from).
  • ‘A’ record named *.<subdomain> with droplet IP address (e.g. *.from).

Set up droplet

Now we can set up the droplet. These steps are a condensed version of the Digital Ocean Ubuntu set up guide.

Create a non-root user

Using the root user for everything is really not a great idea.

local$ ssh root@<droplet-ip>
$ apt-get update
$ adduser <user name>

Make sure you set a strong password for the user, and don’t lose it! You’ll need it for dokku commands.

$ gpasswd -a <user name> sudo
$ su - <user name>
$ cd ~
$ mkdir .ssh
$ chmod 700 .ssh
$ vi .ssh/authorized_keys

Add your personal public key to the authorized_keys file.

$ chmod 600 .ssh/authorized_keys
$ exit

Disable password and root login by editing ssh config

It is better if root is not allowed to log in at all.

$ vi /etc/ssh/sshd_config

Disable password logins and root login by changing these lines:

PasswordAuthentication no
PermitRootLogin no

Restart the ssh service so the changes take effect

$ service ssh restart

Check that <user name> can log in before exiting the ssh session. Keep the root session open until you confirm that you can run sudo.

Start a new console session and log in as the new user:

local$ ssh <user name>@<droplet-ip or host name>
$ sudo apt-get update
$ sudo apt-get dist-upgrade

If that works, exit the root ssh session.

Configure firewall

Ensure ssh logins are allowed

$ sudo ufw allow ssh

Also allow ports 80 (http) and 443 (https) for web traffic

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

Check the exceptions

$ sudo ufw show added

Enable the firewall

$ sudo ufw enable

Configure Time

Set time zone by following the instructions to choose your timezone

$ sudo dpkg-reconfigure tzdata

Install NTP sync so the system clock stays at the correct time

$ sudo apt-get install ntp

Create a swapfile

There may not be one in the Ubuntu droplet, which I found odd.

$ sudo fallocate -l <RAM x 2>G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'

Set host name

If the droplet’s host name is the same as the domain name, there is nothing to do.

Otherwise, these tutorials might be helpful:


Now to deploy an application to dokku! For example:

local$ mkdir ~/projects
local$ cd  ~/projects
local$ git clone <git url>
local$ cd ./<application name>

You’ll need to set a new git remote.

local$ git remote -v
local$ git remote add dokku dokku@<subdomain>:<application name>
local$ git push dokku master

If the deploy was successful, have a look at the website at

http://<application name>.<subdomain>

Application setting

YOu might need to set some application settings, such a Rails secret_key_base or a database connection string. I chose to do this via environment variables. This is not my preferred method, but it was quick and simple. Set configuration vars like this:

$ dokku config:set power-outages secret_token=<long string of characters> secret_key_base=<long string of characters>

Add a database

Some applications need a database. I’m a fan of Postgres. Add the dokku postgresql plugin and create a database

$ sudo dokku plugin:install postgres
$ export POSTGRES_IMAGE="postgres"
$ dokku postgres:create <application name>-db
$ dokku postgres:link <application name>-db <application name>

Then set the databse connection string as a configuration setting:

$ dokku config:set DATABASE_URL="postgres://<db user>:<db pass>@<dokku ip>:<db port>/<db name>"

For a Rails application, you may need to run migrations:

$ dokku run <application name> bundle exec rake db:migrate


There we go, from creating a Digital Ocean droplet to deploying an application.