Computing
Summary
Having worked in engineering design since graduation, I understand the difficulty in creating an efficient workflow when important information in spread across multiple software products, and across multiple teams. There is plenty of manual data entry and repetitive configuration required in traditional systems, which is slow, demoralising and error prone. And the amount of information generated for construction projects is only growing, therefore the industry needs to take a smarter, more holistic and proactive approach to its information technology to reach its potential.
I am proficient with the following programming languages, shells and packages:
- Julia
- Python
- Quarto
- Typst
- Powershell
- AutoLISP (including extensions such as Visual LISP)
- Visual Basic for Applications (VBA)
- Javascript
Below is an outline of some of the tools and software projects I have worked on during my engineering career.
Freelance Work
- Standard section generation for residential retaining wall product, using Quarto and Julia to generate calculation sheets and Python to generate section drawings for 36 unique cases.
- Custom wall stability calculations and sensitivity studies to explore ways to reduce imported fill use on MSE walls
- Excel VBA tool to generate a bill of quantities from a sketch elevation for a well-known precast retaining wall block brand
Automation
- Excel VBA macro to extract key analysis results from the output reports to a table that can be copied directly into the design report
- AutoIt script to batch-run analysis files and save the outputs
- Email autosave. This was written first in VBA to run in the Outlook client and then rewritten to Python to allow it to be run unsupervised on a server. Parses the job reference and flags to indicate the purpose of the message, and saves it to the appropriate location.
- AutoLISP functions
- Wrote PTEXPORT, which allows copying geometry from AutoCAD to an analysis program directly via the clipboard.
- Improved Guiles Darling’s scripts with additional features and fixes.
- Wrote the Elevfill function to populate segmental units on a elevation view
- Wrote the Elev2Plan function to place segmental units in 3D space using unit locations on the elevation view and the wall line in plan.

Analysis
In my early career I primarily relied on creating a toolset of Excel spreadsheets and user-defined functions using VBA. However I want to highlight the benefits from Quarto and Typst, which have made it much easier to generate high quality output reports quickly, leading to the successful development of custom tools to address unique challenges in the following projects:
Remediation of RC basement wall in Cavan using Soil Nails
Estimating the stress relief on the wall due to reinforcing the backfill with soil nails was impossible with the available software, therefore I wrote the analysis software in Python, using Quarto to build it into the design report. This included evaluation of the earth pressures, mobilised soil nail resistances and evaluation of the axial and shear forces and bending moments in the wall stem and base. The report included figures generated from the analysis data, including a diagram of the wall showing the intersection of the soil nails with the critical failure wedge and graphs for the internal forces and moments.
Durapost Kingpost Walls for Persimmon Homes
Geoman were approached by Persimmon Homes to develop design sections for a new retaining wall product. This incorporated no fines concrete backfill with a kingpost retaining wall design, and therefore could not be analysed in the existing software without ignoring the benefit of the concrete wedge. The standard sections also required a minimum of 64 scenarios to be evaluated, which would have been extremely inefficient in commercial software, hand calculation or in Excel.
Using Python with Quarto, I optimised the post depth and concrete backfill for each section for all 64 scenarios. Calculations were based on CIRIA C760 augmented with the additional resistance from the concrete. As I was using Python, it was relatively straightforward make the sections more efficient by iteratively searching to find the centre of rotation, rather than assuming it a priori.
Using Quarto allowed me to present the results as a static webpage, as well as a PDF, which made navigating the results much easier. Where a PDF would have run into hundreds of pages, the webpage allowed individual checks to be collapsed or shown on a single page, and benefited from a side navigation bar to find each individual case.
Ground Investigation Report Templating
I recently built a dynamic report template for Ground Investigations using Typst that generates factual content within the report directly from the tabulated testing data, in an effort to make reporting on ground investigations more streamlined. Moving the report format from Microsoft Word to Typst also took advantage of its much more robust system for references and numbering, which greatly reduces the scope for mistakes and inconsistencies. However the primary purpose is to reduce the turnaround time for reports, by automation of the factual reporting without getting in the way of the intreprative sections.
For the engineering recommendations, I implemented the calculations for estimating the bearing capacities for both shallow and deep foundations in Typst, allowing the calculations to be completed directly within the report. Foundations recommendations can therefore update dynamically based on changes to the interpreted ground model, such as changing the boundaries of a stratum or revising parameters on receipt of additional test results.
Currently the template requires summary of the testing data in spreadsheet format, however given the AGS data format is relatively straightforward to parse I hope that I may have the opportunity at a later stage to implement a simple AGS parser, either directly in Typst or as a pre-processor in another language, to allow the report to be compiled using the AGS data directly.
IT Management
I filled various IT roles alongside my engineering work at Geoman:
- Set up and managed the website and domains for Geoman and Stabilisure:
- Rewrote the ASP.NET based Retaining Wall Calculator applet in PHP to allow it to be embedded in the Wordpress site
- Developed the Paving Design Tool. See Section 6.
- Set up and managed the Google analytics tracking
- Transitioned the company database onto a server computer with a remote access VPN at the start of the Covid pandemic.
- Managed the Microsoft 365 domain services, including accounts, email and Sharepoint.
- Onboarding new staff with PC and laptop setups and tutorials
On leaving I created an internal website for the external IT consultant that was taking over these roles, which documented the information on the existing IT infrastructure, and helped manage the transition by advising on the company’s IT requirements during the handover.
Other Projects
- Paving Design Tool, which is a PHP and Javascript based web application that generates a range of preliminary section drawings based on the input traffic allowance. Section drawings are not prerendered but instead are generated by the web server on demand. To maintain fidelity with traditional drawings it uses AutoCAD’s .pat files to define the hatch patterns.
- Implementation of wind pressure calculations to BS EN 1991-4:2005 and the national annex in Excel, with geolocation feature using Google Maps API and GridInQuestII. This allows the spreadsheet to automatically obtain the British National Grid coordinates from an address or postcode and then look up the basic wind speed for the site.