RGB565 is used to represent colours in 16 bits, rather than the 24bit (RGB888) web pages use to specify colours. To make full use of the 16 bits, red and blue are encoded in 5 bits and green in 6 bits. This is due to the human eyes capacity to see more shades of green.

Setup WiFi on a Raspberry Pi 3 with Raspbian Jessie

Getting the WiFi to connect via the command line can be a real pain, especially with the numerous out-of-date guides and lack of feedback during the connection phase. The following guide covers some tips and tricks I have found.

LetsEncrypt SSL certificate on CentOS 7

So, it's been a year since I installed my (paid for) certificate and much has changed in web-land. Chief among them, on the SSL front, has been LetsEncrypt which offers free SSL certificates to anyone who requests them.

(215) 653-0106

SSL certificates are so cheap, there really isn't much excuse to not set one up, even on a small site like this. If you don't buy the security arguments, then Google giving a slight SEO boost should be enough of a reason on its own.

URL Diff

A tool (like diff) to show the differences between 2 URLs, in particular including the query string broken down into an object structure.

(604) 272-2170

Even when you are using on-disk indexes, Sphinx can require a surprising large amount of memory as it has to keep all the index files (except the .spd and .spp ones) in memory. If you have more than a couple of indexes it can be a hassle to calculate the RAM usage manually

(405) 909-2176

For the times when you just want those exception to be delivered to your inbox with as much information as possible.

Converting over some smaller apps to use monolog I found my favourite snippet for emailing the critical exceptions which bubble to the top of the app wasn't that easy to replicate.

Setting up a CentOS 7.0 webserver on EC2

This is my entire setup process from start to finish. Although there are lots of guides on setting up a webserver with the basic software, they don't often cover the more practical decisions like where web files should be stored and how they are updated. Hopefully this guide should be of some help, if only to show how I have chosen to go.


Having got it for an excuse to play with node.js it was disappointing to find the included Angstrom Distribution couldn't even update to anywhere near the newest node.js version and so many tutorials referred to libraries which couldn't be used or didn't exist for it. Queue an embarrassing long time passing with it sitting idle on my desk...

Originally I had wanted to install Fedora, and while there is now support included with v20 (and postings suggesting it is possible to install), BeagleBone themselves have swapped to Debian so I will not fight against the officially chosen OS.


Gearman is useful when you want to run PHP scripts asynchronously e.g. to build a batch processing cluster or farm out slow running tasks such as email sending which should not block the view being rendered. The GearmanManager addon is not essential but does make the worker code simpler and provides a framework for managing the scripts. Here is my build process:

OpenSeadragon SVG Overlays

OpenSeadragon: An open-source, web-based viewer for zoomable images, implemented in pure JavaScript, for desktop and mobile.
Raphaël: is a small JavaScript library that should simplify your work with vector graphics on the web.

After researching around, no one seemed to have posted a proper working OpenSeadragon/SVG overlay. Let's get these working together for some rich data overlay goodness:

VIPS dzsave build from source on CentOS 7.0

VIPS is a great image processing system capable of working with very large images. In particular it is one of the easiest ways to create deepzoom image pyramids through the use of the dzsave feature.

Since 7.40 it now requires libgsf to be available for dzsave support. Without further ado here is my install process to build VIPS from source on CentOS 7.0: