Senior Software Engineer at Teledyne (2025-09 – 2026-05)
Linux-based software for satellite modems supporting dual-transmit and multi-demodulator configurations. Joined a team of three and led a modernisation of the development practice in parallel with feature delivery.
- Rearchitected the core modem control process in C++ for dual-transmit and multi-demodulator product lines, delivering MVP builds of both to test.
- Consolidated a fragmented codebase of 50+ submodules (nested up to four levels deep) into a single monorepo.
- Introduced Jenkins CI for automated builds and migrated the build system from Bash scripts to Make.
- Standardised the development environment across the team with Docker devcontainers.
- Maintained a Linux PCI network driver for an FPGA-based modem interface, extending it to support dual ACM metadata paths.
Technical Specialist at ETAS (Bosch) (2023-02 – 2025-08)
Automotive SDK for autonomous vehicle data processing. Delivered new features, cross-language bindings and performance tooling in C++ and Python across a ~20-team organisation.
- Architected zero-copy Python bindings for a high-throughput C++ deserialisation library, validated against 100GB+ production datasets across hundreds of thousands of iterations. Solved object lifetime management across the C++/Python boundary to eliminate premature deallocation.
- Developed C++ tooling for the deserialisation framework and drove its integration into two further business units.
- Owned CI triage for data analysis team, first to diagnose failures, route tickets and fix issues directly.
- Cleared static analysis (QAC) defects and code coverage gaps to meet compliance targets.
- Contributed to a process management software task force in C++, including unit and integration testing.
Lead Software Engineer at Tevva (2021-09 – 2023-02)
Architectural ownership of the telemetry module and platform code for electric trucks on a dual-S32K MCU setup with UART cross-comms for self-testing. Line managed 4 engineers across platform and 3 remote engineers for telemetry.
- Owned architecture of the telemetry module using a hard real-time cooperative scheduler (1ms tick, tasks with nanosecond budgets), delivering with a team of 3 remote engineers.
- Navigated export control constraints for a remote team in Egypt, setting up dedicated development station.
- Architected secure boot for updating ARM/S32K over UDS: completed a Coursera cryptography course to build the domain knowledge, then authored the specification, wrote the key-management and hardware drivers.
- Designed a signed binary factory provisioning flow using a programmer that only accepts signed/encrypted payloads, protecting signing keys from exposure at contract manufacturers.
- Built a replay bench feeding captured truck CAN data through GSM into RabbitMQ, supporting validation for the remote and web teams.
- Led a team of 4 engineers on the driver and scheduler layer, setting API contracts and functionality, then reviewing and signing off implementation.
- Profiled scheduler code to nanoseconds using hardware timers and measuring GPIO output with a logic analyser.
- Owned VectorCast unit testing tool rollout, choosing this over building an in-house solution, weighing delivery timeline against 61508 tool qualification status. Worked with Vector to qualify it for our use.
- Built a CAN/J1939 diagnostic tool in Python and C for reading and writing C variables on target over CAN.
Software Engineer at Tevva (2019-02 – 2021-08)
- Ported a PIC telemetry codebase to our ARM platform, involving reverse engineering and a partial rewrite.
- Designed bare metal drivers from scratch, using the S32K manual, meeting MISRA C and zero allocation rules.
- Identified and optimised the library code as the primary performance bottleneck; validated improvements at the assembly level against worst-case CPU cycle counts.
- Wrote an ARM assembly self-test library implementing hardware fault model coverage (stuck-at, address decoder, coupling faults) for core registers, flags, ALU, FPU.
- Built a bootloader accepting SREC files over UART and flashing to the device.
- Set up compilers and source control (Git) for the project.
Software Engineer at Rockwell Automation (2013-09 – 2018-10)
Maintained and extended Safety PLC firmware in C under MISRA C. Wrote dynamic unit tests for changes and kept IEC 61508 design documentation certification ready.
- Implemented a proprietary peer-to-peer protocol for the Safety PLC in C.
- Owned the ODVA certification for the Safety PLC.
- Built a unit test framework and automated its execution via Jenkins (Python and PHP).
- Wrote a Python GUI tool to support code reviews, a Python library for communicating with company products.
- Developed a C++ tool for parsing network packet captures.
Design Technician & Electronic Engineering Apprenticeship at Rockwell Automation (2008-09 – 2013-09)
- Hardware design, test harness development, validation testing and IEC 61508 certification documentation across assembly, engineering and R&D.