Audio Books for the Vision Impaired

My Great Aunt has always been an avid reader of books. However, with the onset of Macular Degeneration, her sight has degraded to the point where she can no longer read. Once this occurred, I began searching for a way to continue reading the books she wanted without her sight.

A Flawed Solution

An immediate solution that came to mind was to get her audio versions of the books she wants to read. A family friend made me aware of a organisation known as Vision Australia that supplied small audio players which could be used to listen to audio books. These players made use of a 3G cellular connection to connect to a library of audio books where they can pick a book and listen to it on demand. This seemed like a brilliant idea, however the implementation turned out to be flawed.

Firstly, The Player…

The device itself appears to have been adapted from an old CD player of some kind and unfortunately the buttons had not been modified in any way. This in my opinion made it unnecessarily hard to operate. I won’t go into too much detail, however the basics are that myself, with a Bachelor degree in IT and perfect vision, took an amazing amount of time working out how to use it. I then had great difficulty showing my Great Aunt how to operate it, compounded by the fact that there were no clear markings on the buttons which she could feel.

Now, The Library

An additional problem stems from the amount of time they allow you to lease a book from the library for. Many of the audio books my Aunt was interested in listening to lasted for more that 20 hours. However, the leases on them were only available for one or two weeks, and in many cases a shorter time frame than that. Even listening for two hours a day didn’t allow her to complete many of the books. At the end of the lease period, the book was simply deleted, leaving her unable to finish them.

A Solution that Works

I’m not claiming that this solution is perfect or will work for everyone, however it does allow my Great Aunt to start and stop listing to a book independently. I created her account, which is an audio book platform owned by Amazon and has an extensive number of books available. I then installed the Audible app on an old iPad I had laying around. I also found a pair of headphones which have the play/pause button located on the wire going up to one of the ear pieces.

I purchase the book she wishes to listen to and using the app download it to her iPad and start it playing. She can now pause the book by running her hand up the headphone wire until she finds the button, and the same procedure can be used to play the book again. While this method does require me to manually download the books on her iPad, it only needs to be done every three to four weeks on average. For the rest of the time she is able to listen independently at the touch of a button.


JSON Web POST with Python

In an earlier post, it was outlined how to setup a Microsoft Flow workflow to generate a notification on a phone when a web request was made. This post will outline how to create such a web request using the popular scripting language Python.

Install Python

  • Ensure that Python (version 3) is installed on the system
  • During this process it is important to ensure that Python is added to the system PATH variable
    • This allows Python to be called from the command line
    • Having this ability will make it significantly easier to schedule this script to run when events occur, which is likely to be the role of the script.
  • After python is installed, we must install the “requests” library
    • This is the library that we will use to perform the actual request
    • Note: It is possible to perform the POST request without the “requests” library, however I believe it to be the cleanest method.
    • To install “requests” open a command line and enter “pip install requests”
      • If you get an error running this command, it is likely that Python was not added correctly to the system’s PATH variable

The Code Itself

  • First we need to import the “requests” library we just installed into the Python script
    • This is done with the following code:
    • import requests
  • Next we need to define the URL to which the request will be made
    • This can be found in your workflow you created previously and will be unique to each Flow
    • URL = "
  • Next we need to define the JSON that will be sent in the request to provide the parameters to our notification service
    • For my notification I only had two parameters, a source and a message
    • For the purpose of this example I have set the source parameter to be “Computer” and the message parameter to be “42”
    • Parameters = {"Source" : "Computer", "Message" : "42"}
  • Finally we perform the actual request from the server
    • For the request to execute, we need to provide it with the URL and parameters we defined earlier
    • Request =, json = Parameters)
  • After running the code you should now get a notification on your phone
  • By changing the values contained in the parameters section you can change the contents of the messages to whatever you wish.

New Hosting Provider

For over three years this blog was hosted on a shared server offered by BlueHost. However, six months ago I lost control of the admin account. From what I could gather an adversary had been able to socially engineer BlueHost support into changing the administrator email address to one under their control. Once this had been achieved, they were able to perform password recovery and gain access to the admin account.

Once they had access, they shutdown the server running my blog and launched a high power instance which worked up a considerable bill. After much pain I managed to re-gain access to the admin account and removed the powerful instance. Luckily, BlueHost refunded the cost of the powerful instance.

After this occurred I started looking for other methods of hosting my blog. Initially, I looked at hosting on Amazon Web Services. This method would have given me the best control over the blog as I could create a small Linux EC2 instance and then install WordPress to run my blog. However, this method would have also require me to maintain the site and server, a task I don’t believe I currently have time for.

The solution to this problem was brought to my attention by one of the security podcasts I often listen to “Security Now”. One of the sponsors of the show is which provide you with a WordPress site of your own, that is fully maintained by them. Additionally, their pricing was very reasonable and included the costs of registering the domain.

I created this blog on and will now have the fun of moving my domain registration and blog content over. Hopefully it won’t be too hard.

Additionally, the security of my blog appears to be sufficient. The site supports two factor authentication using either my phone or an authenticator app. I elected to use the authenticator app to eliminate the risk of the SMS message begin intercepted or the telecommunications provider being socially engineered and allowing a SIM swap. Another security benefit provided is that my blog is now running over HTTPS, resulting in my login information being encrypted when it is sent to the site. Hopefully, these measures will be enough to keep the site safe this time.