Professional Profile
About Me
I am a lifelong programmer who loves the work. I started as a preteen, went to University to do more programming, and finished an Hons Computer Science. I learned some good things about programming methodology and computability theory, but most of all, I got into systems programming and compiler design.
Being a ‘gigging’ programmer allowed me to travel. While enjoying living in many cities, I pursued the type of programming I enjoy. I am still a choosy specialist. I do –
– Compilers and other software tools, such as debuggers, linkers, and configuration systems. I have delivered many projects over 4 decades using languages including C, C++, CHILL, Lisp, Pascal, Modula 2 and Elixir.
– Embedded systems/real-time software. I have been the sole software engineer, designing and coding alarm and monitoring systems from the ground up in languages including Assembler, Pascal, and C.
– Network Stack Programming, TCP/IP. Akin to the embedded and software tools work, I have programmed software network stacks for protocols such as Session Initiation Protocol (SIP) in C, C++
– UNIX/Linux Administration scripting. For ~ 10 years in the 1990s, I worked for Banks and Telcos with UNIX/Linux systems in their mission-critical operations. I built the bespoke systems admin/automation scripting for computer operations, including batch, batch monitoring and control, event logging, and developing diagnosis tooling. I have expertise in sh/bash/ksh/zsh shell scripting, awk/gawk, and perl, among others.
– Mobile Applications. A recently completed project is Apple Mac OS X and Apple iPhone/iPad iOS using Swift and SwiftUI, with a server built in Elixir/Phoenix/OTP. It has taken many decades to steer me away from the ‘C’ language, but Swift has done it for me. Finally, modern languages are bringing the benefits.
I remain a choosy specialist, working mainly in systems software and software tools. I have come to love Elixir and Swift programming in particular. For example, I do not develop websites, accounting applications, SAP, or Microsoft systems and applications. I like to stick to my specialties and interests.
My current interests are AI pair programming, property-based software testing and software craftsmanship generally.
Education
University of Newcastle Upon Tyne, UK – BSc. Hons Computer Science
Licences and Certifications
Here is a small selection of certifications and licenses that I have received.
- Certificate IV in Training and Assessment – TAA40104 – Holmesglen – May 2006
- Safer -C: Developing software for high-integrity and critical systems – Oakwood Computing Associates – Sep 2004 Skills: Software Audits · MISRA C · Software Forensics
- DB2 UDB Advanced Admin for Experienced Relational DBAs – IBM IT Education Services – Sep 2003
Some Projects
- Arrangement Compiler written in Elixir with Phoenix Web Service – Jan 2012 – Present Skills: Compiler Construction · Elixir Language · Functional Programming · Open Telecom Platform (OTP) · Web Services API
- Library: Set Algebra C Functions in C Language – Apr 2012 An implementation of a set algebra of C’s strings. Initially written as a demonstration of unit test techniques, this library has proved useful in text-based scripting applications. Set algebra – setCardinal, setIsNotMember, setNormalise, setIsNotEqual, Skills: Unit Testing in C · C (Programming Language) · Software Architecture · C Library Development.
- Logfile Monitoring and Management – TailxfLogfile Monitoring and Management – TailxfJan 2012Jan 2012 perl script to ‘tail -f’ many (log) files simultaneously. It starts from the concept of monitoring a file using ‘tail -f’. It adds the additional functions: tailing many files at once, centralising to a single file, time stamping, skulking the files, matching on regular expressions and performing an associated action, etc. i.e. the sorts of things you want to do when monitoring files. There is much great tooling now that we can use, DataDog, Splunk and many more, which you are well advised to deploy in production environments. In contracts, this is a simple small tool that can be helpful with no deployment, or configuration, or licence costs. Skills: Operations Management · Perl
- Batch Management Framework – Jan 2011 A shell script library of functions to facilitate the management of background batch tasks in Unix/Linux systems. Skills: Operations Management · Korn Shell · Unix tasks · Bourne ShellSkills: Operations Management · Korn Shell · Unix tasks · Bourne Shell
- Session Initiation Protocol (SIP) Servers (Proxy & Redirection)Session Initiation Protocol (SIP) Servers (Proxy & Redirection) Jan 2011 A SIP server written as a perl prototype to enable fast changes of protocol and implementation to investigate design opportunities and use as a test tool in creating environments.A SIP server written as a perl prototype to enable fast changes of protocol and implementation to investigate design opportunities and use as a test tool in creating environments. Skills: VoIP protocols SIP · Internet Protocol Suite (TCP/IP) · Perl · Unix/LInux TCP/IP socket programming · Software ArchitectureSkills: VoIP protocols SIP · Internet Protocol Suite (TCP/IP) · Perl · Unix/LInux TCP/IP socket programming · Software Architecture
- GitHub – mattharg/Session-Initiation-Protocol–SIP–Proxy-Server-in-perl: Fast Prototyping Tool: A SIP proxy server for creating and testing SIP networks and working on mashups and developments to the server.
Formal Software Training
- Automation Testing with Selenium and Postman
- Compiler and Interpreter Design
- Rational Clear Case Administration
- Rational Rose
- Rational Software Architect
- Rational Test Real-Time
- Simulation Techniques Using Simula and Object Orientation
- Software Engineering Management
Skills
- COSMOS Blockchain Ecosystem
- Blockchain Concepts, Fundamental, Architecture and Security
- Network Infrastructure Management
- BSS/OSS
- Real-time Software Engineering
- Embedded Software Design & Development
- Property-based software testing
- Programming Language sub-sets
- Software Forensics
- Software Archeology
- Software Audits
- Git
- Keyboard Maestro Automation
- Internet Protocol Suite (TCP/IP) Standardisation, Architecture, Systems Management and Development
- VoIP protocols, SIP
- Unix/Linux TCP/IP socket programming
- Bourne Shell
- Korn Shell
- Unix tasks
- Operations Management
- Software Architecture
- C Library Development
- Unit Testing in C
- Compiler Construction
- Web Services API
- Open Telecom Platform (OTP)
- Compiler Validation Suites
- Pheonix Web Framework
- Safer C
- Root Cause Analysis (RCA) & Problem Solving
- Failure Mode and Effects Analysis (FMEA)
- Apple CloudKit
- Assemblers
- MISRA C
- Test-Driven Development
- Automation
- Erlang
- C++
- Go (Programming Language)
- Perl
- Python (Programming Language)
- Performance Engineering
- Research Skills
- Awk, Gawk, Nawk
- SwiftUI
- Swift (Programming Language)
- Functional Programming
- Elixir Language
- C (Programming Language)