My main goal for this blog is to share technical articles about topics I encounter through my job, my professional development activities, or when tinkering with personal projects. I hope that the information is useful for others who are exploring similar areas.
I’m currently a Principal Software Engineer at Smoothwall (now part of Family Zone) which makes various software products for protecting children online. I have particular responsibility for some of our client-side software on Windows, macOS, and Chromebook. However, I'm also increasingly involved in our cloud-based components (Azure and Google).
In the past, I’ve worked on optical computing for deep learning at Optalysys, back-end web development for healthcare apps at Advanced Digital Innovation, and virtual reality medical training software at Vertual. Additionally, I’ve had a number of small short-term contracts over the years.
I have a BSc. Hons in Computer Games Technology from the University of Paisley. (It has since re-branded as the University of the West of Scotland.) It was an intense 4 year course which focused heavily on C++ programming. It drew from several other areas too though, including maths, artificial intelligence, and physics. Despite the subject of my degree, I’ve never worked in the mainstream games industry, although I’ve had a few jobs in related areas.
I also have a PhD in computing from the same institution. My research topic was a somewhat niche area of educational technology which has more-or-less disappeared from academic circles now. It involved integrating an immersive virtual world with a web-based learning management system. I learned a lot during my PhD journey, although it ended up being quite an ordeal towards the end! I currently have no intention of going into a conventional academic career in future.
How I got started
I’ve been programming since I was about 5 years old. It was the late 80’s, and my dad (who worked for IBM at the time) bought us a ZX Spectrum +3 to use at home. Admittedly, I mostly played games on it (N.O.M.A.D. was one of my favourites), but I enjoyed occasionally trying to make stuff happen in BASIC. My dad was never a programmer but he had enough technical knowledge to help me get started.
I got a bit more adventurous with programming when I discovered QBasic on our first IBM PC in the 90’s. At one stage, I spent a long time figuring out the maths for a basic perspective projection. Somehow, I got it rendering rudimentary 3d wireframe graphics in real-time. I didn’t turn it into a full game or application. It was simply my very first tech demo!
As a teenager, I eventually moved on to C++, mainly because it was the main language used in games development. I made the mistake of starting with a book about Visual C++ though. As a result, I ended up getting bogged down in some very Microsoft-specific stuff instead of learning the language properly. Nonetheless, I made a few fun little games using MFC for my own amusement.
Later, I went back and started learning C++ properly from the ground-up. I started at university shortly afterwards.