Caswell Software Advisory Ltd

A little more about me

2026-03-01T00:00:00.000Z

I’m a software engineer at heart with over three decades of experience developing complex systems across embedded platforms, distributed applications and security-focused software.My work has ranged from embedded development on STM32 microcontrollers and Linux-based ARM systems through to large distributed applications across Linux, Windows and macOS. Over the years I’ve worked extensively in the computer security, information assurance and data protection domains, primarily developing cross-platform systems using C++, C, Qt, OpenSSL and other open-source technologies.

Although I have held team leadership and development management roles, I tend to think of myself in the sense Steve Jobs once described as a “reluctant manager”. I have often taken leadership roles to ensure projects are structured, planned and delivered effectively, while remaining closely involved in the technical aspects of the work.

A large part of my contribution on projects has been architectural and systems-oriented: helping teams manage complexity, defining clear system structures, and ensuring that software remains understandable and maintainable as products evolve. I enjoy bringing clarity to challenging engineering problems and helping teams focus their efforts on the decisions that matter most.

More recently my work has included embedded development using C/C++ on the STM32 family of microcontrollers with FreeRTOS and TouchGFX, alongside integrating modern build, test and CI/CD practices using GitHub. Earlier work included Linux-based embedded systems on ARM SoCs and real-time systems developed using Nucleus and VxWorks for broadcast and telecommunications equipment.

Throughout my career I’ve worked across both commercial and government sectors and have been the lead software engineer on a number of successful projects. My background combines hands-on engineering with system design, requirements development and team leadership, typically working with Agile methodologies and tools such as JIRA, Confluence and UML-based design.

I continue to enjoy the technical craft of software engineering while taking a particular interest in system architecture, managing complexity in long-lived products, and helping engineering teams build software that remains robust and maintainable over time.Recently I’ve also begun writing about topics such as architectural clarity, managing complexity in embedded systems, and the practical realities of building long-lived software products.