Python software development

Initially developing small scripts to extract information from logs and traces and small home projects, Michael has now returned to full time software development using Python. This builds on a foundation of experience in software systems, architecture and continual innovation.

Application scale Python software development

Automation framework for IOT condition monitoring sensor

With a history of attempts to automate limited parts of the product, the unsuitability of the product for manual testing, and other challenges, this was an ambitious project.

The project has a number of significant steps:

  • Evaluation and selection of possible programming languages and tools.
  • Confirming that each of the many identified test interfaces could be controlled or monitored using Python. Interfaces included: NMEA(GPS), vibration waveform simulation, MQTT via mobile networks, NFC, CLI
  • Creation of a Mediator pattern based approach to the parallel interfaced for asychronous control of the interfaces
  • Production of example test scripts making use of the framework
  • Porting of the framework from Windows to a Raspberry Pi.
  • Operation of an Azure Devops Agent on a Raspberry Pi

WIFI performance and mobility in simulated RF environments

A number of attempts at creating automated tests for performance and mobility had been attempted by the client with limited success.

Starting from a simple outline in a proprietary test script language, the project expanded with large amounts of support code in Python, together with test scripts orders of magnitude larger than previous scripts.

Python code was written to: configure and monitor Cisco WIFI Access Points; drive programmable attenuators; calibrate and operate advanced WIFI test equipment.

Other Python software development

Test, analysis and support tools at IndigoVision

To mitigate a support issue a support engineer was sent to a customer site to change the web configutation of 100s of devices. Aware of the unfolding situation I explored the use of Selenium and Python producing a prototype script just in time to be asked if I could help. Within 2 working days I had a packaged executable sent to site. The next day the script was used to resolve the customer issue.

Many support cases and some more complex tests required the creation of Python scripts to analyse Wireshark traces and isolate issues in large log files, e.g. find 10 time discontinuities in a 1000000 line log file. Other longer term tests have used Python scripts in conjunction with Linux shell script to extract diagnostics on a periodic basis

I produced a tool in Java that simulated the presence of 7500 cameras on a CCTV network, responding to polls on 7500 IP addresses

parkrun results processing

Part of my role as a Run Director of Edinburgh parkrun is the processing of the event results and uploading them to the parkrun results system. This has provided an interesting envrionment for training and developemnet of my Python skills.

I have written scripts that:

  • provide a GUI for manual entry of results
  • retrieve data from scanners and timers
  • identify differences between main and backup timers
  • Determine queue lengths based on number of participants