This section lists a selection of projects in which I have played a significant role. For a full list of my Open Source projects, please see the Open Source section. If you would like to discuss how I could help you with similar projects, or would like to sponsor the development of Open Source equivalents of any of the proprietary projects listed here, use the contact form to get in touch.

ProjectSummaryRoleTechnologies
Open Source projects My "Open Source" section (https://www.ivarch.com/programs/) lists various Open Source packages which I have developed, both for myself and for the Open Source community in general. Source code is available for download. Lead Developer C, Perl, HTML::Mason (Perl), Bourne shell
 
Custom CI/CD system A system to automatically build packages (RPM, DEB) for each supported operating system as soon as changes are committed to the relevant Subversion repositories, sign the packages, and transfer them to a central location - and a management tool to select which versions of each package are placed into each of the separate package repositories for each test environment, operating system version, architecture, and endpoint type. All using standard OS components with minimal overhead. Designer, Lead Developer Bash, GNU Make, Apache HTTP Server, Perl, HTML::Mason (Perl)
 
Endpoint management system A system for managing thousands of endpoints on tills, retail office PCs, and servers, using an agent on each endpoint which polls a central server for instructions and can apply patches, run AV scans, and more. Designer, Lead Developer C, OpenSSL, Bash, Apache HTTP Server, Perl, HTML::Mason (Perl), MariaDB
 
Configuration compliance tool An extensible shell script based framework for detecting and correcting configuration anomalies in a way that can be managed at scale (for instance, through the endpoint management system), and whose policies are deployed as operating system packages. Designer, Lead Developer Bash
 
Root password randomiser A mechanism for enhancing security and accountability by automatically generating a new root password on every server several times per day, encrypting it with the GPG keys of all authorised administrators, and storing it centrally, along with a tool for administrators to retrieve the current password for any server seamlessly; all using standard OS components and with minimal overhead. Designer, Lead Developer Bash, GnuPG, Apache HTTP Server, Perl
 
Server-to-server transfer manager An agent-based transfer manager to allow data transfer channels to be set up between servers. Channels can be aware of active/passive clusters so that transfers only occur on active nodes. Data transfers can be triggered on a schedule, or by file activity. All transfer channels are encrypted and all transfers are logged, as well as producing metrics files so that errors can be easily flagged via a monitoring system such as Zabbix. Designer, Lead Developer C, OpenSSL, rsync, Apache HTTP Server, HTML::Mason (Perl), MariaDB
 
Batch framework A framework to allow batch jobs to be fully defined by a shell script placed in a directory, with supporting functions for logging, status reporting, and failure alerting built in. A special comment block at the top of the script defines the schedule along with parameters such as maximum run time, when to raise an alert, concurrency rules, and dependencies. Designer, Lead Developer Bash
 
POS cash drawer daemon A daemon providing an API between point-of-sale software and multiple types of till cash drawer. Designer, Lead Developer C