Electromechanical engineer and engineering manager. For 15 years I've designed and led hardware where mechanical, electrical and software engineering meet: fusion energy machines, aircraft satellite antennas, robot actuators and offshore lifting equipment.
Most of my projects need all four of these at once, which is where I do my best work.
Electromechanical design
Actuators, bearings, fits and structures, from first calculation to qualified hardware. ANSYS FEA, and testing to DO-160, DNV and Lloyd's Register codes.
Controls and data acquisition
PLC control systems, operator displays and the data pipelines behind them, built to stay up through thousands of experimental shots.
Engineering software
Python tools that replace slow workflows, from inverse dynamics models to monitoring stacks. Built fast with AI coding agents, and verified against hand calculations and independent solvers.
Technical leadership
Technical project management up to CAD$10M and 30 people, and functional management of three teams, from hiring to career development.
A large-scale plasma being compressed inside the LM26 vessel. Image courtesy of General Fusion.
Now, at General Fusion
The control systems behind a fusion machine
Since 2024 I've managed the controls and data acquisition team at General Fusion, with electronics added in 2025, and owned every control and data acquisition system on LM26, its magnetized target fusion demonstration machine. Through the machine's first experimental campaign it fired many thousands of plasma shots and compressed thirteen large-scale magnetized plasmas. The best reached an electron temperature above 1 keV, more than 12 million °C, which General Fusion announced in October 2026 as a world first for practical low-speed compression.
Before that I was technical project manager for the LM26 compressor itself, which implodes a 1.76m solid lithium liner in under 4 milliseconds.
1 keV
world-first electron temperature with practical low-speed compression
13
large-scale plasmas compressed in LM26's first campaign
10
people in the controls, electronics and data acquisition team I lead
CAD$10M
compressor work package I managed, with 30 people across four teams
Projects from 2013 to today, for five employers and on my own. Open any project for the full story, photos and video.
General Fusion, 2024-2026
Owned the control and data acquisition systems of a fusion demonstration machine through its first campaign, which reached a world-first 1 keV.
Functional manager of the controls and data acquisition team from 2024, and of electronics from 2025. Technical project manager for the LM26 controls work package, and owner of every LM26 control and data acquisition system through the machine's first major experimental campaign.
Scope covered the plasma formation control system, the plasma compression system, the operator HMI and all data acquisition.
Took over midway through the deployment of a PLC-based control system that replaced legacy hardware and software.
Many thousands of plasma shots, and thirteen large-scale magnetized plasmas successfully compressed.
The best compression shot, LMC-12, reached a peak electron temperature of 1180 ± 65 eV: 2.75x radial compression heated the electrons more than fivefold. General Fusion announced it as the first fusion machine to pass 1 keV with practical low-speed compression, which takes milliseconds rather than the microseconds or nanoseconds of other methods.
I co-authored both papers on the campaign. The first, on the earlier shots, reports 3x radial compression raising electron temperature more than 3x, and electron density and poloidal magnetic field 10x each.
Led the team of 10 across controls, electronics and data acquisition, taken over in 2024. I proposed new roles and made five staff hires end to end, and separately hired five co-op students over two years.
Made the systems more robust: better control panel build quality, careful selection of networking and other purchased hardware, more reliable vendors, and fault-tolerant software.
Made them easier to see into: more monitoring and logging, and clearer operator displays of system state.
Set up a Jira Service Management desk and project system that tracked more than 400 work requests from shot operations and diagnostics.
A still frame from inside the vessel, showing a large-scale plasma being compressed.
General Fusion, 2023-2024
Technical project manager for an electromagnetic compressor: 30 people and CAD$10M, imploding a 1.76m lithium liner in under 4ms.
Technical project manager for the design and delivery of LM26's electromagnetic plasma compressor, coordinating 30 people across four teams in mechanical and electrical disciplines.
LM26 (Lawson Machine 26) aims for plasma temperatures of 10keV, over 100 million °C, and ultimately the Lawson criterion, to show magnetized target fusion as a commercially viable way to generate electricity.
Total budget under my work package was CAD$10M.
The machine has imploded a 1.76m diameter solid lithium liner in under 4ms.
Design improvements came from my analysis team's lithium liner models, validated against Prototype Zero data.
Images courtesy of General Fusion; cross-section by SimuTech Group and General Fusion.
The LM26 program aims for fusion conditions of over 100 million degrees Celsius, or 10keV.
General Fusion, 2023-2024
A 1:4 scale compressor prototype delivered in 6 months, imploding a 400mm lithium liner in under 1ms across 40 experiments.
Technical project manager for a 1:4 scale prototype of the electromagnetic plasma compressor, built to derisk the compressor design and the shot process.
Team of 20 and a CAD$1M budget; delivered in 6 months.
Imploded a 400mm diameter solid lithium liner in under 1ms, with up to 1MJ of energy per shot.
Liner heated to 150°C by conductive or inductive heating; vessel vacuum as low as 0.9 mTorr.
The implosion had to be as symmetrical as possible, with very little allowance for buckling or jetting of debris.
40 compression experiments showed a lithium liner is feasible for plasma compression.
Analysis team
I also managed the 4-person analysis team modelling the liner's electromagnetic compression in COMSOL and ANSYS LS-DYNA. Published lithium properties didn't cover the temperatures and strain rates involved, so the team built its own database through testing and modelling. The models were validated against Prototype Zero data and fed design improvements into LM26.
Prototype Zero was built to derisk the electromagnetic compression system and shot process.
General Fusion, 2022-2023
Technical project manager for the plasma compressor, and manager of up to 10 mechanical engineers and analysts.
Technical project manager for the design and delivery of the plasma compressor for General Fusion's Fusion Demonstration Plant, and functional manager of mechanical engineering, with up to 10 engineers and analysts from junior to principal level.
Teams covered mechanical design, CFD and FEA simulation, electromagnetic coil design, pulsed power and drafting.
Introduced a Jira-based Agile system to manage tasks across the teams.
The plant was paused in 2023 when General Fusion started the LM26 program.
Image courtesy of General Fusion.
General Fusion, 2026
Architected the system that governs and audits how Claude is used across every Claude surface, and set the policies it enforces.
When General Fusion deployed Claude, Anthropic provided the governance building blocks (managed settings, permission rules, hooks and sandboxing for Claude Code, and a Compliance API for Enterprise plans) but no system to manage them across every Claude surface. I architected that system, and defined the policies it enforces across the organization.
It governs behaviour and audits use through managed settings, policies, hooks, sandboxing and audit logging.
Engaged and directed the contractor BITSUMMIT to build it: as their main contact, I defined what success looks like and guided the implementation.
Led a pilot with a small group of users, whose feedback improved the system, then the rollout to the whole team in 2026.
Built to balance security with productivity and to grow: new policies and hooks are added through a simple interface, and it is the foundation for skills, MCP connectors and other AI tools.
Also hands-on: the system is a fork of BITSUMMIT's open-source claude-code-governance, and I contributed code upstream as a pull request: the hook runtime and deny-rule fixes, secret-detection patterns with throughput benchmarks, and settings portable across macOS, Windows and Linux.
An illustration of AI governance, not a view of the system itself.
General Fusion, 2023-2026
Python, InfluxDB and Grafana pipelines that put live experiment data in front of scientists and operators.
I saw a chance to improve how experiments were monitored, and built multiple end-to-end systems that deliver near real-time experimental data to scientists and machine operators.
Custom Python processing pipelines, InfluxDB storage and Grafana visualization, orchestrated with Docker for horizontal scaling and quick provisioning across environments.
Role-specific dashboards opened up hard-to-reach data and turned it into clear metrics, speeding up decisions.
Their success led to my taking over the controls and data acquisition team in 2024.
From then on I architected, built and maintained the systems that captured realtime controls data and gave shot operations live feedback on machine performance.
Live data from the lab: the temperature of a lithium liner.Backend monitoring of the same data system.
General Fusion, 2026
Architected and led a 30-node wireless network for experimental data. A custom battery-powered temperature node lasts 6 months instead of 2 weeks.
An IoT network capturing experimental data from wireless devices, 30 nodes across 2 Zigbee networks, which I architected and led into service in 2026.
Off-the-shelf temperature and humidity monitors track the building's internal and external environment.
I managed the development of a custom battery-operated temperature node, built by a member of my team: an STM32-based PCB reading thermocouples and RTDs. Battery life went from 2 weeks on the earlier Wi-Fi system to 6 months.
I wrote the software that configures and manages the Zigbee2MQTT deployments across both networks.
Zigbee, Zigbee2MQTT, MQTT, STM32
An illustration of a mesh network, not a view of the deployed system.
General Fusion, 2024-2025
Controls for a 1500kg robot that placed a 2000kg payload in LM26 to ±1mm, from start to working machine in 4 months.
The control system for the Inert Transfer System, a 1500kg mobile robotic positioner used to install a 2000kg payload during the assembly of LM26.
Positioning accuracy ±1mm, repeatability ±0.5mm.
The robot carried its payload, docked with a rail system, then manipulated the payload into place, so the controls had to be safe and adaptable in both mobile and stationary use.
A Raspberry Pi runs the Python command parser, a Flask web server and a serial thread manager, which talks to a Teknic ClearCore motion controller driving ClearPath servo motors.
One USB connection had to serve several threads without corrupting packets; a serial manager class buffers the IO and gives one thread access at a time.
I hand-coded the operator display in HTML, JavaScript and CSS, styled after a classic vacuum fluorescent display, glow and all. It shows axis positions and motor status and faults.
Monitored remotely with Sightglass (then called Remote App Monitor), my own open-source tool, which also became the basis for simple terminal interfaces for motor control.
The operator display, built from scratch in HTML, JavaScript and CSS.Control system architecture.
300°C oven, 2m across and 3m tall
General Fusion, 2026
A modular Beckhoff PLC control system for a 300°C oven, 2m across and 3m tall, that bakes vacuum vessel parts and composites.
Oversaw the in-house design and build of the control system for a custom industrial oven, completed by my controls, electronics and data acquisition team in 2026.
The oven bakes vacuum vessel parts and composites, both in manufacture (curing adhesive) and in service (driving water out of the fibreglass composite vessel).
Beckhoff PLC control with a LabVIEW HMI, aiming for better temperature accuracy, uniformity and ramp rates.
I set the vision of modular hardware and software that future projects can reuse, a major step forward in modularity for the team.
I built its Grafana dashboard for monitoring, troubleshooting and controller tuning. It reads the PLCs over Beckhoff ADS.
Beckhoff PLC, LabVIEW, Grafana, Python, pyads
No photographs yet
Personal project, 2024 and 2026
An open-source statics and dynamics solver on PyPI, rebuilt with Claude in 2 days and verified against hand calculations and independent solvers.
An open-source Python package for rigid-body statics, dynamics and mass properties, published on PyPI. Engineers describe a problem in a short YAML file with real units and solve it from the command line.
Rebuilt in 2 days in September 2026 with Claude as an AI coding agent, from my 2024 statics library into a verified solver with unit-aware input files, a command line and HTML reports; 425 tests.
Verified for engineering use: 23 benchmark models reproduce 129 hand-derived values. Ten were written and solved by a separate AI agent acting as a blind reviewer, which never saw the solver code.
Validated against independent solvers: statics agrees with PyNite finite elements to 10⁻¹² on 200 random frames and trusses, inverse dynamics with MuJoCo to 10⁻¹⁴ on 120 random 3D mechanisms, and mass properties with trimesh to 10⁻¹³. Mistakes deliberately planted in the formulas all made cases fail, so the agreement is real evidence.
The rebuild found and fixed a first-version bug that made any couple or joint moment away from the origin wrong, and replaced a 100-iteration assembly solve with one global equilibrium solve.
Every result is checked against equilibrium, and self-contained HTML reports carry interactive 2D and 3D free-body diagrams, pass/fail checks and provenance.
CI on Linux, macOS and Windows; each release ships its validation reports, and engmech validate re-runs the benchmarks to qualify an installation.
The bundled excavator example: cylinder forces and track reactions of a slewed machine in 3D, each verified against equilibrium.Every result is checked by summing each body's loads and joint forces directly, independently of the solver's matrix.
Request, response and fault reporting between devices
General Fusion, 2025
A proof-of-concept request-response protocol for control and data acquisition devices, built to cut deployment time.
A custom request-response protocol over MQTT to simplify device-to-device connections in control and data acquisition systems.
Proved request-response communication between devices over MQTT is feasible; queued for future deployment.
Designed to reduce deployment time, improve equipment reliability and make system behaviour unambiguous to monitor.
Exception handling aligns event reporting with industry practice, supporting data-driven diagnosis.
Python, MQTT, Prometheus
Software only
Personal project, 2022 and 2026
Batch-solves the kinematics and actuator loads of delta, SCARA, articulated-arm and Stewart platform robots, with the dynamics solved two independent ways.
A general robot simulation environment for batch-solving robot dynamics across large parameter sweeps. It models four kinds of robot: delta robots, SCARA robots, three-axis articulated arms and Stewart platforms. A job file describes the robot, payload and tool path; robosim solves every parameter combination and serves the results in an interactive dashboard and over an HTTP API.
A personal project, begun over the 2022 Christmas break. I first worked on delta robot dynamics at Genesis Robotics, in an inverse dynamics tool that stayed with the company; robosim is my own, independent take on the same problem, built to be general, extensible and fast.
Overhauled over 7 days between 27 September and 12 October 2026 with Claude as an AI coding agent: correctness fixes, type checking and a results store for large sweeps, then three more robot kinds, an HTTP API and a documentation site.
Generalized from delta robots to four robot kinds without disturbing the original: all 10,376 job IDs and 18,300 result summaries of the full delta robot validation sweep stayed bit-identical through the change.
Dynamics checked against physics, not only against earlier results. Each robot's actuator loads are solved two independent ways, Newton-Euler and virtual work, which agree to rounding. Energy-balance tests check that actuator power matches the robot's change in mechanical energy at every instant, and the solutions match closed-form and sympy-derived equations of motion.
The tests were themselves run against deliberately broken code, 15 broken SCARA solvers among them, and every breakage failed at least one test.
Fixed the delta robot's kinematics and dynamics for any geometry: they had been right only for the stock design. New tests cover unequal and unevenly spaced arms, offset centres of gravity and a lowered base, checked against the robot's momentum.
300,000-job sweeps run in 2.5 minutes at 2,000 jobs a second with the main process under 210MB. Before, throughput fell from 550 to 230 jobs a second within 30,000 jobs, and memory grew by 85MB per 1,000 jobs.
A nine-tab Dash dashboard draws each robot as animated shaded solids. Each browser page keeps its own job in its address, so a view can be bookmarked or shared, and a job switch in a 300,000-job sweep takes 35ms.
Results files record the code versions, settings and input files behind every run, and warn when reopened under different code. A Sphinx documentation site reads its reference straight from the code, and CI fails the build on a broken link.
1,788 tests run in CI with ruff, pyright type checking and the documentation build on every pull request.
The dashboard for the Stewart platform example (October 2026): the six legs' linear actuator forces over time and against speed.The delta robot Overview tab (September 2026), showing one job of the 9,375-job validation sweep.First version: RMS and peak actuator torque over payload mass and link ratio, from a parameter sweep.
Personal project, 2024 and 2026
Live browser and terminal dashboards for running programs and devices. Formerly Remote App Monitor, it monitored the ITS robot at General Fusion.
Sightglass, formerly Remote App Monitor, is an open-source Python tool that turns values from a running program, a microcontroller or any HTTP client into live browser or terminal dashboards: a window onto a running system, like the sight glass on a tank.
Built as a personal tool, then put to work at General Fusion: it monitored the ITS mobile robot remotely from the robot's Raspberry Pi, and became the basis for simple terminal interfaces for motor control.
Rebuilt in 1 day in September 2026 with Claude as an AI coding agent, as a source, decoder, monitor and output pipeline. Sources read on background threads and drain everything waiting, so the display no longer falls behind a fast device.
A new-user walkthrough during the rebuild found that values set from the program's own thread showed only 4 of 200 updates; that path is now thread-safe.
Reads serial ports, ZeroMQ, piped output and HTTP. Plain HTML pages go live by marking elements with data-bind, and CSS can turn values into gauges, levels and lamps.
A launch control showcase: one plain HTML page fed live by three separate programs, with its gauges, tanks and lamps drawn by CSS and no JavaScript of its own.
210 tests, including end-to-end runs over real serial, ZeroMQ and WebSocket connections and browser tests in Chromium, in CI on Linux, macOS and Windows.
Built for agentic development: a guide written for AI coding agents, and a gallery of 8 examples that each run with one command.
The launch control demo: a plain HTML page fed live by three separate programs, its gauges, tanks and lamps drawn by CSS.A custom HTML panel kept live by data-bind attributes, laid out like the ITS robot's operator display.
Personal project, 2021 and 2026
A deep-zoom fractal explorer for macOS in C++20 with Metal GPU rendering, rebuilt with Claude as a coding agent in under a week.
An interactive Mandelbrot set explorer in C++20 and Objective-C++, with a Metal GPU backend and a multi-threaded OpenMP CPU fallback.
Rebuilt in under a week in April 2026, working with Claude as an AI coding agent, turning a 2021 CPU renderer into a GPU explorer.
Zooms past 1e30 using a double-double precision reference orbit and perturbation theory, far beyond the limits of standard double precision.
Detects perturbation glitches automatically and retries with a new reference point.
Histogram-equalized smooth colouring with a live gradient editor, and 40 preset views in TOML.
A project CLAUDE.md gives the agent the architecture, the numerical-precision rules it must not break and the coding conventions.
A deep zoom rendered on the Metal GPU backend, with the viewer's preset, gradient and histogram controls.
Infrastructure as validated records
Personal project, 2026
A personal homelab run the way I'd want production infrastructure run: described in version-controlled records, checked against the live system, and changed only through CI-gated pull requests.
A personal homelab, described entirely in version-controlled records, verified against what actually runs, and changed only through reviewed pull requests.
Infrastructure as records: each part of the system is a structured record with exactly one home, and a validator checks every record against a schema and the records against each other.
One deployment procedure for every service, records first, merging only when the checks pass.
Drift detection: an automated check compares the records with the live system, and treats anything it cannot read as a failure, never as a match.
Documentation generated from the records in CI, with a strict build that fails on a broken link or an invalid record.
Cloud resources managed as infrastructure as code, with guardrails and audit logging.
Built with Claude Code as an AI coding agent, through pull requests gated by required CI checks, with secrets kept out of the agent's context.
Python, Git, CI, infrastructure as code, Claude Code
Infrastructure only
Personal project, 2026
A high-throughput InfluxDB 2 and 3 client on PyPI, built with Claude in a day: 5-50x the official clients' write throughput, and validation that stops bad data before it is sent.
An open-source Python library that writes large volumes of time-series data to InfluxDB 2 or InfluxDB 3 as fast as the server accepts them, stopping bad data before it is sent. Published on PyPI.
Built in 1 day in October 2026 with Claude as an AI coding agent, from a requirements brief to release 0.1.0 on PyPI.
Writing 1 million validated points: 272,000 points/s on InfluxDB 3 Core against 5,000 for the official client, and 440,000 against 93,000 on InfluxDB 2. The key was keeping 16 large requests in flight, since InfluxDB 3 acknowledges a write only when its write-ahead log flushes.
Writes scale across cores on free-threaded Python 3.14t. Eight threads had been slower than one, at 198,000 points/s; giving each writing thread its own buffer lane took them to 1.61 million.
Testing against real servers found ways both lose data silently, including lines that run on into the next. sluicebox rejects those at write(), and one bad line no longer fails a whole batch: only the bad lines fail, each back to its own caller.
No silent data loss: a failed batch reaches the caller or a dead-letter handler, transient failures retry for up to 5 minutes, and tests prove nothing is duplicated when a response is lost after the server stored the batch.
638 tests, 111 of them against live InfluxDB 2 and 3 servers in Docker, run through network fault injection, TLS, an nginx body limit and an HTTP proxy. CI runs strict mypy and the tests on Python 3.11 to 3.14 and free-threaded 3.14t.
Reviewed as a real integration: three AI reviewer agents who had never seen the library each built an application from the documentation alone, and an adversarial review reported 14 bugs. Every finding was reproduced, fixed and given a regression test.
How data flows through sluicebox: it validates, filters, buffers, batches and retries before writing to InfluxDB 3 Core or InfluxDB 2. Bad data is rejected at write() and can go to a dead-letter handler.
Virtual work, whole-robot dynamics
Genesis Robotics, 2020-2022
An inverse dynamics tool for sizing a delta robot's motors that replaced FEA workflows and saved over CAD$200K in engineering time.
A Python inverse dynamics tool I developed at Genesis Robotics to dig into the motor requirements of a delta robot's actuators.
Used the Virtual Work Principle to model the parallel, closed-chain delta robot as one system instead of isolated subsystems, based on Tsai's Robot Analysis (1999).
Computed actuator torque and load requirements for the primary and theta axes, through parametric studies of joint angles and payload.
Replaced complex ANSYS FEA workflows and ran several orders of magnitude faster, saving more than CAD$200K in engineer hours and speeding up product architecture decisions.
The tool and its code stayed at Genesis Robotics.
Python
Software only
Genesis Robotics, 2021
Fits, bearings and lubrication for a compact direct-drive actuator with industry-leading torque density.
Mechanical design for a compact direct-drive rotary actuator with industry-leading torque density, intended for medium-volume production.
Specified every fit for the frame, rotor and stator, plus bearing selection, lubrication and bearing fits.
Used FEA, testing and data analysis to set the fits, accounting for thermal expansion, loading and variation from finishing processes.
Designed the stator press fit: a laminated steel stator in an aluminium frame, balancing slip resistance against stress and thermal expansion. Verified against ANSYS, and the prototype measured within spec on a CMM without post-assembly grinding.
Found a grounding weakness between motor housing and earth, traced affected units, and wrote the compliance report against UL 1004-1, IEC 60034-1 and CSA C22.2 No. 100-14.
Image courtesy of Genesis Robotics.
Genesis Robotics, 2021
A ball bearing design tool built on SKF and Schaeffler methods and checked against SKF's own software.
As bearing subject matter expert at Genesis Robotics, I built a tool to help engineers select deep groove ball bearings, design the shaft and housing, and choose lubrication.
Formulae from several manufacturers, including SKF and Schaeffler, and derived from first principles where none existed.
Verified against case studies run in SKF Galaxy, SKF's proprietary software, with close agreement.
Covers tolerance-based fit analysis at MMC, LMC and 3-sigma, thermal effects on fits and clearance, and oscillating duty cycles.
Part of a Bearing Best Practices series I wrote and presented for the motor team, covering ISO 281 and ISO/TS 16281, backed by an 80-hour literature survey on bearings in oscillating applications.
Inputs: bearing pair, materials, lubrication and multiple structural and thermal load cases.Outputs: fits, stresses and internal clearance, with limit checks.
Cobham Aerospace Communications, 2018-2020
Mechanical lead on one of the world's lightest satellite terminals: 1300g against a 1500g target.
Lead mechanical engineer for a Thuraya L-band satellite terminal for the Boeing ScanEagle UAV, giving it real-time connectivity beyond line of sight.
An aggressive mass target of under 1500g, for low-volume manufacture, and installable without modifying the aircraft.
First prototype on schedule, under target cost and within 10% of target mass. The final design weighed 1300g, and 10 research units went to the customer.
Worked closely with the lead RF engineer on geometry and materials to keep antenna efficiency; the fairing cooled, grounded and protected the antenna in one part.
FEA to cut part mass, with additive manufacturing to prove form and function quickly.
Led the DFMEA, which caught a fastener thread risk and moved the design to a coarse imperial thread that resists loosening under vibration.
Built a 1:1 composite model of the UAV for antenna testing, and an environmental test jig mimicking the fuselage's dielectric properties for desert testing.
Airshow photo courtesy of SR Technologies Inc.
The 1:1 UAV model with the terminal, in the anechoic chamber.FEA cut the part mass, and additive manufacturing validated each iteration's form and function.A fuselage section from a crashed ScanEagle was the base for the model; the rest was CNC-machined foam with a fibreglass skin.I supervised the build and did most of the hands-on work myself.The environmental test jig mimicked the fuselage's dielectric properties.On display at the 2019 Dubai Airshow. Photo courtesy of SR Technologies Inc.
Cobham Aerospace Communications, 2016-2018
Mechanical design and testing of HELGA, the phased-array antenna in production in the Aviator 200S, from radome impact analysis to DO-160 qualification.
The Aviator S series is Cobham's family of Inmarsat SwiftBroadband satcom systems for commercial airliners, carrying ACARS messages, IP data and voice.
HELGA is a compact phased-array antenna with the diplexer, low-noise amplifier and high-power amplifier built in, cutting the satcom units on the aircraft from four to two.
I was responsible for its mechanical design and testing: R&D on the housing, mounting and thermal management; 3D modelling of the radome and ANSYS LS-DYNA analysis of hailstone and bird-strike damage to it; and vibration and thermal testing.
Across the Aviator S series testing, I defined the test plans, guided by the DO-160 criteria, and wrote the test reports.
HELGA is in production in the Aviator 200S and has been delivered to multiple customers.
For the COMAC C919 airliner, I ran DO-160 vibration testing of the Aviator 700S HGA-7001 and IGA-5001 antennas, using ANSYS vibration simulations to design the test expander heads.
HELGA under DO-160 qualification vibration testing, on the expander head I designed and built.
Cobham Aerospace Communications, 2017
A 16kg aluminium, foam and carbon fibre fixture that spread a 0.35m shaker across a 1.0 × 0.4m test footprint. Designed and built by hand.
An expander head for the HELGA antenna's DO-160 qualification test: light, and as stiff as possible through a 10-2000Hz sweep.
The shaker footprint (0.35 × 0.35m) was far smaller than the product's (1.0 × 0.4m).
Three concepts, welded aluminium, machined billet and composite, were compared by modal analysis in ANSYS.
The final design is a composite sandwich: foam core, aluminium skin and carbon fibre weave, 1000 × 400 × 300mm and 16kg.
First resonance measured at 780Hz at the tip. It was conditionally accepted, and qualification completed successfully.
I built the bonded and riveted assembly myself from CNC-profiled parts and aluminium sections.
An expander head gives a light but stiff platform for vibration testing.A new airliner antenna in qualification testing on the expander head.CNC-cut interlocking slots made the main structure easier to assemble.Adhesive was the main bonding method, and each step needed careful planning.
Cobham Aerospace Communications, 2016 and 2018
Two positioners that place a 50kg antenna to within 0.1°, designed, wired and built in-house on a USD$8,000 materials budget each.
Lead engineer, mechanical and electrical, for two complete positioner systems that repeatably place a 50kg payload inside an anechoic chamber.
Owned the full lifecycle: requirements with the antenna engineers, concept design with FEA, procurement, assembly, commissioning, testing and validation.
Accuracy of 0.1° or better, using Bosch Rexroth motors, drives and controller, on a materials budget of USD$8,000 per positioner.
Built both myself, including all the electrical work to building and safety codes.
Positioner A (S-band, 2016) replaced a system running on discontinued control boards, and showed the group that Cape Town could build advanced test equipment in-house for a fraction of the outsourcing cost.
Positioner B (L-band, 2018) used a carbon-reinforced belt for a stiffer drive with less backlash, allowing higher gain. Measurements ran twice as fast.
Rotating a dish antenna in the chamber.Moving an antenna payload.The modular design adapts to other chambers with minor changes.The control cabinet, built and wired for the installation.
Cobham Aerospace Communications, 2016
A gantry and a modified caulking gun that dispense epoxy patterns onto antenna radomes, run from a Raspberry Pi console.
A prototype CNC applicator for Cobham's antenna production line, laying epoxy adhesive in a complex pattern onto fibreglass radomes.
Retrofitted a 3-axis gantry with an electric caulking gun, modified with a stepper motor and microcontroller so it could be driven over USB.
Gantry motion runs on a microcontroller with the GRBL g-code parser.
A Raspberry Pi console streams the g-code, provides the operator interface and triggers the applicator.
The Raspberry Pi console.
Cobham Aerospace Communications, 2016
An Arduino and stepper motor jig for a 518,400-revolution fatigue test of an optical encoder.
A quick-turnaround jig for fatigue testing an optical encoder.
An Arduino drives a stepper motor controller through a set number of revolutions, then pauses for an operator to inspect and measure the encoder before resetting.
An LCD shows test progress through the 518,400-revolution program.
IHC Marine and Mineral Projects, 2013
Drilling mast design for a sampler working below 1500m. A decade later a prototype based on the concept was built as Blue Field Geoservices' SWORD.
Part of the team developing a seabed sampling machine with a sonic drilling head, for depths beyond 1500m.
Designed the mast that traverses and plunges the sonic head as the machine drills, lifting the head compactly with a large chain tensioned by a hydraulic cylinder.
Built the drill-time model (launch, descent, drilling, ascent, recovery and retooling at various depths) that proved essential for judging commercial feasibility.
Over a decade later a prototype based on the concept was built as SWORD, the Sonic Wireline Operated Remote Drill.
Prototype photo courtesy of Blue Field Geoservices.
My 2013 concept rendering.The SWORD prototype being deployed.
Denith Engineering, 2013
A hydraulic A-frame with three winches for a saturation diving vessel, from concept to installation on time and within CAD$300K.
Design and supply of a workstation supporting divers working from a saturation diving vessel: a hydraulic A-frame with three winches.
Took the design from concept to detail, then managed manufacture, assembly and factory acceptance testing, and supervised installation on the vessel.
Built to the DNV 2.22 lifting appliance code, delivered on time within a CAD$300K budget.
Failure analysis of bearings, A-frame and cylinder clevises, verified with FEA; wrote the manufacturing drawings and QC procedures.
The boom lowers for stowage, and the whole workstation comes off the deck by removing a few bolts.
Designed a dedicated winch test tower for acceptance testing.
Installed on the vessel, with Table Mountain behind.Inspecting the partially assembled workstation.Factory acceptance testing.
Denith Engineering, 2013
A spring-applied band brake for a diving bell winch, designed to Lloyd's Register and DNV man-riding rules.
The secondary braking system for a man-riding diving bell winch for the offshore industry.
Braking force from a spring-release hydraulic cylinder clamping a band brake.
Designed to the Lloyd's Register Code for Lifting Appliances in the Marine Environment, with the extra safety requirements that man-riding brings under LAME and DNV.
Wrote the winch calculation report, QC and acceptance test records, and produced the rendering.
Denith Engineering, 2014
Project manager for the re-rating load test of an oil platform davit, witnessed by Lloyd's Register.
A global oil and gas company needed to re-rate the davit it uses to replace flare tips on an oil platform.
Responsible for project management, all documentation and certification, the test infrastructure, and planning and supervising the test.
The davit packs into a container for transport, so assembly followed a complex procedure.
Managed inventory, pre- and post-test NDT, design and fabrication of the load test equipment, rigging recertification and assembly.
Witnessed by the client and an inspector from Lloyd's Register.
Denith Engineering, 2014
A trailer-deployed capsule and redundant winch system for bringing trapped miners up through a drilled shaft.
Conceptual design of a mobile rescue system that a mine can deploy at many rescue sites.
Developed the rescue capsule and its custom trailer for rapid deployment.
A second trailer carries redundant winches to lower the capsule down a pre-drilled shaft to stranded miners.
The capsule has an occupant harness, oxygen supply and radio to the surface, plus a lever-operated escape hatch in case it gets stuck.
Few comparable systems exist, so it needed extensive concept development, with conservative safety factors throughout.
A trailer provided a portable, redundant winching system.The capsule travelled on its own trailer.
Denith Engineering, 2014
A-frame steelwork for a heave-compensated launch and recovery system, and a fairlead I fabricated myself.
A large launch and recovery system for a vessel, delivered on a tight lead time.
An unusual build: instead of a spooling gear, the whole active-heave-compensated winch drum moves on sliders.
Designed the A-frame structural steelwork and sized its hydraulic cylinders.
Fabricated the large fairlead roller assembly myself during a boilermaker apprenticeship, taken to learn first-hand what it takes to build my own designs.
Experience
From junior engineer on subsea mining equipment to senior engineering manager in fusion energy.
Senior Engineering Manager
General Fusion, Vancouver. Engineering Manager until promoted in October 2023.
Technical project manager for the LM26 compressor (CAD$10M, 30 people), then for the LM26 controls work package.
Functional manager of three teams in turn: mechanical engineering, analysis, and controls, electronics and data acquisition. 30 direct reports in total.
Led the 10-person controls, electronics and data acquisition team, taken over in 2024, through LM26's first experimental campaign, which reached a world-first electron temperature above 1 keV. Added new roles I proposed and hired for.
Ran the full hiring pipeline, performance reviews and career development, including a P2 to P3 promotion.
Architected the organization-wide system for governing Claude across every Claude surface, and defined the policies it enforces.
Senior Electromechanical Design Engineer
Genesis Robotics (now Genesis Motion Solutions), Langley, BC
Mechanical lead in a 15-person motor development team, delivering validated direct-drive actuator units to commercial customers.
Bearing subject matter expert, and technical authority for a nacelle-mounted actuator for a delta robot.
Wrote a Python pipeline that turned 4.5 million test data points into charts in under 30 seconds, a job that would have taken hours in Excel.
Mentored 5 engineers and designers.
Senior Mechanical Engineer
Cobham Aerospace Communications, Cape Town
Mechanical design and testing of HELGA, the antenna now in production in the Aviator 200S, and mechanical lead on the ScanEagle UAV terminal.
Defined DO-160 test plans and wrote the test reports for the Aviator S series, under an AS9100 quality management system.
Worked closely with antenna engineers so mechanical designs avoided RF interference, in some cases improving antenna performance.
Designed and built test equipment, and led upgraded pin diode sorting machines to ±0.2mm at 500 diodes an hour.
Elected health and safety representative for 40 people.
Career break
Cycled 3,500km unsupported through Thailand, Laos, Vietnam and Cambodia, rode a motorbike across South Africa's interior, and spent a month rock climbing in the Cederberg.
Mechanical Engineer and Project Manager
Denith Engineering, Cape Town
Designed and delivered offshore lifting and diving equipment to DNV and Lloyd's Register codes.
Project managed factory acceptance and load testing, including a Lloyd's Register-witnessed davit re-rating, and designed a pair of 21t concrete test weights for a 30t heave-compensated winch.
Junior Mechanical Engineer
IHC Marine and Mineral Projects, Cape Town
Subsea mining and offshore equipment: a deep-sea sampler's drilling mast, transit stooling for a 1500t J-Lay tower, and a deep-sea mining storage winch.
Managed the Autodesk Vault of 2,700 parts.
Professional Engineer
Engineers and Geoscientists British Columbia, licence 55784, since 2022.
M.Sc. and B.Sc. (Hons), University of Cape Town
M.Sc. Mechanical Engineering, 2013: a myoelectrically triggered orthotic for stroke rehabilitation. B.Sc. Electro-Mechanical Engineering, 2007: SAIMechE award for best undergraduate thesis, and the Dean's Merit List three times.
Continuing education
336+ hours since 2020, including Modern Robotics (Northwestern), Robotics (Penn), Machine Learning (Stanford) and bearing technology and failure analysis.
Open source
Libraries and tools I've written for engineering work, published on GitHub.
Building blocks for MQTT sensor networks, with Prometheus throughput metrics.
About me
I write a lot of code, not as a side hobby but as a core part of how I do hardware engineering: custom tools, automation and data pipelines that remove manual work and speed up development.
My background is hands-on. I've built, debugged and repaired machinery across several disciplines, and I once took a boilermaker apprenticeship to see my own drawings become steel. I understand hardware because I've had grease under my fingernails.
I think in systems. Engineering is about trade-offs, and good decisions come from stepping back to understand the whole picture before committing to a solution.
Get in touch
I'm glad to hear about engineering roles, hard problems where mechanical, electrical and software engineering meet, or anything on this site. LinkedIn is the best way to reach me.