I've been writing software for over 30 years starting with a Sinclair ZX81 and working my way to modern desktop & mobile devices by way of CNC machines, flight simulators & VAX microcomputers. I've written software in over 20 programming languages on more than a dozen operating systems. Occasionally I've had to use punched tape to do so.

My first career designing & building aircraft engines was cut short when I, along with most of my colleagues, received a cunningly crafted invitation to work somewhere else. After studying software engineering I found a way to combine what I had just learned with my prior expertise in aeronautical engineering. I spent over a decade working in flight simulation, building devices, training products and tools to enable airlines to train pilots more effectively.

I encountered a Palm Pilot whilst installing a 777 simulator in Denver and became interested in the possibilities of mobile computing. Eventually I was lured away from flight simulation to work in mobile games development. Oddly enough, working on codebases that could exceed millions of lines of code on industrial computers with simple, text-based terminals, proved a remarkably useful grounding for the early world of mobile app development.

I currently bounce back & forth between mobile and web development as the need arises.

I'm based in Scotland and when not out enjoying the scenery, and the whiskey, I read, cook, travel and run the odd roleplaying campaign for friends.

My winters are currently being spent learning Norwegian.



A junior member of the Intermediate & Small Engine Design Department.

Developed, deployed & certified Full-Flight and Flight-Training devices for a range of aircraft around the world.

Developed a range of simulation tooling including the auto-generation of system models from vendor databases and page generation tooling for instructor stations which are still in use.

Developed familiarisation training product for flight instructors.

Developed tooling for testing, recording & collating results of simulation QA.


I led a team responsible for the software QA on a cross-platform games SDK that enabled developers to build games for a variety of platforms including desktop & mobile OSes. We developed and rolled out a set of tools for testing, continuous integration and reporting for all the supported platforms in order to ensure that the SDK was ready for clients.


I've been writing software for mobile devices off & on since the late '90s and almost continually for the last decade. I've written written apps for most of the mobile platforms at one time or another.

Where necessary I've used my experience with web technologies to design & build out HTTP-based APIs to service mobile apps. Tuning these APIs to maximise the delivery of data without compromising the power consumption of the apps being serviced.

I'm currently using my mobile development expertise to help one of the world's leading manufacturers of hi-fi & audio equipment improve the apps that their customers use to interact with the brand's equipment. This is work is being implemented with Xamarin & C# in order to target iOS, Android, macOS & Windows.


I've experience with full-stack development for a range of web apps including product training solutions, software configuration & management and code generation software.

Most recently I've been using AngularJS, Python & Flask to construct a system for managing the assembly of reusable software components into a larger software system.


Astraea Software

I believe that software should be like Jeeves, discrete, decorous and efficient. This is where I explore what this means whilst addressing some of my own software needs.


I've an obsession about note taking apps. I'm often struck with a thought or a solution to a problem whilst out & about and I want to capture the information, quickly mark it up and get on. I've tried a variety of popular apps in this field but ultimately they've all disappointed so I wrote my own. Again.

Taking some of the ideas about the tactility of physical notebooks that I first tried out in a previous app, iota, Quyre's initial release is focussed on the foundational aspects of capturing and slicing & dicing the captured content. Subsequent releases will add support for cloud syncing, attachments and so on.

I'm currently revisiting Quyre in my spare time to overhaul the app and bring it into line with the latest iOS capabilities.

platforms: UWP & iOS.


I have an extensive collection of music and whilst talking to other music lovers about the frustration of using apps like Groove (Music) or iTunes, it became clear that managing and interacting with our own music is no longer a priority for most music apps. Simple usage scenarios such as listing and playing all of an artist's works according to their release year aren't even possible in most apps, focused as they are on up-selling subscriptions to streaming services.

Hence, Gramophone, currently in the planning stages, will be a music app written by a music lover for other music lovers.

The name's inspired by a Not the Nine O'Clock News sketch.

Technologies I'd Like To Explore

Elixir a dynamic functional language that leverages the Erlang VM to build distributed, fault-tolerant, software applications. The distributed actor model of Erlang & Elixir feels like a souped up version of an approach I use in mobile development when offloading work from the main thread. I'm intrigued to see how this model plays out when scaled up into larger applications.


If you have a project & you think I can help, feel free to please enable JavaScript me.