Software Development

Portfolio | Tutorials

A summary of some the projects I'm most proud of during my freelance career

Assist-CKD.org

Assist-CKD is a quality improvement project supported by The Health Foundation which is looking to identify patients with a high risk of Chronic Kidney Disease progression.

The application is designed to take data from external systems in the NHS and then allow lab technicians to review the data in a way which makes spotting if a person is likely to be at risk of Chronic Kidney Disease Easier.

The existing application had performance and maintenance problems as it was tightly coupled to SQL Server which meant each trust using the software had to purchase an expensive software license in order to take part in the trial. The application was re-written to allow a choice of relational database servers, from MySQL To SQLite.

The incorporation of SQLLite into the software also allowed individual trusts to be up and running as minimal involvement from IT departments were required. The software could be installed and a trust up and running in less than five minutes.

Written using electron.js the application is able to run on multiple environments ( windows, mac ) using only one codebase. The wealth of libraries written for node.js also meant the existing application could be re-written quickly, to a greater standard than the original quickly and inexpensively.

Features Include:

  • Fast import of CSV files containing millions of records
  • Support for multiple databases utilising the sequelize.js library
  • Database migrations and squirrel for easy updates to the application
  • Automated testing via Karma.js, Phantom.js, and Karma-Electron

AgriCamera.co.uk

AgriCamera.co.uk supplies CCTV to the agricultural industry. Due to the remote locations of the installation locations the software had to be designed to work with low bandwidth locations. H.264 was not a viable solution for AgriCamera due to the high latency involved which would render the cameras which ability to move based on user feedback in real-time useless.

AgriCamera runs a hardware on the customer's wifi which then transmits a compressed mjpeg stream to a centralised application built using Node.Js. Transportation of the images is achieved through the use of socket.io. The centralised engine allows a single mjpeg stream to be shared to multiple viewers without increasing the bandwidth usage at the client's site.

AgriCamera has a mobile application written using Ionic/PhoneGap allowed quick iteration of design and ideas across the most number of devices. The mobile application quickly became one of the most popular ways for clients to access their mobile applications. Particular attention had to be paid to the performance of the application in order to make sure that the quality of the stream remained high. The application also provided a "low bandwidth mode" for those customer's who's mobile signal was often poor.

Features Include:

  • Ability to choose multiple streams based on the speed of the customers connection
  • Full permissions based viewing of cameras
  • Motion Detection based recordings
  • Ability to "mask" sections of an image for greater motion accuracy
  • Automated scalability of service
  • Real-time logging and system diagnosis
  • Secure remote updates

This technology allows AgriCamera to deliver a unique value proposition to their clients.

The-Hpo.com

The HPO provide an online auditing tool to help their clients better understand their businesses. The software driving their auditing tool had become hard to maintain and wasn't able to cope with the amount of data that The HPO were now handling. The customer front end also lacked visual appeal and needed to become more flexible as customers began looking for more ways to understand their data.

The application required the design and implementation of a data warehouse. Using the techniques from the book the HPO to build a warehouse which would fit their needs, and incorporate their existing algorithms whilst performing much more effectively than the previous version of the code.

A reporting front end was creating using Yii which allowed customers to view their reports. The backend involves some non-trivial SQL queries, and careful consideration of what and how to index the data in the MySQL database was needed.

Integration with ordering data was achieved by writing a custom extract transform load application utilising the Apache Camel Library. This allowed The HPO to quickly, easily and robustly build an integration engine between the normalised OLTP database and the OLAP database used for the warehouse.

Features Include:

  • Full frontend application allowing customisation of templates and reporting
  • Extract Transform Load application
  • Design and architecture of a data warehouse
  • Full front end reporting system, utilising HighCharts and the Yii Php Framework