Work

Software engineer primarily working in C++, C & Python.

History

Staff/Senior Software Engineer at Commscope previously Arris & Pace (2012 - Present)

  • 2021 Design and development on a network management product. Lead developer on the monitoring and logging components for the product, using Fluent-bit, Logstash, Elasticsearch and Kibana for log collection; with monitoring using a combination of Prometheus and InfluxDB.
    Developer on the core backend services using Python micro-services deployed into a Kubernetes cluster. This system is using NoSQL databases such as Elasticsearch and ArangoDB. Communication to the devices is done via SNMP, NETCONF or SSH depending on the device type.
  • 2017 Lead developer for the design and development of a new version of STB software for 4K content security via DVB and DASH using a TEE (secure enclave) written in portable embedded C. Integration against the Broadcom SAGE SVP and a virtual Global Platforms TEE.
    Developer on the corresponding Linux server C++ services using DVB SimulCrypt messaging (EMMG/ECMG) and custom web-sockets protocols, backed by a PostgreSQL database.
    Designed and implemented features such as allowing the messaging to work over web-sockets and support for using content security for video delivery using MPEG-DASH.
  • 2014 Promoted to senior software engineer. Developer on STB security software, working on both the embedded C library, tooling and documentation plus the Linux server C++ software and PostgreSQL database.
  • 2012 Developer on STB security software, primarily integration tools, documentation and test streams for an embedded C library. Development of tools for generation of DVB test streams.

Software Engineer at Graticule (2009 - 2012)
Design, development, testing and deployment of desktop and web based geographic products (mapping, routing and geocoding). Windows desktop software using C# and C++/Qt. Web and Linux server software using C++, Python and a frontend in Qooxdoo Javascript framework.

Education

University of York (2005 - 2009)
MEng, Computer Systems & Software Engineering, 2.1

Screenshot of code

Primary Languages

  • C++ - Server & desktop
  • C - Embedded & server
  • Python - Web-backend & scripts

Databases

  • PostgreSQL with TimescaleDB & PostGIS
  • SQLite
  • InfluxDB
  • Elasticsearch
  • ArangoDB

Technologies

  • Linux services in C, C++ & Python.
  • Embedded software in C & C++.
  • Windows & Linux desktop applications in Qt & C++ (some experience with C#).
  • Kubernetes, Docker & Helm for deployment and orchestration of containers & micro-services.
  • MPEG-2 DVB Transport Streams & SimulCrypt
  • MPEG DASH & MPEG4 / ISO BMFF
  • Network applications using HTTP/REST/JSON, web-sockets, MQTT, ZeroMQ and POSIX/Berkley sockets.
  • System monitoring with Prometheus & Nagios. Log aggregation using Fluent-bit, Logstash, Elasticsearch & Kibana.

Projects

Some recent personal projects.

Screenshot of program

Dashcam Tools for Nextbase Cameras

Tools to merge video clips quickly maintaining the embedded GPS data and to extract the location data into standard formats.

Screenshot of website

Malham Webcam

A webcam and weather information website for Malham, a popular tourist village, in North Yorkshire, UK.

Interests

Scouting, electronics & making.

Scouting

After being in Scouts during my youth, I started helping with a local group. After completing the leader training and being assistant for some years, I've now for the last few years been the Scout Leader at the group.

Electronics

I enjoy making small electronic gadgets / IOT devices, such as WiFi connected weather stations, games for use at Scouts and other small devices. These are typically made using Arduino C++ with the ESP8266, Teensy or PIC micros with C.

Photography, Making & DIY

I also enjoy doing photography, woodwork and wood-turning projects, 3D printing and DIY.