Hello

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 retrain somewhere else. After studying software engineering I found a way to combine what I had just learned with my prior expertise in aeronautical engineering and spent over a decade working in flight simulation, building devices, training products and tools to enable airlines to train pilots more effectively.

I first encountered a Palm Pilot whilst installing a 777 simulator in Denver and I became interested in mobile computing. Eventually I was lured away from flight simulation to work on 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.

Experience

Aerospace

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.

Games

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.

Mobile

I've been writing software for mobile devices for close to a decade and have 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.

I've most recently finished porting Quyre from Windows 10 to iOS.

Web

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.

Projects

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.

Quyre

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.

platforms: UWP & iOS.

Gramophone

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.

platforms: initially targeting UWP (desktop)

Technologies I'd Like To Explore

Xamarin. Tooling & libraries to enable C#-based apps across multiple platforms. C# one of my preferred languages at present and Microsoft's done a remarkable job of shepherding its development.

Python 3.4+ & asyncio. I'm a Python fan. I briefly used Smalltalk to write a spreadsheet application with some unusual bells & whistles for my MSc thesis and in many ways Python feels like a natural inheritor to Smalltalk. Python 3.4 introduced support for asynchronous mechanisms to squeeze more performance out of a single python interpreter and I'd like to take it for a spin.

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.

Contact

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