The ultimate wifi upgrade

I have been procrastinating for a very long time about whether or not to take the plunge and upgrade my office/home wifisetup. The goal of the upgrade is to have complete high speed wifi coverage throughout my house and seamless hand over between access points.


Today I bit the bullet and decided to buy a five pack of Ubiquiti UniFi AC Lite AP and one Ubiquiti TOUGHSwitch TS‑8‑PRO. I could have gone for the Pro or HD access points but for my use case this was overkill.

All Ubiquiti products seem to be the industry GOTO product and we use them at Canonical sprints where we’ve never had a problem. I also purchased 305m spool of cat6 cable and a Platinum Tools EZ-RJPRO Crimp Tool and connectors to make it easier to properly terminate the connections.

UniFi AC Lite AP
UniFi AC Lite AP

All the access points are (POE) Powered Over Ethernet so will not require power points in the ceiling.

This setup does require using Ubiquiti Unifi controller software but thankfully there is a docker image which sets this up and which I can run on my Freenas box.

All this means I should achieve my goal highspeed wifi throughout the house and seamless handover between access points. It will also hopefully mean that I no longer require any ethernet over powerline adapters.

I plan on taking a few pictures of the setup as it progresses as well as performing speed tests.. watch this space.

The ultimate wifi upgrade

Configuring Arduino IDE for use with Autonomo board and RN2483 Lora Shield

Much of the following set up is from the official Autonomo docs at but with a bit more detail and more screenshots.

  • Download the latest version of Arduino IDE (1.6.8 at time of writing) from
  • Extract archive and run the install script which will add an shortcut to the application to your main applications menu.
    Install Arduino IDE shortcuts
    Arduino IDE shortcut
  • If you are using Linux you will need to add yourself to the ‘dialout’ user group and logout and login for the change to take effect. This is so that you have permission to access the COM ports.
    Add user to dialout group
  • We then need to tell the Arduino IDE about our Sodaq Autonomo board. The Autonomo’s board profile is available through the Arduino Boards Manager. In order to install the board files you will need to first add the SODAQ board manager URL ( to File->Preferences->Additional Board Manager URLs:
    Arduino IDE preferences
    Adding Sodaq boards profile
  • Once this is done we need to download the board profile for the Autonomo using Arduino IDE’s board manager.
    Board manager menu entry
  • Search for ‘sodaq’ click install for the latest Sodaq SAMD boards.
    Sodaq boards
  • You will now see the Autonomo board listed
    Autonomo board now listed
  • Now we have the board installed we need to install the Sodaq specific libraries that we are likely to use. We can do this using the library manager:
    Library manager
  • Search for ‘sodaq’ in the library manager and install the libraries you are likely to use
    sodaq libraries

Your Autonomo board is now configured on Arduino IDE and you can continue development as you would with any Arduino board.

Configuring Arduino IDE for use with Autonomo board and RN2483 Lora Shield

Deploying Keys and Certs to a NodeJS app on AWS Opsworks

I have a nodejs app running on AWS deployed using AWS Opsworks. The app relies on an AWS IoT certificate and AWS IoT private key being present and I don’t want to add the key and certificate to my git repo.

The solution I ended with was to use the AWS Opsworks App environment variables to pass in the certificate and key as environment variables and read these from the nodejs app.

App  Environment Variables

Opsworks replaces all new line characters with spaces so in our app we have to reverse this:

var iotcert = process.env.IOTCERT;
var iotkey = process.env.IOTKEY;
iotcert = iotcert.split(" ").join("\n").replace("BEGIN\nCERTIFICATE", "BEGIN CERTIFICATE").replace("END\nCERTIFICATE", "END CERTIFICATE");
iotkey = iotkey.split(" ").join("\n").replace("BEGIN\nRSA\nPRIVATE\nKEY", "BEGIN RSA PRIVATE KEY").replace("END\nRSA\nPRIVATE\nKEY", "END RSA PRIVATE KEY");

…. Problem solved 🙂

I suppose it is a little less secure than the certificate and key being on the file system and with read only access to the nodejs process but it’s a lot more secure than the certificate and key being hosted on github.

Deploying Keys and Certs to a NodeJS app on AWS Opsworks

Python command history

Obviously iPython is the bee’s kness when it comes to Python shells but if you don’t have iPython installed then getting command history can be a pain. Not any more 🙂

import readline; print '\n'.join([str(readline.get_history_item(i)) for i in range(readline.get_current_history_length())])

This will print all python commands run during that session.

Also as a gist

If you have iPython installed, it’s as simple as

Python command history

Android must have apps 2015

After a 4+ year hiatus from blog posting. I’m back 🙂 As a first post back I list my ‘must have’ Android apps for 2015.

  1. Airdroid: For copying files (and a lot more) without a cable
  2. QuickPic – very good gallery app
  3. Here Maps – cool GPS that can be used offline
  4. BaconReader – for reddit
  5. File Commander – File browser
  6. MX Player – video player that plays everything
  7. Podcast Addict – for podcasts
  8. Smart AudioBook Player – for playing and managing audiobooks
  9. Impetus – countdown timer for gym
  10. Stopwatch & timer – very good stopwatch
  11. Smart Voice Recorder – neat audio recorder
  12. – for weather
  13. Nova Launcher – very fast launcher for Android
Android must have apps 2015